Vienība 2 / 11

Aprēķinu un skaitliskās metodes ar Python

Ieguvumi:

  • Iespēja paļauties uz deterministisku izvadi, nevis verbāliem minējumiem, liekot AI pārtulkot fizisko aprēķinu NumPy/SciPy kodā un palaist pašu kodu
  • Spēja pārbaudīt ciparu koda ticamību, pārbaudot to ar vienkāršu situāciju, kuras atbilde ir zināma, un pārbaudot tā konverģenci.
  • Spēja fiziski nodrošināt rezultāta vienību un līmeni, kodā atspoguļojot mainīgās vienības

Daudzas problēmas fizikā nevar atrisināt ar roku: integrālim nav analītiska risinājuma, vienādojumu sistēmas sakne nav atrodama slēgtā formā vai aprēķins ir jāatkārto tūkstošiem reižu. Šeit tiek izmantotas skaitliskās metodes: precīzas formulas vietā dators aprēķina soli pa solim ar aptuvenu, bet kontrolētu precizitāti. Šajā nodaļā jūs uzzināsit, kā izmantot mākslīgo intelektu (AI) kā koda partneri skaitļošanas fizikas aprēķinos, kā pārbaudīt tā radīto kodu un kādos slazdos jums vajadzētu izvairīties. Fiziķa standarta rīki šeit būs Python valoda un NumPy (bibliotēka skaitliskiem masīviem un ātrai matemātikai), kā arī SciPy (bibliotēka zinātniskai skaitļošanai; ietver integrāciju, radikālu atrašanu, optimizāciju).

Kāpēc AI + Python, kāpēc ne ar roku?

Skaitlisko aprēķinu veikšana ar roku ir gan lēna, gan kļūdaini. AI dažu sekunžu laikā var pārvērst jūsu fizisko konstrukciju darbojošā Python kodā. Bet zelta likums šeit ir šāds: AI raksta kodu, jūs palaižat kodu un pārbaudiet rezultātu ar fiziku. AI teiciens "šis kods to dod" ir pareģojums; Faktiski koda palaišana un izvades redzēšana ir deterministisks fakts. LLM var "aprēķināt" savā galvā ierakstītā koda izvadi un pateikt nepareizu skaitli; tā kā, palaižot vienu un to pašu kodu, tas dod pareizo rezultātu. Tāpēc nekad neuzticieties skaitliskajam rezultātam, ko AI mutiski sniedz — palaidiet kodu.

Aprēķinu pamatuzdevumi un AI loma

Meklējumi

Metode/rīks

fiziska pārbaude

noteikts integrālis

scipy.integrate.quad

Robežstāvokļi, dimensiju analīze

vienādojuma sakne

scipy.optimize.brentq

Novietojiet sakni vietā un pārbaudiet, vai tā ir nulle.

Lineāro vienādojumu sistēma

numpy.linalg.solve

Šķīduma ievietošana atpakaļ sistēmā

Atvasinājums (ciparu)

Centrālā atšķirība vai numpy.gradients

Salīdzinājums ar analītisko atvasinājumu

Lielapjoma vektora aprēķins

NumPy masīvi

Vienību un rangu kontrole

AI ļoti labi var ieteikt, kurš no šiem rīkiem ir piemērots, un pareizi noteikt sintaksi (koda rakstīšanas noteikumus). Bet jūs izlemjat, kura metode ir fiziska jēga un rezultāta precizitāte.

Soli pa solim: pārbaudāms skaitlisks aprēķins

1. Noskaidrojiet problēmu un mērvienības. Piemēram: "Aprēķiniet integrāli e^(−x²) no 0 līdz bezgalībai; rezultātam jābūt √π/2 ≈ 0,8862." Paredzamā rezultāta pārrakstīšana (ja tāds ir) atvieglo pārbaudi.

2. Jautājiet AI kodu, bet jūs palaižat izvadi. Kopējiet koda bloku un palaidiet to savā vidē (Jupyter, Colab, vietējā Python).

