Vienetas 2 / 11

Skaičiavimas ir skaitiniai metodai su Python

Pelnas:

  • Galimybė pasikliauti deterministine išvestimi, o ne žodiniais spėjimais, kai dirbtinis intelektas išverčia fizinį skaičiavimą į NumPy / SciPy kodą ir paleidžia patį kodą
  • Gebėjimas patikrinti skaitmeninio kodo patikimumą, testuojant jį su paprasta situacija, kurios atsakymas žinomas, ir tikrinant jo konvergenciją.
  • Gebėjimas fiziškai pateikti rezultato vienetą ir lygį, atspindint kintamus vienetus į kodą

Daugelio fizikos problemų negalima išspręsti ranka: integralas neturi analitinio sprendimo, lygčių sistemos šaknis negalima rasti uždaroje formoje arba skaičiavimas turi būti kartojamas tūkstančius kartų. Čia atsiranda skaitiniai metodai: vietoj tikslios formulės kompiuteris žingsnis po žingsnio skaičiuoja apytiksliu, bet kontroliuojamu tikslumu. Šiame skyriuje sužinosite, kaip dirbtinį intelektą (AI) naudoti kaip kodo partnerį skaičiavimo fizikos skaičiavimams, kaip patikrinti jo sukurtą kodą ir į kokius spąstus turėtumėte nepakliūti. Standartiniai fiziko įrankiai čia bus „Python“ kalba ir „NumPy“ (skaitinių masyvų ir greitosios matematikos biblioteka), taip pat „SciPy“ (mokslinio skaičiavimo biblioteka; apima integraciją, radikalų radimą, optimizavimą).

Kodėl AI + Python, kodėl ne ranka?

Skaitmeniniai skaičiavimai rankiniu būdu yra lėtas ir dažnai pasitaiko klaidų. AI per kelias sekundes gali paversti jūsų fizinę konstrukciją veikiančiu Python kodu. Tačiau auksinė taisyklė čia yra tokia: AI rašo kodą, jūs paleidžiate kodą ir patikrinate rezultatą fizika. AI posakis „šis kodas tai suteikia“ yra numatymas; Iš tikrųjų paleisti kodą ir matyti išvestį yra deterministinis faktas. LLM gali „apskaičiuoti“ kodo, kurį parašė savo galvoje, išvestį ir pasakyti neteisingą skaičių; tuo tarpu paleidus tą patį kodą, gaunamas teisingas rezultatas. Taigi niekada nepasitikėkite skaitmeniniu rezultatu, kurį AI pateikia žodžiu – paleiskite kodą.

Pagrindinės skaičiavimo užduotys ir AI vaidmuo

Quest

Metodas/priemonė

fizinis patikrinimas

apibrėžtasis integralas

scipy.integrate.quad

Ribinės būsenos, matmenų analizė

lygties šaknis

scipy.optimize.brentq

Įdėkite šaknį į vietą ir patikrinkite, ar ji lygi nuliui.

Tiesinių lygčių sistema

numpy.linalg.spręsti

Tirpalo grąžinimas į sistemą

Išvestinė (skaitinė)

Centrinis skirtumas arba numpy.gradientas

Palyginimas su analitiniu išvedžiojimu

Masinio vektoriaus skaičiavimas

NumPy masyvai

Vieneto ir rango kontrolė

AI labai gerai gali pasiūlyti, kuris iš šių įrankių yra tinkamas, ir teisingai nustatyti sintaksę (kodo rašymo taisykles). Bet jūs nusprendžiate, kuris metodas yra fiziškai prasmingas ir rezultato tikslumas.

Žingsnis po žingsnio: patikrinamas skaitinis skaičiavimas

1. Išsiaiškinkite problemą ir vienetus. Pavyzdžiui: "Apskaičiuokite integralą e^(−x²) nuo 0 iki begalybės; rezultatas turėtų būti √π/2 ≈ 0,8862." Tikėtino rezultato perrašymas (jei toks yra) palengvina patikrinimą.

2. Paprašykite dirbtinio intelekto kodo, bet paleidžiate išvestį. Nukopijuokite kodo bloką ir paleiskite jį savo aplinkoje („Jupyter“, „Colab“, vietinis Python).

