Unità 2 / 11

Calcolo e metodi numerici con Python

Guadagni:

  • Capacità di fare affidamento su output deterministici, non su congetture verbali, facendo in modo che l'intelligenza artificiale traduca un calcolo fisico in codice NumPy/SciPy ed esegua il codice stesso
  • Capacità di verificare l'attendibilità di un codice numerico testandolo con una situazione semplice di cui si conosce la risposta e verificandone la convergenza.
  • Capacità di fornire fisicamente l'unità e il livello del risultato riflettendo le unità variabili nel codice

Molti problemi di fisica non possono essere risolti manualmente: un integrale non ha soluzione analitica, la radice di un sistema di equazioni non può essere trovata in forma chiusa, oppure un calcolo deve essere ripetuto migliaia di volte. È qui che entrano in gioco i metodi numerici: invece di una formula esatta, il computer calcola passo dopo passo con una precisione approssimativa ma controllata. In questa unità imparerai come utilizzare l'intelligenza artificiale (AI) come partner di codice per i calcoli di fisica computazionale, come verificare il codice che produce e in quali trappole dovresti evitare di cadere. Gli strumenti standard del fisico qui saranno il linguaggio Python e NumPy (libreria per array numerici e matematica veloce) nonché SciPy (libreria per il calcolo scientifico; include integrazione, scoperta radicale, ottimizzazione).

Perché AI + Python, perché non a mano?

L'esecuzione manuale di calcoli numerici è lenta e soggetta a errori. L'intelligenza artificiale può tradurre il tuo costrutto fisico in un codice Python in esecuzione in pochi secondi. Ma la regola d’oro qui è: l’intelligenza artificiale scrive il codice, tu esegui il codice e verifichi il risultato con la fisica. L'IA che dice "questo codice dà quello" è una previsione; In realtà eseguire il codice e vedere l'output è un fatto deterministico. Un LLM potrebbe "calcolare" l'output del codice che ha scritto nella sua testa e dire un numero sbagliato; mentre quando viene eseguito lo stesso codice dà il risultato corretto. Quindi non fidarti mai del risultato numerico fornito verbalmente dall’intelligenza artificiale: esegui il codice.

Compiti computazionali di base e ruolo dell'intelligenza artificiale

Ricerca

Metodo/strumento

verifica fisica

integrale definito

scipy.integrate.quad

Stati limite, analisi dimensionale

radice dell'equazione

scipy.optimize.brentq

Metti la radice in posizione e controlla se è zero.

Sistema di equazioni lineari

numpy.linalg.solve

Rimettere la soluzione nel sistema

Derivato (numerico)

Differenza centrale o numpy.gradient

Confronto con la derivazione analitica

Calcolo vettoriale in blocco

Array NumPy

Controllo di unità e rango

L’intelligenza artificiale è molto brava nel suggerire quale di questi strumenti è appropriato e nel ottenere la sintassi corretta (regole di scrittura del codice). Ma sei tu a decidere quale metodo ha senso fisico e l'accuratezza del risultato.

Passo dopo passo: un calcolo numerico verificabile

1. Chiarire il problema e le unità. Ad esempio: "Calcola l'integrale e^(−x²) da 0 a infinito; il risultato dovrebbe essere √π/2 ≈ 0,8862." Riscrivere il risultato atteso (se presente) semplifica la verifica.

2. Chiedi il codice all'IA, ma esegui l'output. Copia il blocco di codice ed eseguilo nel tuo ambiente (Jupyter, Colab, Python nativo).

3. Prova con una situazione nota. Prova il codice con una situazione semplice di cui conosci già la risposta. Ad esempio, prova un codice integrale con un esempio che conosci a mano, come ∫₀¹ x dx = 0,5. Se il codice lo fornisce correttamente, la tua sicurezza aumenta.

4. Verificare la convergenza. Nei metodi numerici, quando si aumenta il numero di passaggi, il risultato dovrebbe avvicinarsi a un valore costante. Se non si avvicina, il metodo non è adatto.

5. Controlla l'unità e il grado. Fornire sempre il risultato numerico con l'unità fisica e l'ordine.

Suggerimento: quando si richiede il codice all'IA, dire "includi anche una riga di test che confronti il ​​risultato con un valore analitico noto". Pertanto, il codice esegue il calcolo e si testa in una situazione nota. Ciò rende gli errori immediatamente visibili.

tre mini custodie

Caso 1 — Conclusione orale errata. Uno studente ha chiesto all'IA di scrivere un codice integrale e l'AI ha detto "questo codice dà circa 1,77". Lo studente ha eseguito il codice: l'output effettivo è stato 0,886. L’IA aveva commesso un errore nel prevedere l’output del codice; Il codice era corretto. Lezione: fidati del codice, non fidarti delle ipotesi verbali.

Caso 2 — Instabilità numerica. Un ricercatore ha cercato la radice di un'equazione con un codice di ricerca radice scritto dall'intelligenza artificiale. Il codice restituiva una radice, ma quando il ricercatore reinseriva la radice nell'equazione, il risultato non era zero ma un numero molto grande. Il problema era che l'intervallo iniziale non conteneva la radice; L'IA ha assunto la portata appropriata. Il ricercatore ha corretto l'intervallo con informazioni fisiche e ha trovato la radice corretta.