3. Pārbaude ar zināmu situāciju. Izmēģiniet kodu ar vienkāršu situāciju, uz kuru jūs jau zināt atbildi. Piemēram, pārbaudiet integrālo kodu ar piemēru, kuru zināt ar roku, piemēram, ∫₀¹ x dx = 0,5. Ja kods to norāda pareizi, jūsu pārliecība palielinās.

4. Pārbaudiet konverģenci. Skaitliskajās metodēs, palielinot soļu skaitu, rezultātam vajadzētu tuvoties nemainīgai vērtībai. Ja tas netuvojas, metode nav piemērota.

5. Pārbaudiet vienību un rangu. Vienmēr norādiet skaitlisko rezultātu ar fizisko vienību un secību.

Padoms. Pieprasot kodu no AI, sakiet: “iekļaujiet arī testa līniju, kas salīdzina rezultātu ar zināmu analītisko vērtību”. Tādējādi kods gan veic aprēķinu, gan pārbauda sevi zināmā situācijā. Tas padara kļūdas uzreiz redzamas.

trīs mini futrāļi

1. gadījums — nepareizs mutisks secinājums. Kādam studentam AI lika uzrakstīt integrālo kodu, un AI teica: "šis kods dod aptuveni 1,77". Students palaida kodu: faktiskā izvade bija 0,886. AI bija pieļāvis kļūdu, prognozējot koda izvadi; Kods bija pareizs. Nodarbība: uzticieties kodam, neuzticieties verbālajam minējumam.

2. gadījums — Skaitliskā nestabilitāte. Pētnieks meklēja vienādojuma sakni ar saknes atrašanas kodu, ko uzrakstīja AI. Kods atgrieza sakni, bet, kad pētnieks ielika sakni atpakaļ vienādojumā, rezultāts nebija nulle, bet gan ļoti liels skaitlis. Problēma bija tā, ka sākuma diapazonā nebija saknes; AI pieņēma atbilstošu diapazonu. Pētnieks koriģēja intervālu ar fizisko informāciju un atrada pareizo sakni.

3. gadījums — saņemts apstiprinājums. Inženieris gribēja kodu, kas skaitliski aprēķinātu sijas novirzi zem slodzes. Kods darbojās, bet rezultāts uzrādīja metrus novirzes, kas nav iespējama tērauda sijai. Inženieris pārbaudīja vienības: AI bija izlikušies, ka elastības modulis ir Pa, nevis GPa, trūkst koeficienta 10⁹. Ar vienības korekciju rezultāts samazinājās līdz milimetriem un bija saprātīgs.

Četras kopējamas veidnes

1) Ciparu aprēķins ar validācijas līniju:

Uzrakstiet Python (NumPy/SciPy) kodu, kas veic šādu fizisko aprēķinu: [problēma]. Visus mainīgos deklarēt SI vienībās un vienību norādot ar komentāru rindiņu. Koda beigās pievienojiet pārbaudes rindiņu (apstiprināt vai izdrukāt), kas salīdzina rezultātu ar zināmu analītisko/vienkāršo vērtību. Es palaidīšu kodu; jūs neuzminējat izvadi, vienkārši ierakstiet kodu un paredzamo rangu.

2) Metodes izvēles konsultācija:

Es vēlos skaitliski atrisināt šādu problēmu: [problēma]. Kura SciPy/NumPy funkcija ir piemērota un KĀPĒC? Iesakiet 2 alternatīvas metodes, pierakstiet katras plusus/mīnusus precizitātes un stabilitātes ziņā. Norādiet, kuram kādā fiziskajā situācijā būtu jādod priekšroka.

3) Konverģences pārbaude:

Uzrakstiet Python kodu, kas parāda, kā rezultāts konverģē, palielinot tālāk norādītā skaitliskā aprēķina soļu skaitu (piemēram, N=10, 100, 1000). Izdrukājiet rezultātus tabulā. Ja nav konverģences, vienā teikumā izskaidrojiet tās fizisko/skaitlisko iemeslu. Kods: [šeit]

4) Vienības vadība:

Tālāk esošajā kodā komentējiet katra mainīgā lieluma SI vienību un pārbaudiet, vai gala rezultāta vienība atbilst paredzamajai vienībai (piemēram, metrs, džouls). Ja ir neatbilstība, parādiet, kurā rindā tā atrodas. Kods: [šeit]

