Vienība 3 / 11

Fizisko sistēmu simulācija

Ieguvumi:

  • Spēja simulēt dinamisku fizisko sistēmu ar tādiem risinātājiem kā solve_ivp un pārbaudīt simulācijas derīgumu, uzraugot kopējo enerģijas vai impulsa saglabāšanu
  • Spēja atšķirt skaitliskos artefaktus no reālās fizikas, izvēloties soļa lielumu ar konverģences testu
  • Spēja pārbaudīt simulācijas rezultātu, salīdzinot to ar zināmām analītiskām situācijām un fiziskajiem robežstāvokļiem

Liela daļa fizikas attiecas uz sistēmām, kas mainās laikā: svārstīgs svārsts, orbīta planēta, dzesēšanas ķermenis, izplatošs vilnis. Lielāko daļu šo sistēmu apraksta ar diferenciālvienādojumiem, tas ir, vienādojumiem, kas saista daudzuma (pozīcijas, temperatūras) izmaiņu ātrumu ar pašu daudzumu. Šiem vienādojumiem bieži nav analītiska (precīzas formulas) risinājuma; tā vietā mēs simulējam: virzot sistēmu uz priekšu mazos laika soļos un skaitliski uzraugot tās uzvedību. Šajā nodaļā jūs uzzināsit, kā izmantot mākslīgo intelektu (AI), lai izveidotu simulācijas kodu, un, pats galvenais, kā pārbaudīt, vai, izmantojot saglabāšanas likumus, simulācija precīzi atspoguļo fiziku.

Simulācijas pamatideja un AI loma

Simulācija sastāv no šī cikla: ņemiet pašreizējo stāvokli, pielietojiet izmaiņu vienādojumu, virzieties uz priekšu par nelielu Δt, atkārtojiet. AI ļoti ātri veido šo cilpu, izvēloties pareizo risinātāju — algoritmu, kas soli pa solim atrisina diferenciālvienādojumu, un rediģējot kodu. Fiziķa standarta rīks ir scipy.integrate.solve_ivp (funkcija SciPy, kas atrisina sākotnējās vērtības problēmas). Bet, pirms uzticaties AI izveidotajai simulācijai, jums jāuzdod šāds jautājums: vai šī simulācija saglabā fiziskos daudzumus (enerģiju, impulsu, leņķisko impulsu), kas ir jāsaglabā?

Sistēma

Vienādojuma veids

Validācijas kritēriji

svārsts, atspere

Otrās pakāpes ODE

Kopējās enerģijas noturība

planētas orbīta

Ņūtona gravitācijas ODE

Leņķiskais impulss + enerģijas saglabāšana

Atdzesē/karsē

Pirmās pakāpes ODE

Konverģence līdzsvara temperatūrai

radioaktīvā sabrukšana

Eksponenciāls ODE

Pussabrukšanas perioda kontrole

Montekarlo (nejauši)

statistikas

Konverģence uz zināmo vidējo/sadali

Piezīme: ODE apzīmē "parasto diferenciālvienādojumu" — vienādojumu, kas ietver atvasinājumu attiecībā pret vienu mainīgo (parasti laiku).

Soli pa solim: uzticama simulācija

1. Precizējiet fiziku un sākotnējos nosacījumus. Kāds ir sistēmas vienādojums? Kāda ir sākuma pozīcija, ātrums, temperatūra? Kādas ir vienības? Norādiet tos AI.

2. Izvēlieties atbilstošu risinātāju un soļa izmēru. Pārāk liels laika solis padara simulāciju nestabilu (rezultāts eksplodē vai fizika sabojājas); Pārāk mazs solis lieki palēninās. AI var ieteikt, bet kontrolēt lēmumu.

3. Ievērojiet saglabāšanas likumu kodeksā. Aprēķiniet un izdrukājiet kopējo enerģiju (vai impulsu) visā simulācijas laikā. Ja tā dreifē lielumu, kam vajadzētu palikt nemainīgam, simulācija nav uzticama.

4. Salīdziniet ar zināmu risinājumu. Piemēram, mazas amplitūdas svārsta periods ir zināms pēc formulas T = 2π√(L/g); Salīdziniet simulācijas norādīto periodu ar šo.