3. Išbandykite žinomą situaciją. Išbandykite kodą su paprasta situacija, į kurią jau žinote atsakymą. Pavyzdžiui, patikrinkite integrinį kodą naudodami pavyzdį, kurį žinote ranka, pvz., ∫₀¹ x dx = 0,5. Jei kodas tai nurodo teisingai, jūsų pasitikėjimas didėja.

4. Patikrinkite, ar nėra konvergencijos. Taikant skaitmeninius metodus, padidinus žingsnių skaičių, rezultatas turėtų artėti prie pastovios vertės. Jei nepriartėja, metodas netinka.

5. Patikrinkite vienetą ir rangą. Skaitinį rezultatą visada pateikite su fiziniu vienetu ir tvarka.

Patarimas: kai prašote kodo iš AI, pasakykite „taip pat įtraukite bandymo eilutę, kuri palygina rezultatą su žinoma analitine verte“. Taigi kodas ir atlieka skaičiavimą, ir išbando save žinomoje situacijoje. Taip iš karto matomos klaidos.

trys mini dėklai

1 atvejis. Neteisinga žodinė išvada. Mokinys turėjo dirbtinį intelektą parašyti vientisą kodą ir AI pasakė: „šis kodas duoda apie 1,77“. Studentas paleido kodą: faktinė išvestis buvo 0,886. AI padarė klaidą numatydamas kodo išvestį; Kodas buvo teisingas. Pamoka: pasitikėkite kodu, nepasitikėkite žodiniu spėjimu.

2 atvejis. Skaitmeninis nestabilumas. Tyrėjas ieškojo lygties šaknies su šaknies radimo kodu, kurį parašė AI. Kodas grąžino šaknį, bet kai tyrėjas grąžino šaknį į lygtį, rezultatas buvo ne nulis, o labai didelis skaičius. Problema ta, kad pradiniame diapazone nėra šaknies; AI prisiėmė tinkamą diapazoną. Tyrėjas pataisė intervalą fizine informacija ir rado teisingą šaknį.

3 atvejis – gautas patvirtinimas. Inžinierius norėjo kodo, kuris skaitmeniniu būdu apskaičiuotų sijos įlinkį veikiant apkrovai. Kodas veikė, bet rezultatas parodė metrais nuokrypio – neįmanoma plieninei sijai. Inžinierius ištyrė vienetus: AI apsimetė, kad tamprumo modulis yra Pa, o ne GPa, trūksta koeficiento 10⁹. Su vieneto korekcija rezultatas sumažėjo iki milimetrų ir buvo pagrįstas.

Keturi kopijuojami šablonai

1) Skaitinis skaičiavimas su patvirtinimo eilute:

Parašykite Python (NumPy/SciPy) kodą, kuris atlieka šiuos fizinius skaičiavimus: [problema]. Deklaruokite visus kintamuosius SI vienetais ir nurodykite vienetą komentaro eilute. Kodo pabaigoje pridėkite kontrolinę eilutę (patvirtinti arba spausdinti), kuri palygina rezultatą su žinoma analitine / paprasta reikšme. Aš paleisiu kodą; Jūs neatspėsite išvesties, tiesiog parašykite kodą ir numatomą rangą.

2) Metodo pasirinkimo konsultacija:

Noriu skaitiniu būdu išspręsti šią problemą: [problema]. Kuri SciPy/NumPy funkcija tinka ir KODĖL? Pasiūlykite 2 alternatyvius metodus, užrašykite kiekvieno privalumus ir trūkumus tikslumo ir stabilumo atžvilgiu. Nurodykite, kuriai fizinei situacijai turėtų būti teikiama pirmenybė.

3) Konvergencijos patikrinimas:

Parašykite Python kodą, rodantį, kaip rezultatas konverguoja, padidinus sekančio skaitinio skaičiavimo žingsnių skaičių (pvz., N=10, 100, 1000). Rezultatus atspausdinkite lentelėje. Jei konvergencijos nėra, vienu sakiniu paaiškinkite fizinę/skaitinę to priežastį. Kodas: [čia]

4) Įrenginio valdymas:

Toliau pateiktame kode pakomentuokite kiekvieno kintamojo SI vienetą ir patikrinkite, ar galutinio rezultato vienetas atitinka numatomą vienetą (pvz., metras, džaulis). Jei yra neatitikimų, parodykite, kurioje eilutėje jis yra. Kodas: [čia]

Silpnas raginimas / Stiprus raginimas

Silpnas: „Pasakykite šio integralo rezultatą: ∫₀^∞ x²·e^(−x) dx“
Rezultatas: AI išspjauna į galvą skaičių (galbūt teisingą, gal neteisingą); nieko vykdomo, nieko negalima patikrinti.
Stiprus: "Parašykite Python kodą, kuris apskaičiuoja integralą ∫₀^∞ x²·e^(−x) dx su scipy.integrate.quad. Pridėkite tvirtinimo eilutę, kuri palygina rezultatą su šio integralo analitine reikšme 2! = 2. Aš paleisiu kodą."
Rezultatas: vykdomas kodas, integruotas patvirtinimas (palyginimas su analitine verte) ir patikimas rezultatas.

Dažnos klaidos

  • Remdamiesi žodiniu skaitmeniniu AI rezultatu. LLM gali neteisingai numatyti kodo išvestį galvoje. Visada paleiskite kodą.
  • Netestuojama su žinoma situacija. Kode, kuris netikrina paprastu pavyzdžiu, į kurį žinote atsakymą, gali būti paslėptų klaidų.
  • Netikrina konvergencijos. Vieno žingsnių skaičiaus laikymasis neaišku, ar rezultatas yra patikimas.
  • Kode neatspindi vienetų. Nekomentuojant kintamųjų vieneto, atsiranda tylių 10 klaidų.
  • Bibliotekos versijos/prielaidų nepaisymas. Kartais AI gali sukurti neegzistuojantį funkcijos pavadinimą arba pasenusią sintaksę; Tai pastebima paleidus.
Atsargiai: prieš įtraukdami skaitinį rezultatą į publikaciją, užduotį ar dizainą, patikrinkite kodą su nepriklausomu žinomu atveju ir pateikite rezultatą vienetais / tvarka. Net veikiantis kodas gali skaičiuoti neteisingą fiziką; Vien todėl, kad kodas veikia, dar nereiškia, kad fizika yra teisinga.

Apibendrinant

AI yra galingas partneris verčiant fizinius skaičiavimus į Python kodą; Tačiau skaičiai, kuriuos jis pateikia žodžiu, yra įverčiai, o ne faktai. Saugi darbo eiga yra aiški: apibrėžkite problemą naudodami jos vienetus, leiskite dirbtiniam intelektui parašyti kodą, bet paleiskite išvestį, patikrinkite kodą žinomoje situacijoje, patikrinkite konvergenciją ir vienetą. Deterministinis yra vykdomas kodas; Tai nėra LLM. Kitame skyriuje mes perkelsime šį skaitmeninį pagrindą į laike kintančių fizinių sistemų modeliavimą.

Taikymo užduotis

Pasirinkite fizikos skaičiavimą, kurio analitinį sprendimą žinote (pavyzdžiui, laisvai krintančio objekto greitį per tam tikrą laikotarpį arba paprastą apibrėžtąjį integralą). Tegul AI parašo Python kodą su 1 šablonu; paleiskite kodą patys. Palyginkite rezultatą su jums žinoma analitine verte. Tada keisdami žingsnių skaičių arba parametrą stebėkite, kaip elgiasi rezultatas. Pastaba 5-6 sakiniais: ar kodo išvestis atitiko žodinį numatymą, ar buvo vieneto/užsakymo problema?

kontrolinis sąrašas

  • [ ] Išsiaiškinau problemą ir visų kintamųjų vienetą.
  • [ ] Pati paleidau AI parašytą kodą, nepasitikėjau žodiniu rezultatu.
  • [ ] Išbandžiau kodą su paprasta situacija, į kurią žinojau atsakymą.
  • [ ] Patikrinau konvergenciją arba parametrų jautrumą.
  • [ ] Fiziškai pateikiau rezultato vienetą ir eilę.
  • [ ] Įsitikinau, kad bibliotekos funkcijos, kurias naudoju, yra tikros ir atnaujintos.