пятница, 25 октября 2024 г.

Практическое занятие: усекновение хвостов

На занятии обсуждались возникшие вопросы по прошлым практических занятиям и некоторые из тех, у кого по ним были хвосты, их исправляли (и даже кое-кто справился нормально).

От остальных отчеты по практическим заданиям ожидаются быть присланными по электронной почте. Код и генерируемые иллюстрации физических процессов должны быть подробно откомментированы, чтобы было ясно, что происходит (по некоторым присланным я ответил на письма, какие уточнения нужны). 

Присылать код, слизанный дословно у кого-либо из одногруппников - идея бессмысленная и ни к чему не приведет. 


пятница, 18 октября 2024 г.

Полиномиальная регрессия: дисперсия параметров и доверительный интервал

 Верить в наше время нельзя никому. Порой даже самому себе. Мне - можно.

Из к/ф "Семнадцать мгновений весны"

На данном занятии будут рассматриваться ситуация реальных измерений, данные которых всегда имеют некоторый разброс. Основные современные требования к характеризации данных изложены в стандарте

  • JCGM 100:2008 Evaluation of measurement data — Guide to the expression of uncertainty in measurement [ссылка]

 Более популярное изложение с примерами:

  • Possolo A. Simple Guide for Evaluating and Expressing the Uncertainty of NIST Measurement Results. NIST, 2015 [ссылка]
Общее изложение простым языком соответствующих статистических концепций - можно посмотреть в учебнике

  • Motulsky H. Intuitive Biostatistics. A Nonmathematical Guide to Statistical Thinking. Oxford University Press, 2017.
Практический пример, как это делается в простейшем случае в MATLAB/GNU Octave (исполнимая онлайн-версия - по ссылке):


Задание: используя данные обработки эксперимента Шера-Монтролла, полученные на прошлом занятии, оценить интервалы параметров, соответствующих степенной динамике релаксации, и построить соответствующие графики.

пятница, 11 октября 2024 г.

Практическое занятие: исследование данных эксперимента Шера-Монтролла

 ...какую-то загогулину, которая в этом храме науки именуется кривой.

    Из юморески А.И. Шальникова "Тут тебе не заседание поел и до свидания, семинар как таковой"

Задание: взять график, представленный на Fig. 5 в статье

и сделать следующее:
  • выбрать данные, соответствующие одному из экспериментов (то есть при конкретном заданном напряжении - соответствующие маркеры одного типа обозначены на легенде графика) и получить их численные значения при помощи WebPlotDigitizer (при калибровке осей принять во внимание, что график - в логарифмических координатах);
  • построить графики соответствующих данных, используя те же маркеры и обозначения по осям (спецификацию конкретных данных указать в заголовке графика): один график в логарифмических координатах (чтобы визуально сравнить его схожесть со статейным), второй - в обычных (чтобы был наглядно виден характер зависимости релаксации от обычного времени);
  • определить подходящие интервалы времени на начальном и конечном участках и проделать на них фит, соответствующий зависимости I/I(𝝉)~t-𝞪;; найти численные значения обоих степенных индексов;
  • построить полученные фитующие функции, наложив их на экспериментальный график (в обоих вариантах координат) и, указав найденные степенные индексы в легенде графика, убедиться, что модельная гладкая кривая действительно воспроизводит экспериментальные точки (если визуальное не воспроизводит - значит нужно уточнение интервала фита).


пятница, 4 октября 2024 г.

Выборка данных, обнаруженных в графическом виде и их интерполяция: на примере аномальной релаксации тока в фотокопире

Генри Морган встретил гигантских кальмаров в количестве равном Пи,
Что при его профессии не должно вызывать вопросов,
Но дело было на перешейке, практически в голой степи,
А еще у них внизу крутились такие большие колеса…

        Из стихотворения Елены Михайлик

На одном из предыдущих занятий была рассмотрена релаксация тока для заряженного конденсатора, замкнутого через сопротивление. В этом случае ток затухает как экспоненциальная функция от времени, что можно наглядно пронаблюдать, перестроив соответствующую зависимость в полулогарифмических координатах. 

Однако, существуют и более нетривиальные случаи - один из наиболее замечательных, мотивировавших бурное развитие теории аномальной диффузии и приложений дробных производных, был обнаружен экспериментально и опубликован в статье 