5. Mainiet parametru, pārbaudiet uzvedību. Vai, pievienojot berzi, tiek slāpētas svārstības? Vai orbīta mainās, kā paredzēts, kad masa palielinās? Pārbaude ar fizisko intuīciju.

Padoms. Katrai simulācijai pievienojiet "enerģijas izsekotāju": aprēķiniet kopējo enerģiju katrā solī un attēlojiet to kā attiecību pret sākotnējo enerģiju. Sistēmā bez berzes šai attiecībai jāpaliek nemainīgai tuvu 1. Drift, kas pārsniedz 1%, ir zīme, ka jums ir jāsamazina soļa izmērs vai jāmaina risinātājs.

trīs mini futrāļi

1. gadījums — enerģijas uzliesmojums. Students simulēja planētu orbītu ar vienkāršu Eilera metodi (visprimitīvākā soļu metode), ko uzrakstīja AI. Orbīta laika gaitā pakāpeniski paplašinājās un planēta "aizlidoja". Kad students novēroja kopējo enerģiju, viņš redzēja, ka tā nepārtraukti pieaug - tas ir zināms Eilera metodes trūkums. Viņš lūdza AI izstrādātāju, kas labāk taupa enerģiju (piemērotāka metode ar solve_ivp), un orbīta izveidojās stabilā elipsē.

2. gadījums — nepareiza vienība, nepareizs periods. Skolotājs svārsta simulācijā konstatēja, ka periods ir 0,2 s, bet paredzamā vērtība bija 2 s. Kad viņš to pārbaudīja, viņš saprata, ka AI ievadīja garumu centimetros un izmantoja to kā metru formulā. Izmantojot vienību korekciju, simulācija sakrita ar analītisko vērtību T = 2π√(L/g).

3. gadījums — Montekarlo pārbaude. Pētnieks lūdza AI kodu, kas nejauši ņem paraugus (Montekarlo — statistiskā simulācija ar nejaušiem skaitļiem) daļiņas, kas trāpa detektorā. Lai pārbaudītu rezultātu, viņš veica vienkāršu analītiski zināmu gadījumu (piemēram, novērtējot π pēc apļa laukuma attiecības) ar to pašu metodi; Kad kods pareizi paredzēja π, tā pārliecība par faktisko simulāciju palielinājās. Viņš arī novēroja, ka, palielinoties paraugu skaitam, rezultāts sašaurinājās un tuvojās reālajai vērtībai.

Četras kopējamas veidnes

1) saglabāšanas uzraudzīta simulācija:

Uzrakstiet Python kodu, kas simulē šādu fizisko sistēmu ar solve_ivp: [sistēma, vienādojums, sākuma nosacījumi, vienības]. Simulācijas laikā aprēķiniet kopējo enerģiju (un impulsu, ja tāds ir) katrā solī un uzzīmējiet tās attiecību pret sākotnējo vērtību laika gaitā. Ņemiet vērā, ka bezberzes gadījumā šai attiecībai jāpaliek nemainīgai ~ 1.

2) Analītiskais salīdzinājums:

Pievienojiet kodu, kas salīdzina šādas simulācijas rezultātu ar zināmo šīs sistēmas analītisko risinājumu ([formula]). Atzīmējiet tos abus vienā grafikā un izdrukājiet maksimālo atšķirību starp skaitlisko un analītisko. Simulācijas kods: [šeit]

3) Pakāpiena lielums / stabilitātes pārbaude:

Uzrakstiet kodu, kas izpilda šādu simulāciju ar dažādiem laika posmiem (piemēram, dt = 0,1, 0,01, 0,001) un parāda, kā mainās rezultāti. Norādiet, pēc kura soļa lieluma rezultāts stabilizējas (konverģē). Kods: [šeit]

4) Fiziskā robežstāvokļa pārbaude:

Iesakiet 3 fizikālās robežstāvokļa pārbaudes šādai simulācijai: (piemēram, enerģija jāsaglabā, ja berze ir nulle, ātri apstājas, ja berze ir liela, kā vajadzētu mainīties periodam, kad masa dubultojas). Vienā teikumā uzrakstiet katra testa paredzamo rezultātu. Kods: [šeit]

Vāja uzvedne / spēcīga uzvedne

