Enhet 2 / 11

Beregning og numeriske metoder med Python

Gevinster:

  • Evne til å stole på deterministisk utdata, ikke verbal gjetting, ved å la AI oversette en fysisk beregning til NumPy/SciPy-kode og kjøre selve koden
  • Evne til å verifisere påliteligheten til en numerisk kode ved å teste den med en enkel situasjon hvis svaret er kjent og sjekke konvergensen.
  • Evne til fysisk å gi enheten og nivået til resultatet ved å reflektere variable enheter i koden

Mange problemer i fysikk kan ikke løses for hånd: et integral har ingen analytisk løsning, roten til et ligningssystem kan ikke finnes i lukket form, eller en beregning må gjentas tusenvis av ganger. Det er her numeriske metoder spiller inn: i stedet for en eksakt formel, regner datamaskinen trinn for trinn med omtrentlig, men kontrollert nøyaktighet. I denne enheten lærer du hvordan du bruker kunstig intelligens (AI) som kodepartner for beregninger av beregningsfysikk, hvordan du verifiserer koden den produserer, og hvilke feller du bør unngå å gå i. Fysikerens standardverktøy her vil være Python-språket og NumPy (bibliotek for numeriske arrays og rask matematikk) samt SciPy (bibliotek for vitenskapelig databehandling; inkluderer integrasjon, radikalfunn, optimalisering).

Hvorfor AI + Python, hvorfor ikke for hånd?

Å utføre numeriske beregninger for hånd er både sakte og utsatt for feil. AI kan oversette den fysiske konstruksjonen din til en løpende Python-kode på noen få sekunder. Men den gylne regelen her er: AI skriver koden, du kjører koden og verifiserer resultatet med fysikk. AI-en som sier "denne koden gir det" er en prediksjon; Å faktisk kjøre koden og se utdata er et deterministisk faktum. En LLM kan "beregne" resultatet av koden han skrev i hodet og si et feil tall; mens når den samme koden kjøres, gir den riktig resultat. Så stol aldri på det numeriske resultatet AI gir verbalt – kjør koden.

Grunnleggende beregningsoppgaver og rollen til AI

Quest

Metode/verktøy

fysisk verifisering

bestemt integral

scipy.integrate.quad

Grensetilstander, dimensjonsanalyse

roten til ligningen

scipy.optimize.brentq

Sett roten på plass og sjekk om den er null.

System av lineære ligninger

numpy.linalg.solve

Sette løsningen tilbake i systemet

Derivat (numerisk)

Sentral forskjell eller numpy.gradient

Sammenligning med analytisk utledning

Bulkvektorberegning

NumPy-matriser

Enhets- og rangeringskontroll

AI er veldig flink til å foreslå hvilke av disse verktøyene som er passende og få syntaksen (kodeskrivingsregler) riktig. Men du bestemmer hvilken metode som gir fysisk mening og nøyaktigheten av resultatet.

Trinn for trinn: en verifiserbar numerisk beregning

1. Forklar problemet og enhetene. For eksempel: "Regn ut integralet e^(−x²) fra 0 til uendelig; resultatet skal være √π/2 ≈ 0,8862." Å omskrive det forventede resultatet (hvis noen) gjør verifiseringen enklere.

2. Spør AI om koden, men du kjører utdataene. Kopier kodeblokken og kjør den i ditt eget miljø (Jupyter, Colab, native Python).

3. Test med en kjent situasjon. Prøv koden med en enkel situasjon som du allerede vet svaret på. Test for eksempel en integrert kode med et eksempel du kjenner for hånd, for eksempel ∫₀¹ x dx = 0,5. Hvis koden gir dette riktig, øker selvtilliten din.

4. Se etter konvergens. I numeriske metoder, når du øker antall trinn, bør resultatet nærme seg en konstant verdi. Hvis den ikke nærmer seg, er ikke metoden egnet.

5. Sjekk enhet og rangering. Oppgi alltid det numeriske resultatet med den fysiske enheten og rekkefølgen.

Tips: Når du ber om kode fra AI, si "inkluder også en testlinje som sammenligner resultatet med en kjent analytisk verdi." Dermed utfører koden både beregningen og tester seg selv i en kjent situasjon. Dette gjør feil umiddelbart synlige.

tre minisaker

Sak 1 — Feil muntlig konklusjon. En student fikk AI til å skrive en integrert kode og AI sa "denne koden gir omtrent 1,77." Studenten kjørte koden: den faktiske utgangen var 0,886. AI hadde gjort en feil ved å forutsi utgangen av koden; Koden var riktig. Leksjon: stol på koden, ikke stol på den verbale gjetningen.

Tilfelle 2 - Numerisk ustabilitet. En forsker så etter roten til en ligning med en rotfunnkode som AI skrev. Koden returnerte en rot, men da forskeren satte roten tilbake i ligningen, var resultatet ikke null, men et veldig stort tall. Problemet var at startområdet ikke inneholdt roten; AI antok riktig rekkevidde. Forskeren korrigerte intervallet med fysisk informasjon og fant riktig rot.

