Единица 3 / 11

Симулација на физички системи

Добивки:

  • Способност да се симулира динамичен физички систем со решавачи како што се solve_ivp и да се потврди валидноста на симулацијата со следење на вкупната енергија или зачувувањето на моментот
  • Способност да се разликуваат нумерички артефакти од вистинската физика со избирање на големината на чекорот со тест за конвергенција
  • Способност да се тестира резултатот од симулацијата со споредување со познати аналитички ситуации и физички гранични состојби

Голем дел од физиката се занимава со системи кои се менуваат во времето: осцилирачко нишало, планета која орбитира, тело што се лади, бран што се шири. Повеќето од овие системи се опишани со диференцијални равенки - т.е. равенки кои ја поврзуваат брзината на промена на количината (позиција, температура) со самата таа количина. Овие равенки често немаат аналитичко (формула-точно) решение; наместо тоа ние симулираме: движење на системот напред во мали временски чекори и нумеричко следење на неговото однесување. Во оваа единица, ќе научите како да користите вештачка интелигенција (ВИ) за да изградите симулациски код и - што е најважно - како да потврдите со законите за зачувување дали симулацијата точно ја одразува физиката.

Основната идеја за симулација и улогата на вештачката интелигенција

Симулацијата се состои од овој циклус: земете ја моменталната состојба, применете ја равенката на промената, движете се напред за мала Δt, повторете. Вештачката интелигенција е многу брза во градењето на оваа јамка, избирајќи го вистинскиот решавач - алгоритам што ја решава диференцијалната равенка чекор по чекор и уредување на кодот. Стандардна алатка на физичарот е scipy.integrate.solve_ivp (функцијата SciPy која решава проблеми со почетната вредност). Но, пред да ѝ верувате на симулацијата создадена од вештачката интелигенција, прашањето што мора да го поставите е следново: Дали оваа симулација ги зачувува физичките количини (енергија, моментум, аголен момент) што треба да се зачуваат?

Систем

Тип на равенка

Критериуми за валидација

нишало, пролет

Втор степен ODE

Константност на вкупната енергија

орбита на планетата

Њутнова гравитациона ODE

Аголен моментум + зачувување на енергијата

Ладење/загревање

ОДЕ од прв степен

Конвергенција до рамнотежна температура

радиоактивно распаѓање

Експоненцијална ODE

Контрола на полуживот

Монте Карло (случајно)

статистички

Конвергенција до позната средина/дистрибуција

Забелешка: ODE значи „обична диференцијална равенка“ — равенка која вклучува извод во однос на една променлива (обично време).

Чекор по чекор: сигурна симулација

1. Појасни ја физиката и почетните услови. Која е равенката на системот? Која е почетната позиција, брзината, температурата? Кои се единиците? Дајте ги овие експлицитно на вештачката интелигенција.

2. Изберете соодветен решавач и големина на чекорот. Премногу голем временски чекор ја прави симулацијата нестабилна (резултатот експлодира или физиката се распаѓа); Премалиот чекор непотребно забавува. Вештачката интелигенција може да сугерира, но контролирајте ја одлуката.

3. Следете го законот за зачувување во кодот. Пресметајте ја и отпечатете ја вкупната енергија (или моментумот) низ целата симулација. Ако се движи со магнитуда што треба да остане константна, симулацијата е несигурна.

4. Споредете со познато решение. На пример, периодот на нишалото со мала амплитуда е познат по формулата T = 2π√(L/g); Споредете го периодот даден од симулацијата со ова.

5. Промена на параметар, тест однесување. Дали осцилацијата е пригушена кога се додава триење? Дали орбитата се менува како што се очекува кога масата се зголемува? Тест со физичка интуиција.

Совет: Додајте „енергетски тракер“ на секоја симулација: пресметајте ја вкупната енергија на секој чекор и нацртајте ја како сооднос со почетната енергија. Во систем без триење, овој сооднос треба да остане константен блиску до 1. Наносот од повеќе од 1% е знак дека треба да ја намалите големината на чекорот или да го промените решавачот.

три мини футроли

Случај 1 - Излив на енергија. Еден студент симулирал планетарна орбита со едноставен метод на Ојлер (најпримитивниот метод на чекори) напишан од АИ. Орбитата постепено се проширила со текот на времето и планетата „одлетала“. Додека ученикот ја следел вкупната енергија, видел дека таа постојано се зголемува - позната маана на методот на Ојлер. Тој побара од вештачката интелигенција за решавач кој подобро ја зачувува енергијата (посоодветен метод со solve_ivp) и орбитата се смести во стабилна елипса.

Случај 2 - Погрешна единица, погрешен период. Еден наставник откри дека периодот е 0,2 секунди во симулацијата на нишалото, но очекуваната вредност беше 2 секунди. Кога го испитал, сфатил дека вештачката интелигенција ја внела должината во сантиметри и ја користел како метар во формулата. Со корекција на единицата, симулацијата се согласи со аналитичката вредност од T = 2π√(L/g).