Caso 3 – Conferma ottenuta. Un ingegnere voleva un codice che calcolasse numericamente la deflessione di una trave sotto carico. Il codice ha funzionato, ma il risultato ha mostrato metri di deflessione, impossibili per una trave d'acciaio. L'ingegnere esaminò le unità: l'IA aveva finto di avere il modulo elastico in Pa invece che in GPa, mancando un fattore 10⁹. Con la correzione unitaria il risultato è sceso a millimetri ed è stato ragionevole.

Quattro modelli copiabili

1) Calcolo numerico con riga di validazione:

Scrivi il codice Python (NumPy/SciPy) che esegue il seguente calcolo fisico: [problema]. Dichiara tutte le variabili in unità SI e specifica l'unità con una riga di commento. Aggiungi una riga di controllo (asserzione o stampa) alla fine del codice che confronta il risultato con un valore analitico/semplice noto. Eseguirò il codice; non indovinerai l'output, scrivi semplicemente il codice e il rango previsto.

2) Consultazione sulla scelta del metodo:

Voglio risolvere numericamente il seguente problema: [problema]. Quale funzione SciPy/NumPy è appropriata e PERCHÉ? Suggerisci 2 metodi alternativi, annota i pro/contro di ciascuno in termini di precisione e stabilità. Indicare quale dovrebbe essere preferito in quale situazione fisica.

3) Verifica della convergenza:

Scrivi il codice Python che mostra come converge il risultato aumentando il numero di passaggi del seguente calcolo numerico (es. N=10, 100, 1000). Stampa i risultati in una tabella. Se non c'è convergenza, spiegane il motivo fisico/numerico in una frase. Codice: [qui]

4) Controllo dell'unità:

Nel codice seguente, commenta l'unità SI di ciascuna variabile e controlla se l'unità del risultato finale è coerente con l'unità prevista (ad esempio metro, joule). Se c'è un'incoerenza, mostra in quale riga si trova. Codice: [qui]

Prompt debole / Prompt forte

Debole: "Dì il risultato di questo integrale: ∫₀^∞ x²·e^(−x) dx"
Risultato: l'IA sputa in testa un numero (forse giusto, forse sbagliato); niente di eseguibile, niente di verificabile.
Strong: "Scrivi codice Python che calcola l'integrale ∫₀^∞ x²·e^(−x) dx con scipy.integrate.quad. Aggiungi una riga di assert che confronti il ​​risultato con il valore analitico di questo integrale, 2! = 2. Eseguirò il codice."
Risultato: codice eseguibile, convalida integrata (confronto con valore analitico) e risultato affidabile.

Errori comuni

  • Basandosi sul risultato numerico verbale dell'IA. LLM potrebbe prevedere in modo errato l'output del codice nell'head. Esegui sempre il codice.
  • Non è stato eseguito il test con una situazione nota. Il codice che non viene testato con un semplice esempio di cui si conosce la risposta potrebbe contenere errori nascosti.
  • Non controllare la convergenza. Attenersi a un singolo conteggio dei passi oscura se il risultato è numericamente affidabile.
  • Non riflette le unità nel codice. Non commentare l'unità delle variabili invita a errori silenziosi 10ⁿ.
  • Ignorare la versione/i presupposti della libreria. A volte l'intelligenza artificiale può produrre un nome di funzione inesistente o una sintassi obsoleta; È evidente quando lo esegui.
Attenzione: prima di inserire un risultato numerico in una pubblicazione, un compito o un progetto, testare il codice con un caso noto indipendente e fornire il risultato in unità/ordini. Anche il codice funzionante potrebbe calcolare la fisica sbagliata; Solo perché il codice funziona non significa che la fisica sia corretta.

In sintesi

L'intelligenza artificiale è un potente partner nella traduzione dei calcoli fisici in codice Python; Ma i numeri che fornisce verbalmente sono stime, non fatti. Il flusso di lavoro sicuro è chiaro: definisci il problema con le sue unità, fai scrivere il codice all'IA ma tu esegui l'output, testa il codice con una situazione nota, controlla convergenza e unità. Ciò che è deterministico è il codice che viene eseguito; Non è un LLM. Nella prossima unità sposteremo queste basi numeriche alla simulazione di sistemi fisici variabili nel tempo.

Compito dell'applicazione

Scegli un calcolo fisico di cui conosci la soluzione analitica (ad esempio, la velocità di un oggetto in caduta libera in un periodo di tempo o un semplice integrale definito). Chiedi all'intelligenza artificiale di scrivere un codice Python con il modello 1; esegui tu stesso il codice. Confronta il risultato con il valore analitico che conosci. Quindi osserva come si comporta il risultato modificando il numero di passaggi o un parametro. Nota in 5-6 frasi: l'output del codice corrispondeva alla previsione verbale, c'era un problema di unità/ordine?

lista di controllo

  • [ ] Ho chiarito il problema e l'unità di tutte le variabili.
  • [ ] Ho eseguito io stesso il codice scritto dall'IA, non mi fidavo del risultato verbale.
  • [ ] Ho testato il codice con una situazione semplice di cui conoscevo la risposta.
  • [ ] Ho controllato la convergenza o la sensibilità dei parametri.
  • [ ] Ho fornito fisicamente l'unità e l'ordine del risultato.
  • [ ] Ho verificato che le funzioni di libreria che sto utilizzando siano reali e aggiornate.