Yunit 2 / 11

Pagkalkula at Numerical na Paraan gamit ang Python

Mga nadagdag:

  • Kakayahang umasa sa deterministic na output, hindi verbal guesswork, sa pamamagitan ng pagkakaroon ng AI na magsalin ng pisikal na kalkulasyon sa NumPy/SciPy code at patakbuhin ang code mismo
  • Ability to verify the reliability of a numerical code by testing it with a simple situation whose answer is known and checking its convergence.
  • Kakayahang pisikal na ibigay ang yunit at antas ng resulta sa pamamagitan ng pagpapakita ng mga variable na unit sa code

Maraming mga problema sa pisika ang hindi malulutas sa pamamagitan ng kamay: ang isang integral ay walang analytical na solusyon, ang ugat ng isang sistema ng mga equation ay hindi matatagpuan sa saradong anyo, o ang isang kalkulasyon ay kailangang ulitin ng libu-libong beses. Dito pumapasok ang mga numerical na pamamaraan: sa halip na isang eksaktong formula, ang computer ay nagkalkula ng sunud-sunod na may humigit-kumulang ngunit kinokontrol na katumpakan. Sa unit na ito, matututunan mo kung paano gamitin ang artificial intelligence (AI) bilang isang code partner para sa mga kalkulasyon ng computational physics, kung paano i-verify ang code na ginagawa nito, at kung anong mga bitag ang dapat mong iwasang mahulog. Ang mga karaniwang tool ng physicist dito ay ang wikang Python at NumPy (library para sa mga numerical array at mabilis na matematika) pati na rin ang SciPy (library para sa scientific computing; kasama ang integration, radical finding, optimization).

Bakit AI + Python, bakit hindi sa pamamagitan ng kamay?

Ang pagsasagawa ng mga numerical na kalkulasyon sa pamamagitan ng kamay ay parehong mabagal at madaling magkamali. Maaaring isalin ng AI ang iyong pisikal na konstruksyon sa isang tumatakbong Python code sa loob ng ilang segundo. Ngunit ang ginintuang tuntunin dito ay: Isinulat ng AI ang code, pinapatakbo mo ang code at i-verify ang resulta sa pisika. Ang AI na nagsasabing "ang code na ito ay nagbibigay niyan" ay isang hula; Ang aktwal na pagpapatakbo ng code at nakikita ang output ay isang tiyak na katotohanan. Maaaring "kalkulahin" ng isang LLM ang output ng code na isinulat niya sa kanyang ulo at magsabi ng maling numero; samantalang kapag ang parehong code ay pinapatakbo ay nagbibigay ito ng tamang resulta. Kaya't huwag magtiwala sa numerical na resulta na binibigay ng AI - patakbuhin ang code.

Mga pangunahing gawain sa computational at ang papel ng AI

Paghanap

Paraan/kasangkapan

pisikal na pagpapatunay

tiyak na integral

scipy.integrate.quad

Limitahan ang mga estado, dimensional na pagsusuri

ugat ng equation

scipy.optimize.brentq

Ilagay ang ugat sa lugar at suriin kung ito ay zero.

Sistema ng mga linear na equation

numpy.linalg.solve

Ibalik ang solusyon sa system

Derivative (numeric)

Central difference o numpy.gradient

Paghahambing sa analytical derivation

Bulk na pagkalkula ng vector

Mga array ng NumPy

Kontrol ng yunit at ranggo

Ang AI ay napakahusay sa pagmumungkahi kung alin sa mga tool na ito ang angkop at makuha ang syntax (mga panuntunan sa pagsulat ng code) nang tama. Ngunit magpapasya ka kung aling paraan ang may pisikal na kahulugan at ang katumpakan ng resulta.

Hakbang-hakbang: isang nabe-verify na pagkalkula ng numero

1. Linawin ang problema at mga yunit. Halimbawa: "Kalkulahin ang integral e^(−x²) mula 0 hanggang infinity; ang resulta ay dapat na √π/2 ≈ 0.8862." Ang muling pagsusulat ng inaasahang resulta (kung mayroon man) ay nagpapadali sa pag-verify.

2. Tanungin ang AI para sa code, ngunit pinapatakbo mo ang output. Kopyahin ang code block at patakbuhin ito sa iyong sariling kapaligiran (Jupyter, Colab, native Python).

