Dobički:
- Sposobnost zanašanja na deterministične rezultate, ne na verbalno ugibanje, tako da AI prevede fizični izračun v kodo NumPy/SciPy in zažene kodo samo
- Sposobnost preverjanja zanesljivosti numerične kode s testiranjem s preprosto situacijo, katere odgovor je znan, in preverjanjem njene konvergence.
- Sposobnost fizičnega zagotavljanja enote in ravni rezultata z odsevom spremenljivih enot v kodo
Veliko problemov v fiziki ni mogoče rešiti ročno: integral nima analitične rešitve, korena sistema enačb ni mogoče najti v zaprti obliki ali pa je treba izračun ponoviti tisočkrat. Tukaj pridejo v poštev numerične metode: namesto natančne formule računalnik izračuna korak za korakom s približno, a nadzorovano natančnostjo. V tej enoti se boste naučili, kako uporabiti umetno inteligenco (AI) kot kodnega partnerja za računalniške fizikalne izračune, kako preveriti kodo, ki jo ustvari, in v katere pasti se morate izogibati. Fizikova standardna orodja bodo jezik Python in NumPy (knjižnica za numerične nize in hitro matematiko) ter SciPy (knjižnica za znanstveno računalništvo; vključuje integracijo, radikalno iskanje, optimizacijo).
Zakaj AI + Python, zakaj ne ročno?
Ročno izvajanje numeričnih izračunov je počasno in nagnjeno k napakam. Umetna inteligenca lahko vaš fizični konstrukt v nekaj sekundah prevede v delujočo kodo Python. Toda zlato pravilo tukaj je: AI napiše kodo, vi zaženete kodo in preverite rezultat s fiziko. AI pravi, da "ta koda daje to" je napoved; Dejansko izvajanje kode in ogled izhoda je deterministično dejstvo. LLM lahko "izračuna" izhod kode, ki jo je napisal v svoji glavi, in izgovori napačno številko; medtem ko ko se zažene ista koda, daje pravilen rezultat. Zato nikoli ne zaupajte številčnemu rezultatu, ki ga AI ustno poda – zaženite kodo.
Osnovne računalniške naloge in vloga AI
Iskanje
Metoda/orodje
fizično preverjanje
določen integral
scipy.integrate.quad
Mejna stanja, dimenzijska analiza
koren enačbe
scipy.optimize.brentq
Postavite koren na mesto in preverite, ali je nič.
Sistem linearnih enačb
numpy.linalg.solve
Vrnitev rešitve v sistem
Izpeljanka (številska)
Centralna razlika ali numpy.gradient
Primerjava z analitično izpeljavo
Izračun množičnega vektorja
Nizi NumPy
Nadzor enot in činov
Umetna inteligenca je zelo dobra pri predlaganju, katera od teh orodij je primerna, in pravilni sintaksi (pravilom za pisanje kode). Vi pa se odločite, katera metoda je fizično smiselna in natančnost rezultata.
Korak za korakom: preverljiv numerični izračun
1. Razjasnite problem in enote. Na primer: "Izračunajte integral e^(−x²) od 0 do neskončnosti; rezultat mora biti √π/2 ≈ 0,8862." Prepisovanje pričakovanega rezultata (če obstaja) olajša preverjanje.
2. Vprašajte AI za kodo, vendar zaženite izhod. Kopirajte blok kode in ga zaženite v svojem okolju (Jupyter, Colab, izvorni Python).
3. Test z znano situacijo. Preizkusite kodo s preprosto situacijo, na katero že poznate odgovor. Preizkusite na primer integralno kodo s primerom, ki ga poznate ročno, kot je ∫₀¹ x dx = 0,5. Če koda to poda pravilno, se vaša samozavest poveča.
4. Preverite konvergenco. Pri numeričnih metodah se mora rezultat, ko povečate število korakov, približati konstantni vrednosti. Če se ne približa, metoda ni primerna.
5. Preverite enoto in rang. Numerični rezultat vedno navedite s fizično enoto in vrstnim redom.
Nasvet: ko zahtevate kodo od umetne inteligence, recite "vključi tudi testno vrstico, ki primerja rezultat z znano analitično vrednostjo." Tako koda izvede izračun in se preizkusi v znani situaciji. Tako so napake takoj vidne.
trije mini kovčki
Primer 1 – Napačen ustni zaključek. Študent je dal AI napisati integralno kodo in AI je rekel, da "ta koda daje približno 1,77." Študent je zagnal kodo: dejanski rezultat je bil 0,886. AI je naredil napako pri napovedovanju izhoda kode; Koda je bila pravilna. Nauk: zaupajte kodi, ne verbalnemu ugibanju.
Primer 2 – Numerična nestabilnost. Raziskovalec je iskal koren enačbe s kodo za iskanje korenin, ki jo je napisal AI. Koda je vrnila koren, a ko je raziskovalec koren vstavil nazaj v enačbo, rezultat ni bil nič, ampak zelo veliko število. Težava je bila v tem, da začetni obseg ni vseboval korena; AI je prevzel ustrezno območje. Raziskovalec je popravil interval s fizičnimi informacijami in našel pravilen koren.
Primer 3 – Pridobljena potrditev. Inženir je želel kodo, ki bi numerično izračunala upogib nosilca pod obremenitvijo. Koda je delovala, vendar je rezultat pokazal metre upogiba - nemogoče za jekleni žarek. Inženir je pregledal enote: umetna inteligenca se je pretvarjala, da ima modul elastičnosti v Pa namesto v GPa, pri čemer je manjkal faktor 10⁹. S korekcijo enote se je rezultat zmanjšal na milimetre in je bil razumen.
Štiri predloge za kopiranje
1) Numerični izračun s potrditveno vrstico:
Napišite kodo Python (NumPy/SciPy), ki izvede naslednji fizični izračun: [težava]. Vse spremenljivke deklarirajte v enotah SI in navedite enoto z vrstico za komentar. Na koncu kode dodajte kontrolno vrstico (uveljavi ali natisni), ki primerja rezultat z znano analitično/preprosto vrednostjo. Zagnal bom kodo; izhoda ne ugibate, samo napišete kodo in pričakovano uvrstitev.
2) Posvetovanje o izbiri metode:
Numerično želim rešiti naslednji problem: [problem]. Katera funkcija SciPy/NumPy je primerna in ZAKAJ? Predlagajte 2 alternativni metodi, zapišite prednosti/slabosti vsake v smislu natančnosti in stabilnosti. Navedite, kateri naj bi imel prednost v kateri fizični situaciji.
3) Preverjanje konvergence:
Napišite kodo Python, ki prikazuje, kako rezultat konvergira s povečanjem števila korakov naslednjega numeričnega izračuna (npr. N=10, 100, 1000). Rezultate natisni v tabelo. Če konvergence ni, v enem stavku pojasnite fizični/numerični razlog za to. Koda: [tukaj]
4) Nadzor enote:
V spodnji kodi zakomentirajte enoto SI vsake spremenljivke in preverite, ali je enota končnega rezultata skladna s pričakovano enoto (npr. meter, joule). Če obstaja nedoslednost, pokažite, v kateri vrstici je. Koda: [tukaj]
Šibek poziv/močan poziv
Slab: "Povejte rezultat tega integrala: ∫₀^∞ x²·e^(−x) dx"
Rezultat: AI izpljune številko v svoji glavi (morda pravilno, morda napačno); nič izvršljivega, nič preverljivega.
Strong: "Napišite kodo Python, ki izračuna integral ∫₀^∞ x²·e^(−x) dx s scipy.integrate.quad. Dodajte vrstico assert, ki primerja rezultat z analitično vrednostjo tega integrala, 2! = 2. Zagnal bom kodo."
Rezultat: Izvedljiva koda, vgrajena validacija (primerjava z analitično vrednostjo) in zanesljiv rezultat.
Pogoste napake
- Zanašanje na besedni numerični rezultat AI. LLM lahko napačno predvidi izhod kode v glavi. Vedno zaženite kodo.
- Ni testiranja z znano situacijo. Koda, ki ne testira s preprostim primerom, za katerega veste, da je odgovor, lahko vsebuje skrite napake.
- Ne preverjam konvergence. Če ostanete pri štetju enega koraka, se prikrije, ali je rezultat numerično zanesljiv.
- Ne odraža enot v kodi. Nekomentiranje enote spremenljivk povzroča tihe napake 10ⁿ.
- Ignoriranje različice knjižnice/predpostavk. Včasih lahko umetna inteligenca ustvari neobstoječe ime funkcije ali zastarelo sintakso; To je opazno, ko ga zaženete.
Pozor: Preden numerični rezultat vnesete v objavo, nalogo ali načrt, preizkusite kodo z neodvisnim znanim primerom in zagotovite rezultat v enotah/naročilih. Tudi delujoča koda morda izračunava napačno fiziko; Samo zato, ker koda deluje, še ne pomeni, da je fizika pravilna.
Če povzamem
AI je močan partner pri prevajanju fizičnih izračunov v kodo Python; Toda številke, ki jih navaja ustno, so ocene in ne dejstva. Varen potek dela je jasen: definirajte težavo z njenimi enotami, naj AI napiše kodo, vi pa zaženite izhod, preizkusite kodo z znano situacijo, preverite konvergenco in enoto. Kar je deterministično, je koda, ki se izvaja; To ni LLM. V naslednji enoti bomo to numerično osnovo premaknili k simulaciji časovno spremenljivih fizičnih sistemov.
Aplikacijska naloga
Izberite fizikalni račun, za katerega poznate analitično rešitev (na primer hitrost prosto padajočega predmeta v določenem časovnem obdobju ali preprost določen integral). Naj AI napiše kodo Python s predlogo 1; zaženite kodo sami. Primerjajte rezultat z analitično vrednostjo, ki jo poznate. Nato opazujte, kako se rezultat obnaša s spreminjanjem števila korakov ali parametra. Opomba v 5-6 stavkih: ali se izhod kode ujema z besedno napovedjo, ali je prišlo do težave z enoto/naročilom?
kontrolni seznam
- [ ] Razjasnil sem problem in enoto vseh spremenljivk.
- [ ] Sam sem zagnal kodo, ki jo je napisal AI, nisem zaupal verbalnemu rezultatu.
- [ ] Kodo sem preizkusil s preprosto situacijo, za katero sem vedel odgovor.
- [ ] Preveril sem konvergenco ali občutljivost parametrov.
- [ ] Fizično sem podal enoto in vrstni red rezultata.
- [ ] Preveril sem, da so knjižnične funkcije, ki jih uporabljam, resnične in posodobljene.