Enhet 2 / 11

Beräkning och numeriska metoder med Python

Vinster:

  • Förmåga att förlita sig på deterministisk utdata, inte verbala gissningar, genom att låta AI översätta en fysisk beräkning till NumPy/SciPy-kod och köra själva koden
  • Förmåga att verifiera tillförlitligheten av en numerisk kod genom att testa den med en enkel situation vars svar är känt och kontrollera dess konvergens.
  • Förmåga att fysiskt tillhandahålla enheten och nivån på resultatet genom att reflektera variabla enheter i koden

Många problem inom fysiken kan inte lösas för hand: en integral har ingen analytisk lösning, roten till ett ekvationssystem kan inte hittas i sluten form, eller en beräkning måste upprepas tusentals gånger. Det är här numeriska metoder kommer in i bilden: istället för en exakt formel räknar datorn steg för steg med ungefärlig men kontrollerad noggrannhet. I den här enheten får du lära dig hur du använder artificiell intelligens (AI) som kodpartner för beräkningar av beräkningsfysik, hur du verifierar koden den producerar och vilka fällor du bör undvika att hamna i. Fysikerns standardverktyg här kommer att vara Python-språket och NumPy (bibliotek för numeriska arrayer och snabb matematik) samt SciPy (bibliotek för vetenskaplig beräkning; inkluderar integration, radikalsökning, optimering).

Varför AI + Python, varför inte för hand?

Att utföra numeriska beräkningar för hand är både långsamt och felbenäget. AI kan översätta din fysiska konstruktion till en löpande Python-kod på några sekunder. Men den gyllene regeln här är: AI skriver koden, du kör koden och verifierar resultatet med fysik. AI:n som säger "den här koden ger det" är en förutsägelse; Att faktiskt köra koden och se utdata är ett deterministiskt faktum. En LLM kan "beräkna" utdata från koden han skrev i sitt huvud och säga ett fel nummer; medan samma kod körs ger det korrekta resultatet. Så lita aldrig på det numeriska resultatet som AI ger verbalt – kör koden.

Grundläggande beräkningsuppgifter och AI:s roll

Quest

Metod/verktyg

fysisk verifiering

bestämd integral

scipy.integrate.quad

Gränstillstånd, dimensionsanalys

roten till ekvationen

scipy.optimize.brentq

Sätt roten på plats och kolla om den är noll.

System av linjära ekvationer

numpy.linalg.solve

Sätta tillbaka lösningen i systemet

Derivat (numerisk)

Central skillnad eller numpy.gradient

Jämförelse med analytisk härledning

Bulk vektor beräkning

NumPy-matriser

Enhets- och rangkontroll

AI är mycket bra på att föreslå vilka av dessa verktyg som är lämpliga och att få syntaxen (kodskrivningsregler) korrekt. Men du bestämmer vilken metod som är fysiskt vettig och exaktheten i resultatet.

Steg för steg: en verifierbar numerisk beräkning

1. Förklara problemet och enheterna. Till exempel: "Beräkna integralen e^(−x²) från 0 till oändligt; resultatet bör vara √π/2 ≈ 0,8862." Att skriva om det förväntade resultatet (om något) gör verifieringen enklare.

2. Fråga AI om koden, men du kör utgången. Kopiera kodblocket och kör det i din egen miljö (Jupyter, Colab, native Python).

3. Testa med en känd situation. Prova koden med en enkel situation som du redan vet svaret på. Testa till exempel en integralkod med ett exempel som du känner till för hand, som ∫₀¹ x dx = 0,5. Om koden ger detta korrekt ökar ditt självförtroende.

4. Kontrollera om det är konvergens. I numeriska metoder, när du ökar antalet steg, bör resultatet närma sig ett konstant värde. Om det inte närmar sig är metoden inte lämplig.

5. Kontrollera enhet och rangordning. Ange alltid det numeriska resultatet med den fysiska enheten och ordningen.

Tips: När du begär kod från AI, säg "inkludera även en testlinje som jämför resultatet med ett känt analytiskt värde." Således utför koden både beräkningen och testar sig själv i en känd situation. Detta gör fel omedelbart synliga.

tre minifodral

Fall 1 — Felaktig muntlig slutsats. En elev fick AI att skriva en integrerad kod och AI sa "den här koden ger ungefär 1,77." Eleven körde koden: den faktiska produktionen var 0,886. AI:n hade gjort ett misstag när han förutspådde kodens utdata; Koden var korrekt. Lektion: lita på koden, lita inte på den verbala gissningen.

Fall 2 — Numerisk instabilitet. En forskare letade efter roten till en ekvation med en rotkod som AI skrev. Koden returnerade en rot, men när forskaren lade tillbaka roten i ekvationen blev resultatet inte noll utan ett mycket stort tal. Problemet var att startintervallet inte innehöll roten; AI antog lämplig räckvidd. Forskaren korrigerade intervallet med fysisk information och hittade rätt rot.

