Jedinica 2 / 11

Računanje i numeričke metode s Pythonom

Dobici:

  • Sposobnost oslanjanja na deterministički izlaz, a ne na verbalno nagađanje, tako što AI prevodi fizički izračun u NumPy/SciPy kod i pokreće sam kod
  • Sposobnost provjere pouzdanosti numeričkog koda njegovim testiranjem jednostavnom situacijom čiji je odgovor poznat i provjerom njegove konvergencije.
  • Sposobnost fizičkog pružanja jedinice i razine rezultata odražavanjem varijabilnih jedinica u kodu

Mnogi problemi u fizici ne mogu se riješiti ručno: integral nema analitičko rješenje, korijen sustava jednadžbi ne može se pronaći u zatvorenom obliku ili se izračun mora ponoviti tisuće puta. Tu na scenu stupaju numeričke metode: umjesto točne formule, računalo izračunava korak po korak s približnom, ali kontroliranom točnošću. U ovoj jedinici naučit ćete kako koristiti umjetnu inteligenciju (AI) kao partnera koda za proračune računalne fizike, kako provjeriti kod koji ona proizvodi i u koje zamke trebate izbjeći upadanje. Standardni alati fizičara ovdje će biti jezik Python i NumPy (biblioteka za numeričke nizove i brzu matematiku), kao i SciPy (biblioteka za znanstveno računalstvo; uključuje integraciju, radikalno pronalaženje, optimizaciju).

Zašto AI + Python, zašto ne ručno?

Ručno izvođenje numeričkih izračuna sporo je i podložno pogreškama. AI može prevesti vašu fizičku konstrukciju u aktivni Python kod u nekoliko sekundi. Ali ovdje je zlatno pravilo: umjetna inteligencija piše kod, vi pokrećete kod i potvrđujete rezultat pomoću fizike. AI kaže "ovaj kod daje to" je predviđanje; Zapravo pokretanje koda i gledanje izlaza deterministička je činjenica. LLM bi mogao "izračunati" izlaz koda koji je napisao u svojoj glavi i reći krivi broj; dok kada se isti kod pokrene daje točan rezultat. Stoga nikada ne vjerujte numeričkom rezultatu koji AI verbalno daje - pokrenite kod.

Osnovni računalni zadaci i uloga umjetne inteligencije

Potraga

Metoda/alat

fizička provjera

određeni integral

scipy.integrirati.četverokut

Granična stanja, dimenzionalna analiza

korijen jednadžbe

scipy.optimiziraj.brentq

Stavite korijen na mjesto i provjerite je li nula.

Sustav linearnih jednadžbi

numpy.linalg.riješiti

Vraćanje rješenja u sustav

Derivacija (numerička)

Središnja razlika ili numpy.gradijent

Usporedba s analitičkim izvođenjem

Izračun skupnog vektora

NumPy nizovi

Kontrola jedinice i čina

AI je vrlo dobar u sugeriranju koji je od ovih alata prikladan i ispravljanju sintakse (pravila pisanja koda). Ali vi odlučujete koja metoda ima fizički smisao i točnost rezultata.

Korak po korak: provjerljivi numerički izračun

1. Pojasnite problem i jedinice. Na primjer: "Izračunajte integral e^(−x²) od 0 do beskonačnosti; rezultat bi trebao biti √π/2 ≈ 0,8862." Prepisivanje očekivanog rezultata (ako postoji) olakšava provjeru.

2. Pitajte AI za kod, ali pokrenite izlaz. Kopirajte blok koda i pokrenite ga u vlastitom okruženju (Jupyter, Colab, izvorni Python).

3. Testirajte s poznatom situacijom. Isprobajte kod s jednostavnom situacijom na koju već znate odgovor. Na primjer, testirajte integralni kod s primjerom koji znate ručno, kao što je ∫₀¹ x dx = 0,5. Ako kod ovo daje ispravno, vaše se samopouzdanje povećava.

4. Provjerite konvergenciju. U numeričkim metodama, kada povećavate broj koraka, rezultat bi se trebao približiti konstantnoj vrijednosti. Ako se ne približi, metoda nije prikladna.

5. Provjerite jedinicu i rang. Numerički rezultat uvijek navedite s fizičkom jedinicom i redoslijedom.

Savjet: kada tražite kod od umjetne inteligencije, recite "također uključi testnu liniju koja uspoređuje rezultat s poznatom analitičkom vrijednošću." Dakle, kôd izvodi izračun i testira se u poznatoj situaciji. To čini pogreške odmah vidljivima.

tri mini kućišta

Slučaj 1 — Netočan usmeni zaključak. Student je zamolio umjetnu inteligenciju da napiše integralni kod i umjetna inteligencija je rekla "ovaj kod daje oko 1,77." Student je pokrenuo kod: stvarni izlaz bio je 0,886. AI je pogriješio u predviđanju izlaza koda; Šifra je bila točna. Pouka: vjerujte kodu, ne vjerujte verbalnom nagađanju.

Slučaj 2 — Numerička nestabilnost. Istraživač je tražio korijen jednadžbe pomoću koda za pronalaženje korijena koji je napisala umjetna inteligencija. Kod je vratio korijen, ali kada je istraživač vratio korijen u jednadžbu, rezultat nije bio nula, već vrlo velik broj. Problem je bio u tome što početni raspon nije sadržavao korijen; AI je preuzeo odgovarajući domet. Istraživač je ispravio interval fizičkim podacima i pronašao točan korijen.