Vāja uzvedne / spēcīga uzvedne

Vāji: "Pasakiet šī integrāļa rezultātu: ∫₀^∞ x²·e^(−x) dx"
Rezultāts: AI galvā izspļauj skaitli (varbūt pareizi, varbūt nepareizi); nekas nav izpildāms, nekas nav pārbaudāms.
Strong: "Uzrakstiet Python kodu, kas aprēķina integrāli ∫₀^∞ x²·e^(−x) dx ar scipy.integrate.quad. Pievienojiet apgalvojuma rindiņu, kas salīdzina rezultātu ar šī integrāļa analītisko vērtību 2! = 2. Es izpildīšu kodu."
Rezultāts: izpildāms kods, iebūvēta validācija (salīdzinājums ar analītisko vērtību) un uzticams rezultāts.

Biežas kļūdas

  • Paļaujoties uz AI verbālo skaitlisko rezultātu. LLM var nepareizi paredzēt koda izvadi galvā. Vienmēr palaidiet kodu.
  • Netiek testēts ar zināmu situāciju. Kods, kas netiek pārbaudīts ar vienkāršu piemēru, uz kuru jūs zināt atbildi, var saturēt slēptas kļūdas.
  • Nepārbauda konverģenci. Pieturoties pie viena soļu skaita, tiek noskaidrots, vai rezultāts ir skaitliski ticams.
  • Neatspoguļo kodā norādītās vienības. Mainīgo vienību nekomentēšana rada klusas 10 kļūdas.
  • Bibliotēkas versijas/pieņēmumu ignorēšana. Dažreiz AI var radīt neeksistējošu funkcijas nosaukumu vai novecojušu sintaksi; Tas ir pamanāms, kad to palaižat.
Uzmanību! Pirms skaitliska rezultāta ievietošanas publikācijā, uzdevumā vai dizainā pārbaudiet kodu ar neatkarīgu zināmu gadījumu un norādiet rezultātu vienībās/kārtībās. Pat darba kods, iespējams, aprēķina nepareizu fiziku; Tas, ka kods darbojas, nenozīmē, ka fizika ir pareiza.

Rezumējot

AI ir spēcīgs partneris fizisko aprēķinu tulkošanā Python kodā; Bet skaitļi, ko viņš sniedz mutiski, ir aplēses, nevis fakti. Droša darbplūsma ir skaidra: definējiet problēmu ar tās vienībām, ļaujiet AI rakstīt kodu, bet jūs palaižat izvadi, pārbaudiet kodu zināmā situācijā, pārbaudiet konverģenci un mērvienību. Kas ir deterministisks, ir kods, kas tiek izpildīts; Tā nav LLM. Nākamajā nodaļā mēs pārvietosim šo skaitlisko pamatu uz laika mainīgo fizisko sistēmu simulāciju.

Lietojumprogrammas uzdevums

Izvēlieties fizikas aprēķinu, kuram zināt analītisko risinājumu (piemēram, brīvi krītoša objekta ātrumu noteiktā laika periodā vai vienkāršu noteiktu integrāli). Lieciet AI rakstīt Python kodu ar 1. veidni; palaidiet kodu pats. Salīdziniet rezultātu ar jums zināmo analītisko vērtību. Pēc tam novērojiet, kā rezultāts darbojas, mainot soļu skaitu vai parametru. Piezīme 5-6 teikumos: vai koda izvade atbilda verbālajam pareģojumam, vai bija problēmas ar vienību/sūtījumu?

kontrolsaraksts

  • [ ] Es noskaidroju problēmu un visu mainīgo lielumu vienību.
  • [ ] Es pats palaižu AI rakstīto kodu, es neuzticējos verbālajam rezultātam.
  • [ ] Es pārbaudīju kodu ar vienkāršu situāciju, uz kuru es zināju atbildi.
  • [ ] Es pārbaudīju konverģenci vai parametru jutīgumu.
  • [ ] Es fiziski norādīju rezultāta mērvienību un secību.
  • [ ] Esmu pārliecinājies, ka izmantotās bibliotēkas funkcijas ir reālas un atjauninātas.