Sak 3 – Bekreftelse oppnådd. En ingeniør ønsket en kode som numerisk beregnet avbøyningen av en bjelke under belastning. Koden fungerte, men resultatet viste metervis med avbøyning - umulig for en stålbjelke. Ingeniøren undersøkte enhetene: AI hadde utgitt seg for å ha elastisitetsmodulen i Pa i stedet for GPa, og manglet en faktor på 10⁹. Med enhetskorreksjonen ble resultatet redusert til millimeter og var rimelig.

Fire kopierbare maler

1) Numerisk beregning med valideringslinje:

Skriv Python (NumPy/SciPy) kode som utfører følgende fysiske beregning: [problem]. Deklarer alle variabler i SI-enheter og spesifiser enheten med en kommentarlinje. Legg til en kontrolllinje (hevde eller skriv ut) på slutten av koden som sammenligner resultatet med en kjent analytisk/enkel verdi. Jeg kjører koden; du gjetter ikke resultatet, bare skriv koden og forventet rangering.

2) Metodevalg konsultasjon:

Jeg ønsker å løse følgende problem numerisk: [problem]. Hvilken SciPy/NumPy-funksjon er passende og HVORFOR? Foreslå 2 alternative metoder, skriv ned fordeler/ulemper ved hver når det gjelder nøyaktighet og stabilitet. Oppgi hvilken som bør foretrekkes i hvilken fysisk situasjon.

3) Konvergenssjekk:

Skriv Python-kode som viser hvordan resultatet konvergerer ved å øke antall trinn i følgende numeriske beregning (f.eks. N=10, 100, 1000). Skriv ut resultatene i en tabell. Hvis det ikke er konvergens, forklar den fysiske/numeriske årsaken til dette i én setning. Kode: [her]

4) Enhetskontroll:

I koden nedenfor kommenterer du SI-enheten for hver variabel og kontrollerer om enheten for sluttresultatet stemmer overens med den forventede enheten (f.eks. meter, joule). Hvis det er en inkonsekvens, vis hvilken linje den står på. Kode: [her]

Svak forespørsel / Sterk forespørsel

Svak: "Si resultatet av dette integralet: ∫₀^∞ x²·e^(−x) dx"
Resultat: AI-en spytter ut et tall i hodet (kanskje rett, kanskje feil); ingenting kjørbart, ingenting verifiserbart.
Sterk: "Skriv Python-kode som beregner integralet ∫₀^∞ x²·e^(−x) dx med scipy.integrate.quad. Legg til en påstandslinje som sammenligner resultatet med den analytiske verdien til dette integralet, 2! = 2. Jeg kjører koden."
Resultat: Kjørbar kode, innebygd validering (sammenligning med analytisk verdi) og pålitelig resultat.

Vanlige feil

  • Stoler på det verbale numeriske resultatet av AI. LLM kan feilaktig forutsi utgangen av koden i hodet. Kjør alltid koden.
  • Tester ikke med kjent situasjon. Kode som ikke tester med et enkelt eksempel som du vet svaret på kan inneholde skjulte feil.
  • Sjekker ikke for konvergens. Å holde seg til en enkelt trinntelling skjuler hvorvidt resultatet er numerisk pålitelig.
  • Gjenspeiler ikke enhetene i koden. Å ikke kommentere enheten av variabler inviterer til tause 10ⁿ-feil.
  • Ignorerer bibliotekversjon/forutsetninger. Noen ganger kan AI produsere et ikke-eksisterende funksjonsnavn eller foreldet syntaks; Det merkes når du kjører det.
Forsiktig: Før du legger inn et numerisk resultat i en publikasjon, oppgave eller design, test koden med en uavhengig kjent sak og oppgi resultatet i enheter/bestillinger. Selv fungerende kode kan beregne feil fysikk; Bare fordi koden fungerer betyr ikke det at fysikken er riktig.

Oppsummert

AI er en kraftig partner i å oversette fysiske beregninger til Python-kode; Men tallene han gir verbalt er estimater, ikke fakta. Den sikre arbeidsflyten er klar: definer problemet med enhetene, få AI til å skrive koden, men du kjører utdataene, test koden med en kjent situasjon, kontroller konvergens og enhet. Det som er deterministisk er koden som kjøres; Det er ikke en LLM. I neste enhet vil vi flytte dette numeriske grunnlaget til simulering av tidsvarierende fysiske systemer.

Søknadsoppgave

Velg en fysikkregning der du kjenner den analytiske løsningen (for eksempel hastigheten til et frittfallende objekt over en tidsperiode eller en enkel bestemt integral). Få AI til å skrive en Python-kode med mal 1; kjør koden selv. Sammenlign resultatet med den analytiske verdien du kjenner. Observer deretter hvordan resultatet oppfører seg ved å endre antall trinn eller en parameter. Merk i 5-6 setninger: samsvarte utdataene fra koden med den verbale prediksjonen, var det et enhets-/ordreproblem?

sjekkliste

  • [ ] Jeg avklarte problemet og enheten for alle variabler.
  • [ ] Jeg kjørte koden skrevet av AI selv, jeg stolte ikke på det verbale resultatet.
  • [ ] Jeg testet koden med en enkel situasjon som jeg visste svaret på.
  • [ ] Jeg sjekket konvergens eller parameterfølsomhet.
  • [ ] Jeg ga fysisk enheten og rekkefølgen til resultatet.
  • [ ] Jeg har bekreftet at bibliotekfunksjonene jeg bruker er ekte og oppdaterte.