Случај 3 - верификација во Монте Карло. Истражувач побарал од вештачката интелигенција код кој случајно зема примероци (Монте Карло - статистичка симулација со случајни броеви) честички кои удираат во детектор. За да го потврди резултатот, тој изврши едноставен случај познат аналитички (на пример, проценување π според односот на плоштината на кругот) со истиот метод; Кога кодот правилно го предвидел π, неговата доверба во вистинската симулација се зголемила. Тој исто така забележал дека како што се зголемувал бројот на примероци, резултатот се стеснувал и конвергирал до вистинската вредност.

Четири шаблони за копирање

1) Симулација надгледувана од зачувување:

Напишете Python код кој го симулира следниов физички систем со solve_ivp: [систем, равенка, почетни услови, единици]. Во текот на целата симулација, пресметајте ја вкупната енергија (и моментумот, доколку има) на секој чекор и нацртајте го нејзиниот сооднос со неговата почетна вредност со текот на времето. Забележете дека во случај без триење, овој однос треба да остане константен ~ 1.

2) Аналитичка споредба:

Додадете код кој го споредува резултатот од следната симулација со познатото аналитичко решение на овој систем ([формула]). Нацртајте ги и двете на истиот график и испечатете ја максималната разлика помеѓу нумеричката и аналитичката. Код за симулација: [тука]

3) Големина на чекор / тест за стабилност:

Напишете код кој ја извршува следната симулација со различни временски чекори (на пр. dt = 0,1, 0,01, 0,001) и покажува како се менуваат резултатите. Наведете по која големина на чекор резултатот се стабилизира (конвергира). Код: [тука]

4) Тестирање на физичка гранична состојба:

Предложете 3 тестови за физичка гранична состојба за следнава симулација: (на пр. енергијата треба да се зачува кога триењето е нула, брзо застој кога триењето е големо, како треба да се промени периодот кога масата се удвојува). Напишете го очекуваниот резултат од секој тест во една реченица. Код: [тука]

Слаб промпт / Силен промпт

Слаб: „Напиши симулација на нишалото“.
Резултат: код без единици, без валидација, без проверки за зачувување; Не е јасно дали ја одразува физиката или не.
Силно: „Напишете шифра solve_ivp што симулира едноставно нишало со должина L = 1 m, почетен агол 10°, со g = 9,81 m/s² за 10 секунди. Следете ја вкупната енергија на секој чекор и нацртајте го односот кон почетокот. Споредете го измерениот период со малата амплитудна формула T(L/2πg) и отпечатете ја разликата T(L/πg)∈."
Резултат: Сигурна симулација со единици, мониторинг на конзервација и споредба со аналитичката вредност.

Вообичаени грешки

  • Непочитување на законот за зачувување. Ако енергијата или моментумот лебдат, симулацијата е погрешна; Да му верувате на резултатот без да го видите ова е најчеста грешка.
  • Произволно избирање на големината на чекорот. Преголемиот чекор создава неодлучност, премалиот чекор создава непотребни трошоци; Тестирањето за конвергенција е од суштинско значење.
  • Не правење аналитички споредби. Без да се споредува со познат посебен случај (мала амплитуда, состојба без триење), симулацијата останува без надзор.
  • Погрешно нумеричка грешка со физика. Однесувањето како што е проширувањето на орбитата често е недостаток на методот, а не на вистинската физика.
  • Поправање на бројот на примероци во случајна симулација. Заблуда е да се зголеми бројот на примероци во Монте Карло и да се потпираат на еден резултат без да се види конвергенција.
Внимание: Само затоа што симулацијата произведува „убав график“ не значи дека е точна. Визуелното е убедливо, но измамливо. Пред да и верувате на симулацијата, задолжително следете го законот за зачувување и споредете го со позната ситуација. Непроверена симулација не е физички доказ.

Сумирано

Симулацијата е моќен начин да се разберат динамичните физички системи на кои им недостигаат аналитички решенија и брзо создава код за симулација на вештачка интелигенција. Но, вредноста на симулацијата зависи од тоа дали точно ја одразува физиката. Начинот да се обезбеди ова е да се следат законите за зачувување, да се избере соодветната големина на чекорот со тестирање на конвергенција, да се спореди резултатот со познати аналитички случаи и да се тестираат физичките гранични случаи. Во следната единица ќе го префрлиме фокусот од генерирани податоци на анализа на вистинските експериментални податоци.

Задача за апликација

Изберете едноставен динамичен систем (нишало, слободен пад + отпор на воздух или ладење). Со шаблон 1, отпечатете и стартувајте симулациски код кој вклучува проверка на зачувување или рамнотежа во вештачката интелигенција. Проверете дали набљудуваната количина (енергија или температура) се однесува како што се очекува. Потоа сменете го параметарот (триење, маса, големина на чекор) и проверете дали промената во однесувањето се согласува со вашата физичка интуиција. Запишете го во 5-6 реченици.

листа за проверка

  • [ ] Ја појаснив равенката, почетните услови и единиците на системот.
  • [ ] Следев закон за зачувување (енергија/моментум) во симулацијата.
  • [ ] Ја потврдив големината на чекорот со тест за конвергенција.
  • [ ] Го споредив резултатот со позната аналитичка ситуација.
  • [ ] Извршив барем еден тест за физичка гранична состојба.
  • [ ] Ги разликував нумеричките дефекти од вистинската физика.