Vāji: "Uzrakstiet svārsta simulāciju."
Rezultāts: kods bez vienībām, bez validācijas, bez saglabāšanas pārbaudēm; Nav skaidrs, vai tas atspoguļo fiziku vai nē.
Strong: "Uzrakstiet solve_ivp kodu, kas simulē vienkāršu svārstu ar garumu L = 1 m, sākuma leņķis 10°, ar g = 9,81 m/s² 10 sekundes. Monitorējiet kopējo enerģiju katrā solī un uzzīmējiet attiecību pret sākumu. Salīdziniet izmērīto periodu ar mazās amplitūdas formulu T = 2π)√ (L/g) un izdrukājiet starpību."
Rezultāts: uzticama simulācija ar vienībām, saglabāšanas uzraudzību un salīdzināšanu ar analītisko vērtību.

Biežas kļūdas

  • Neievērojot saglabāšanas likumu. Ja enerģija vai impulss dreifē, simulācija ir nepareiza; Uzticēšanās rezultātam, to neredzot, ir visizplatītākā kļūda.
  • Pakāpiena izmēra izvēle patvaļīgi. Pārāk liels solis rada neizlēmību, pārāk mazs solis rada nevajadzīgas izmaksas; Konverģences pārbaude ir būtiska.
  • Neveicot analītiskos salīdzinājumus. Nesalīdzinot to ar zināmu īpašu gadījumu (maza amplitūda, bezberzes stāvoklis), simulācija paliek bez uzraudzības.
  • Kļūdains par skaitlisko kļūdu fizikā. Uzvedība, piemēram, orbītas paplašināšanās, bieži vien ir metodes, nevis reālās fizikas trūkums.
  • Paraugu skaita fiksēšana nejaušā simulācijā. Ir maldinoši palielināt paraugu skaitu Montekarlo un paļauties uz vienu rezultātu, neredzot konverģenci.
Uzmanību: tas, ka simulācija rada "jauku grafiku", nenozīmē, ka tā ir pareiza. Vizuāls ir pārliecinošs, bet mānīgs. Pirms uzticaties simulācijai, noteikti ievērojiet saglabāšanas likumu un salīdziniet to ar zināmu situāciju. Nepārbaudīta simulācija nav fizisks pierādījums.

Rezumējot

Simulācija ir spēcīgs veids, kā izprast dinamiskas fiziskās sistēmas, kurām trūkst analītisko risinājumu un kuras ātri izveido AI simulācijas kodu. Bet simulācijas vērtība ir atkarīga no tā, vai tā precīzi atspoguļo fiziku. Veids, kā to nodrošināt, ir ievērot saglabāšanas likumus, atlasīt atbilstošo soļa lielumu, izmantojot konverģences testu, salīdzināt rezultātu ar zināmiem analītiskajiem gadījumiem un pārbaudīt fiziskos robežgadījumus. Nākamajā daļā mēs pārcelsim uzmanību no ģenerētajiem datiem uz faktisko eksperimentālo datu analīzi.

Lietojumprogrammas uzdevums

Izvēlieties vienkāršu dinamisku sistēmu (svārsts, brīvais kritiens + gaisa pretestība vai dzesēšana). Izmantojot 1. veidni, izdrukājiet un palaidiet simulācijas kodu, kas ietver saglabāšanas vai līdzsvara pārbaudi AI. Pārbaudiet, vai uzraudzītais daudzums (enerģija vai temperatūra) darbojas, kā paredzēts. Pēc tam mainiet parametru (berzi, masu, soļa lielumu) un pārbaudiet, vai uzvedības izmaiņas saskan ar jūsu fizisko intuīciju. Pierakstiet to 5-6 teikumos.

kontrolsaraksts

  • [ ] Noskaidroju sistēmas vienādojumu, sākuma nosacījumus un mērvienības.
  • [ ] Simulācijā ievēroju saglabāšanas likumu (enerģija/impulss).
  • [ ] Es pārbaudīju soļa lielumu ar konverģences testu.
  • [ ] Es salīdzināju rezultātu ar zināmu analītisko situāciju.
  • [ ] Esmu veicis vismaz vienu fiziskās robežstāvokļa pārbaudi.
  • [ ] Es atšķiru skaitliskos defektus no reālās fizikas.