Харви Шер (который работал как раз в исследовательском центре компании Xerox) и Эллиот Монтролл (из Рочестерском университетe) в эксперименте с фоточувствительными элементами копировального аппарата обнаружили следующее:



Чтобы убедиться, что экспериментальные точки следуют степенному закону, а в статье - только график, а не таблица, эти данные следует извлечь из графика, для чего можно воспользоваться программой WebPlotDigitizer:



С добытыми таким образом численными данными уже можно работать в MATLAB/GNU Octave (код, выполнимый онлайн, - по ссылке)

пятница, 27 сентября 2024 г.

Интерполяция данных кривыми и их дифференцирование


Жил на свете человек,
Скрюченные ножки,
И гулял он целый век
По скрюченной дорожке.

   К.И. Чуковский, "Скрюченная песня"

 Занятие в аудитории было посвящено практичеcкому выполениею построения графиков, соотвествующих току у его производной в системе последовательно соединенных катушки и резистора (задание - воспроизвести соответствующие графики из учебника Зельдовича-Яглома). 

По поводу возникшего вопроса как численно продифферецировать функцию, заданную массивом данных - см. описание ниже:




пятница, 20 сентября 2024 г.

Оформление результатов моделирования: рисунки и сохранение в html

Сегодня я злой, придирчивый, детки, — хмурясь и опуская брови, сказал Репин. — Ко мне сегодня без лошадки не подходи. Надо уметь нарисовать лошадку — вот в чем суть, господа художники! Сумеете нарисовать лошадку — мигом подобрею.

    Цитата из воспоминаний о И.Е. Репине, приведенная в эссе В. Березина "Лошадь Репина" ("Новый мир", №11, 2022).


 1. Специальное художественное оформление и сохранение графиков

Могут возникать ситуации, когда более наглядно будет не использовать разметку осей по умолчанию, а специально указать положение меток и то, что на них должно быть указано, допустим, какие либо текстовые обозначения.  В качестве примера рассмотрим, как может быть сформирован при помощи MATLAB/Octave график (панель (А) на рисунке ниже) с такой же разметкой, как на рис. 13.2.3 в учебнике Зельдовича-Яглома (панель (В) на рисунке ниже):


В этом случае положение четырех меток по оси абсцисс указано свойством 'XTick' объекта - текущих осей (gca), а соответствующие им подписи - свойством объекта 'XTickLabel' в виде массива ячеек (cell, т.е. в фигурных скобках), содержащих текстовые подписи, т.е. 

set(gca,'XTick',[0,R*C,2*R*C,3*R*C],...

    'XTickLabel',{'0','RC','2RC','3RC'},...

    'YTick',E0,'YTickLabel',{'E_0'});

Здесь троеточия в конце строки позволяют переносить длинную последовательность команд на новую строку. С осью ординат - аналогично, только не 'XTick' и 'XTickLabel', а 'YTick' и 'YTickLabel'. 

Помимо этого, для подписей на осях (а также в легенде или вообще тексте, помещённом на график) могут потребоваться формы букв и символов, отсутствующие по умолчанию, формулы и т.п. В этом случае следует воспользоваться нотацией LaTeX (см. для справки 'Математические формулы в LaTeX'), заключив надпись в символы формулы $ и указав свойство 'Interpreter', 'Latex' - например, для оси ординат на рисунке (А) выше

ylabel('$\varphi,~\mathrm{V}$','Interpreter','Latex')

Здесь ~ задает фиксированный пробел, а \mathrm{} делает текст внутри прямым шрифтом (что есть стандарт для единиц измерений, в отличие от переменных в формулах).

Кроме того, для создания прилично выглядящих графиков для публикаций их надо сохранять в виде графических файлов на диск. Процедура по умолчанию (Save as) в меню существенно зависит от разрешения монитора и размера развернутого окна (Figure). Поэтому надежнее распечатывать графики в командном режиме с явным указанием размера картинки (например, с сантиметрах). Это делается указанием свойств текущего графического окна (gcf), например, как

set(gcf,'PaperUnits','centimeters','PaperPosition',[0 0 20 5],'PaperSize',[20 5])

Сама команда распечатки

print('FigRC2','-dpng','-r150')