3. Pagsubok sa isang kilalang sitwasyon. Subukan ang code na may simpleng sitwasyon kung saan alam mo na ang sagot. Halimbawa, subukan ang isang integral code na may halimbawang alam mo sa pamamagitan ng kamay, gaya ng ∫₀¹ x dx = 0.5. Kung ibinigay ito ng code nang tama, tataas ang iyong kumpiyansa.

4. Suriin para sa convergence. Sa mga numerical na pamamaraan, kapag tinaasan mo ang bilang ng mga hakbang, ang resulta ay dapat lumapit sa isang pare-parehong halaga. Kung hindi ito lumalapit, ang pamamaraan ay hindi angkop.

5. Suriin ang yunit at ranggo. Palaging ibigay ang numerical na resulta kasama ang pisikal na unit at order.

Tip: Kapag humihiling ng code mula sa AI, sabihing "magsama rin ng linya ng pagsubok na naghahambing sa resulta sa isang kilalang analytical value." Kaya, ang code ay parehong gumaganap ng pagkalkula at sumusubok sa sarili nito sa isang kilalang sitwasyon. This makes errors immediately visible.

tatlong mini case

Kaso 1 — Maling oral na konklusyon. Ang isang mag-aaral ay may AI na sumulat ng integral code at sinabi ng AI na "ang code na ito ay nagbibigay ng humigit-kumulang 1.77." Pinatakbo ng mag-aaral ang code: ang aktwal na output ay 0.886. Nagkamali ang AI sa paghula sa output ng code; Tama ang code. Lesson: magtiwala sa code, huwag magtiwala sa verbal guess.

Case 2 — Numerical instability. Hinanap ng isang mananaliksik ang ugat ng isang equation na may root finding code na isinulat ng AI. Ang code ay nagbalik ng ugat, ngunit nang ibalik ng mananaliksik ang ugat sa equation, ang resulta ay hindi zero kundi isang napakalaking bilang. Ang problema ay ang panimulang hanay ay hindi naglalaman ng ugat; Ipinagpalagay ng AI ang naaangkop na hanay. Itinama ng mananaliksik ang pagitan ng pisikal na impormasyon at natagpuan ang tamang ugat.

Case 3 — Nakuha ang kumpirmasyon. Gusto ng isang inhinyero ng isang code na kinakalkula ayon sa numero ang pagpapalihis ng isang sinag sa ilalim ng pagkarga. Ang code ay gumana, ngunit ang resulta ay nagpakita ng mga metro ng pagpapalihis-imposible para sa isang steel beam. Sinuri ng inhinyero ang mga yunit: ang AI ay nagkunwaring may elastic modulus sa Pa sa halip na GPa, na kulang ng factor na 10⁹. Sa pagwawasto ng unit, bumaba ang resulta sa millimeters at makatwiran.

Apat na maaaring kopyahin na mga template

1) Numeric na pagkalkula na may linya ng pagpapatunay:

Sumulat ng Python (NumPy/SciPy) code na nagsasagawa ng sumusunod na pisikal na pagkalkula: [problema]. Ipahayag ang lahat ng mga variable sa mga yunit ng SI at tukuyin ang yunit na may linya ng komento. Magdagdag ng check line (igiit o i-print) sa dulo ng code na naghahambing sa resulta sa isang kilalang analytical/simpleng halaga. Patakbuhin ko ang code; hindi mo hulaan ang output, isulat lamang ang code at ang inaasahang ranggo.

2) Konsultasyon sa pagpili ng paraan:

Gusto kong lutasin ang sumusunod na problema ayon sa numero: [problem]. Aling function ng SciPy/NumPy ang angkop at BAKIT? Magmungkahi ng 2 alternatibong pamamaraan, isulat ang mga kalamangan / kahinaan ng bawat isa sa mga tuntunin ng katumpakan at katatagan. Sabihin kung alin ang dapat piliin kung saang pisikal na sitwasyon.

3) Pagsusuri ng convergence:

Sumulat ng Python code na nagpapakita kung paano nagtatagpo ang resulta sa pamamagitan ng pagtaas ng bilang ng mga hakbang ng sumusunod na pagkalkula ng numero (hal. N=10, 100, 1000). I-print ang mga resulta sa isang talahanayan. Kung walang convergence, ipaliwanag ang pisikal/numerical na dahilan para dito sa isang pangungusap. Code: [dito]

4) Kontrol ng unit:

Sa code sa ibaba, magkomento sa SI unit ng bawat variable at tingnan kung ang unit ng huling resulta ay pare-pareho sa inaasahang unit (hal. meter, joule). Kung mayroong hindi pagkakapare-pareho, ipakita kung saang linya ito. Code: [dito]

Mahinang prompt / Malakas na prompt

Mahina: "Sabihin ang resulta ng integral na ito: ∫₀^∞ x²·e^(−x) dx"
Resulta: Ang AI ay naglalabas ng isang numero sa ulo nito (marahil tama, maaaring mali); walang maipapatupad, walang mabe-verify.
Strong: "Isulat ang Python code na kinakalkula ang integral ∫₀^∞ x²·e^(−x) dx na may scipy.integrate.quad. Magdagdag ng assert line na nagkukumpara sa resulta sa analytic value ng integral na ito, 2! = 2. I will run the code."
Resulta: Executable code, built-in na validation (paghahambing sa analytical value) at maaasahang resulta.

Mga karaniwang pagkakamali

  • Umaasa sa verbal numerical na resulta ng AI. Maaaring maling hulaan ng LLM ang output ng code sa head. Palaging patakbuhin ang code.
  • Hindi pagsubok sa alam na sitwasyon. Code na hindi sumusubok gamit ang isang simpleng halimbawa kung saan alam mong ang sagot ay maaaring naglalaman ng mga nakatagong error.
  • Hindi sinusuri ang convergence. Ang pagdidikit sa isang bilang ng hakbang ay nakakubli kung ang resulta ay maaasahan ayon sa bilang.
  • Not reflecting the units in the code. Ang hindi pagkomento sa unit ng mga variable ay nag-iimbita ng mga tahimik na 10ⁿ na error.
  • Hindi pinapansin ang bersyon/pagpapalagay ng library. Minsan ang AI ay maaaring gumawa ng hindi umiiral na pangalan ng function o hindi na ginagamit na syntax; It is noticeable when you run it.
Babala: Bago maglagay ng numerical na resulta sa isang publikasyon, pagtatalaga, o disenyo, subukan ang code gamit ang isang independiyenteng kilalang kaso at ibigay ang resulta sa mga unit/order. Kahit na gumaganang code ay maaaring kinakalkula ang maling pisika; Dahil lang sa gumagana ang code ay hindi nangangahulugang tama ang pisika.

Sa buod

Ang AI ay isang makapangyarihang kasosyo sa pagsasalin ng mga pisikal na kalkulasyon sa Python code; Ngunit ang mga numerong binibigay niya sa salita ay mga pagtatantya, hindi mga katotohanan. Ang ligtas na daloy ng trabaho ay malinaw: tukuyin ang problema sa mga yunit nito, ipasulat sa AI ang code ngunit pinapatakbo mo ang output, subukan ang code sa isang kilalang sitwasyon, suriin ang convergence at unit. Ano ang deterministic ay ang code na pinaandar; Ito ay hindi isang LLM. Sa susunod na yunit, ililipat natin ang numerical na pundasyong ito sa simulation ng mga pisikal na system na nagbabago-panahon.

Gawain ng aplikasyon

Pumili ng physics calculus kung saan alam mo ang analytical solution (halimbawa, ang bilis ng isang free-falling object sa loob ng isang yugto ng panahon o isang simpleng definite integral). Ipasulat sa AI ang isang Python code na may template 1; patakbuhin ang code sa iyong sarili. Ihambing ang resulta sa analytical value na alam mo. Pagkatapos ay obserbahan kung paano kumikilos ang resulta sa pamamagitan ng pagbabago ng bilang ng mga hakbang o isang parameter. Tandaan sa 5-6 na pangungusap: tumugma ba ang output ng code sa verbal prediction, nagkaroon ba ng isyu sa unit/order?

checklist

  • [ ] Nilinaw ko ang problema at ang yunit ng lahat ng variable.
  • [ ] Pinatakbo ko mismo ang code na isinulat ng AI, hindi ako nagtiwala sa resulta ng pandiwang.
  • [ ] Sinubukan ko ang code gamit ang isang simpleng sitwasyon kung saan alam ko ang sagot.
  • [ ] Sinuri ko ang convergence o sensitivity ng parameter.
  • [ ] Pisikal kong ibinigay ang unit at pagkakasunud-sunod ng resulta.
  • [ ] Na-verify ko na ang mga function ng library na ginagamit ko ay totoo at napapanahon.