Slučaj 3 — Dobivena potvrda. Inženjer je želio kod koji numerički izračunava otklon grede pod opterećenjem. Šifra je funkcionirala, ali je rezultat pokazao metre otklona - nemoguće za čeličnu gredu. Inženjer je pregledao jedinice: AI se pretvarao da ima modul elastičnosti u Pa umjesto GPa, propuštajući faktor od 10⁹. S jediničnom korekcijom rezultat se smanjio na milimetre i bio je prihvatljiv.

Četiri predloška za kopiranje

1) Numerički izračun s linijom valjanosti:

Napišite Python (NumPy/SciPy) kod koji izvodi sljedeći fizički izračun: [problem]. Deklarirajte sve varijable u SI jedinicama i navedite jedinicu s komentarom. Dodajte redak za provjeru (tvrdi ili ispis) na kraju koda koji uspoređuje rezultat s poznatom analitičkom/jednostavnom vrijednošću. Pokrenut ću kod; ne pogađate rezultat, samo napišite kod i očekivani rang.

2) Savjetovanje o odabiru metode:

Želim numerički riješiti sljedeći problem: [problem]. Koja je SciPy/NumPy funkcija prikladna i ZAŠTO? Predložite 2 alternativne metode, zapišite prednosti/protiv svake u smislu točnosti i stabilnosti. Navedite koji bi trebao imati prednost u kojoj fizičkoj situaciji.

3) Provjera konvergencije:

Napišite Python kod koji pokazuje kako rezultat konvergira povećanjem broja koraka sljedećeg numeričkog izračuna (npr. N=10, 100, 1000). Ispišite rezultate u tablici. Ako nema konvergencije, objasnite fizički/numerički razlog za to u jednoj rečenici. Kod: [ovdje]

4) Kontrola jedinice:

U donjem kodu komentirajte SI jedinicu svake varijable i provjerite je li jedinica konačnog rezultata u skladu s očekivanom jedinicom (npr. metar, džul). Ako postoji nedosljednost, pokažite u kojem se retku nalazi. Kod: [ovdje]

Slab upit / Jak upit

Slab: "Recite rezultat ovog integrala: ∫₀^∞ x²·e^(−x) dx"
Rezultat: AI ispljune broj u svojoj glavi (možda točan, možda pogrešan); ništa izvršno, ništa provjerljivo.
Strong: "Napišite Python kod koji izračunava integral ∫₀^∞ x²·e^(−x) dx sa scipy.integrate.quad. Dodajte assert redak koji uspoređuje rezultat s analitičkom vrijednošću ovog integrala, 2! = 2. Pokrenut ću kod."
Rezultat: Izvršni kod, ugrađena provjera valjanosti (usporedba s analitičkom vrijednošću) i pouzdan rezultat.

Uobičajene greške

  • Oslanjajući se na verbalni numerički rezultat AI. LLM može netočno predvidjeti izlaz koda u glavi. Uvijek pokrenite kod.
  • Ne testira se s poznatom situacijom. Kod koji ne testira s jednostavnim primjerom za koji znate odgovor može sadržavati skrivene pogreške.
  • Ne provjerava konvergenciju. Držanje brojanja samo jednog koraka prikriva je li rezultat numerički pouzdan.
  • Ne odražava jedinice u kodu. Nekomentiranje jedinice varijabli izaziva tihe pogreške od 10ⁿ.
  • Ignoriranje verzije/pretpostavki knjižnice. Ponekad AI može proizvesti nepostojeći naziv funkcije ili zastarjelu sintaksu; Primjetno je kad ga pokrenete.
Oprez: Prije stavljanja numeričkog rezultata u publikaciju, zadatak ili dizajn, testirajte kod s neovisnim poznatim slučajem i navedite rezultat u jedinicama/narudžbama. Čak i radni kod može izračunavati pogrešnu fiziku; Samo zato što kod radi ne znači da je fizika točna.

Ukratko

AI je moćan partner u prevođenju fizičkih izračuna u Python kod; Ali brojke koje iznosi usmeno su procjene, a ne činjenice. Siguran tijek rada je jasan: definirajte problem s njegovim jedinicama, neka AI napiše kod, ali vi pokrenite izlaz, testirajte kod s poznatom situacijom, provjerite konvergenciju i jedinicu. Ono što je determinističko je kod koji se izvršava; To nije LLM. U sljedećoj cjelini premjestit ćemo ovu numeričku osnovu na simulaciju vremenski promjenjivih fizičkih sustava.

Zadatak aplikacije

Odaberite fizikalni račun za koji znate analitičko rješenje (na primjer, brzina slobodno padajućeg objekta tijekom određenog vremenskog razdoblja ili jednostavan određeni integral). Neka AI napiše Python kod s predloškom 1; sami pokrenite kod. Usporedite rezultat s analitičkom vrijednošću koju znate. Zatim promatrajte kako se rezultat ponaša mijenjanjem broja koraka ili parametra. Napomena u 5-6 rečenica: je li izlaz koda odgovarao verbalnom predviđanju, je li bilo problema s jedinicom/narudžbom?

popis za provjeru

  • [ ] Pojasnio sam problem i jedinicu svih varijabli.
  • [ ] Sam sam pokrenuo kod koji je napisao AI, nisam vjerovao verbalnom rezultatu.
  • [ ] Testirao sam kôd s jednostavnom situacijom za koju sam znao odgovor.
  • [ ] Provjerio sam konvergenciju ili osjetljivost parametra.
  • [ ] Fizički sam naveo jedinicu i redoslijed rezultata.
  • [ ] Potvrdio sam da su funkcije knjižnice koje koristim stvarne i ažurne.