Здесь  'FigRC2' - имя графического файла для сохранения (расширение будет подставлено автоматически), буквосочетание после '-d' - тип файла ('-dpng' - растровый рисунок в PNG, '-dpdf' - векторный график в pdf, такой вариант может быть предпочтительным когда график содержит только линии - векторный формат их прорисовывает именно гладкими линиями, не растеризирует надписи, сохраняя буквы более гладкими, и т.п.), число после -r - разрешение dpi (требования к качественно выглядящим типографским графикам могут содержать явное указание, например 300dpi, то есть это -r300). 

Программный код полностью - по ссылке. Там также показано, как включить в фигуру картинку из графического файла - считать ее командой imread и построить сформированную таким образом RGB матрицу как изображение без осей координат (imshow).

2. Выгрузка комментированного кода результатов его выполнения в виде документа html

Обе программы, MATLAB и GNU Octave, позволяют сохранять программный код в виде веб-страницы с текстом, формулами, заголовками, комментирующими расчетный код, см. например,  презентацию материалов второго занятия.

Основная конструкция оформления исходного кода для этой цели - разделять блоки комментирующего текста и исполнимого кода двойным знаком коментария %%, см. оформление, приводящее к упомянутой презентации, по ссылке на исходный m-файл. В текстовых разделах можно употреблять и более структурирующую их разметку - перечень соответствующих команд см. на сайтах разделов помощи MATLAB или Octave.

После этого программу надо не просто выполнить (run), а опубликовать (publish), создастся папка html, которая будет содержать сформированный документ и графики к нему (если при оформлении вставлялись внешние картинки, то их надо скопировать туда же). В MATLAB это можно сделать прямо из среды кнопкой - на вкладке Publish (и там же есть настройки), в GNU Octave это делается из командной строки командой publish('имя_файла.m') - сам файл с кодом, называющийся имя_файла.m при этом в редакторе можно и не открывать. 

Небольшая тонкость, касающаяся процесса в Octave: по умолчанию программы, проводящие разметку в процессе, рассчитаны на кодировку UTF-8. Поэтому, если m-файл создан в Windows в кодировке CP1251 (или на Mac'e в его кодировке), то при попытке запустить publish с таким файлом вылезет ошибка. Поэтому файл надо сконвертировать в кодировку UTF-8 (например, при помощи Notepad++) и использовать в аргументе publish уже этот сконвертированный вариант.

Кроме того, в стилевом файле по умолчанию имя заголовка подставляется по-английски, самый просто способ исправить - открыть любым блокнотом сгенерированный html-файл, найти там строку <h2>Contents</h2> и заменить ее на <h2>Содержание</h2>. 

И вообще в целом, этот файл - стандартный простой html со встроенной таблицей стилей (css), которую можно настроить, открыв и скорректировав файл как текстовый. Например, Octave, в отличие от MATLAB'а по умолчанию печатает код в рамке на белом фоне (MATLAB - на светло-сером). Использовать светло-серый фон можно добавив background-color: LightGray в стиля участков кода, т.е. сделав

pre.oct-code {

  border: 1px solid Grey;

  padding: 5px;

  background-color: LightGray

И так с любым форматированием - это уже делается стандартными методами, можно вручную в блокноте, можно в Word'e или его аналогах и т.п. Сгенерированный html файл можно также конвертировать в другие удобные форматы, используя, например, свободную программу Pandoc.

четверг, 12 сентября 2024 г.

Основы работы в MATLAB/Octave на примере простых электрических цепей

 Правильный котенок при попытке его утопить не тонет, а превращается в морского котика и начинает с азартом ловить селедку.

Часть I:  основы работы с языком, задание данных, функции, работающие с ними и основы визуализации - на примере закона Ома для резистора, конденсатора и цепи с их параллельным соединением.




В интерактивном виде для расчетов в OctaveOnline - по ссылке (там можно менять параметры и пересчитывать в интерактивном онлайн-режиме (при каждом редактировании/изменении не забывать нажать на сохранение перед запуском на счет)).

Часть II: самостоятельное упражнение - по образцу кода с резистором и конденсатором, написать программу, моделирующую поведение цепи с резистором и катушкой индуктивности, используя параграфы 13.5 и 13.5 учебника  Зельдовича и Яглома для справки по соответствующей теории; построить графики, воспроизводящие иллюстрации из этих параграфов.