Fall 3 — Bekräftelse erhållen. En ingenjör ville ha en kod som numeriskt beräknade avböjningen av en balk under belastning. Koden fungerade, men resultatet visade metervis av avböjning - omöjligt för en stålbalk. Ingenjören undersökte enheterna: AI hade låtsats ha elasticitetsmodulen i Pa istället för GPa, och saknade en faktor på 10⁹. Med enhetskorrigeringen minskade resultatet till millimeter och var rimligt.

Fyra kopierbara mallar

1) Numerisk beräkning med valideringsrad:

Skriv Python-kod (NumPy/SciPy) som utför följande fysiska beräkning: [problem]. Deklarera alla variabler i SI-enheter och ange enheten med en kommentarsrad. Lägg till en kontrollrad (påstå eller skriv ut) i slutet av koden som jämför resultatet med ett känt analytiskt/enkelt värde. Jag kör koden; du gissar inte resultatet, skriv bara koden och den förväntade rankningen.

2) Metodvalskonsultation:

Jag vill lösa följande problem numeriskt: [problem]. Vilken SciPy/NumPy-funktion är lämplig och VARFÖR? Föreslå 2 alternativa metoder, skriv ner fördelar/nackdelar med var och en när det gäller noggrannhet och stabilitet. Ange vilken som ska föredras i vilken fysisk situation.

3) Konvergenskontroll:

Skriv Python-kod som visar hur resultatet konvergerar genom att öka antalet steg i följande numeriska beräkning (t.ex. N=10, 100, 1000). Skriv ut resultaten i en tabell. Om det inte finns någon konvergens, förklara den fysiska/numeriska orsaken till detta i en mening. Kod: [här]

4) Enhetskontroll:

I koden nedan, kommentera SI-enheten för varje variabel och kontrollera om enheten för slutresultatet överensstämmer med den förväntade enheten (t.ex. meter, joule). Om det finns en inkonsekvens, visa vilken linje den står på. Kod: [här]

Svag prompt / Stark prompt

Svag: "Säg resultatet av denna integral: ∫₀^∞ x²·e^(−x) dx"
Resultat: AI:n spottar ut ett nummer i huvudet (kanske rätt, kanske fel); inget körbart, inget verifierbart.
Stark: "Skriv Python-kod som beräknar integralen ∫₀^∞ x²·e^(−x) dx med scipy.integrate.quad. Lägg till en påståenderad som jämför resultatet med det analytiska värdet för denna integral, 2! = 2. Jag kör koden."
Resultat: Körbar kod, inbyggd validering (jämförelse med analytiskt värde) och tillförlitligt resultat.

Vanliga misstag

  • Förlitar sig på det verbala numeriska resultatet av AI. LLM kan felaktigt förutsäga utmatningen av koden i huvudet. Kör alltid koden.
  • Testar inte med känd situation. Kod som inte testar med ett enkelt exempel som du vet svaret på kan innehålla dolda fel.
  • Kontrollerar inte konvergens. Att hålla sig till en enda stegräkning döljer om resultatet är numeriskt tillförlitligt.
  • Reflekterar inte enheterna i koden. Att inte kommentera enheten av variabler uppmanar till tysta 10ⁿ-fel.
  • Ignorera biblioteksversion/antaganden. Ibland kan AI producera ett obefintligt funktionsnamn eller föråldrad syntax; Det märks när man kör det.
Varning: Innan du lägger in ett numeriskt resultat i en publikation, uppdrag eller design, testa koden med ett oberoende känt fall och ange resultatet i enheter/beställningar. Även fungerande kod kan beräkna fel fysik; Bara för att koden fungerar betyder det inte att fysiken är korrekt.

Sammanfattningsvis

AI är en kraftfull partner för att översätta fysiska beräkningar till Python-kod; Men siffrorna han ger verbalt är uppskattningar, inte fakta. Det säkra arbetsflödet är tydligt: ​​definiera problemet med dess enheter, låt AI skriva koden men du kör utdata, testa koden med en känd situation, kontrollera konvergens och enhet. Det som är deterministiskt är koden som exekveras; Det är inte en LLM. I nästa enhet kommer vi att flytta denna numeriska grund till simulering av tidsvarierande fysiska system.

Applikationsuppgift

Välj en fysikkalkyl för vilken du känner till den analytiska lösningen (till exempel hastigheten för ett fritt fallande föremål över en tidsperiod eller en enkel bestämd integral). Låt AI:en skriva en Python-kod med mall 1; kör koden själv. Jämför resultatet med det analytiska värde du känner till. Observera sedan hur resultatet beter sig genom att ändra antalet steg eller en parameter. Notera i 5-6 meningar: matchade kodens utdata den verbala förutsägelsen, fanns det ett enhets-/orderproblem?

checklista

  • [ ] Jag klargjorde problemet och enheten för alla variabler.
  • [ ] Jag körde koden skriven av AI själv, jag litade inte på det verbala resultatet.
  • [ ] Jag testade koden med en enkel situation där jag visste svaret.
  • [ ] Jag kontrollerade konvergens eller parameterkänslighet.
  • [ ] Jag angav fysiskt enheten och ordningen för resultatet.
  • [ ] Jag har verifierat att biblioteksfunktionerna jag använder är verkliga och uppdaterade.