Senti il ​​calcolo con il tuo senso di programmazione

Pubblicato: 2021-07-08

Credo che le persone che sanno programmare abbiano la capacità di comprendere concetti più complicati del calcolo. Uno dei motivi per cui ci sono molti programmatori di talento là fuori che stanno ancora lottando con il calcolo non è che sia difficile. È principalmente perché ci è stato insegnato nel modo sbagliato (insieme a molti altri argomenti).

Se hai fatto un po' di programmazione nella tua vita, anche alcuni esercizi giocattolo come la generazione di numeri primi, potresti aver già fatto cose simili che accadono nel calcolo ma non hai mai avuto la possibilità di relazionarti.

L'obiettivo di questo scritto non è né insegnarti calcolo né programmazione, ma aiutarti a collegare alcuni punti.

Tra un minuto arriverò alla parte di codifica. Ma permettetemi di fornire un breve background prima di ciò.

Tasso di cambio

Il calcolo differenziale parla del "tasso di cambiamento". Proviamo a capire cosa significa.

Per una variazione in una variabile (x), la velocità di variazione di una funzione è semplicemente la variazione nella funzione divisa per la variazione in x. Visualizza con i numeri reali:

Considera 2 punti x=2 e x=6 e una funzione y=f(x) = x².

Inoltre, considera dx = distanza tra questi 2 punti nell'asse x. E dy è la distanza tra y valori per questi x valori.

Allora, il tasso di variazione in y da x=2 a x=6 è

Calcolo immagine 01

Derivato

Ora — la derivata dy/dx è la velocità di variazione di y per una variazione infinitamente piccola di x. Poiché questa distanza (6–2=4) non è infinitamente piccola, nemmeno vicina, non possiamo chiamare l'equazione di cui sopra una derivata. Quindi, scegliamo un numero più piccolo, 0,1, per ora.

Quando x = 0, y = x² = 0² = 0.

Vicino più vicino alla direzione positiva, x = 0,1. Lì y diventa 0,1² = 0,01.

Così,

Calcolo immagine 02

Proviamo ancora una volta. Vicino più vicino di 0,1 alla direzione positiva, x = 0,2. Quindi, y diventa 0,2² = 0,04. Così,

Calcolo immagine 03

Se ripetiamo il processo un paio di volte, ecco cosa otteniamo:

Calcolo immagine 04

Ecco il file excel se desideri giocarci.

dx (che è la nostra distanza immaginaria infinitamente piccola tra 2 punti adiacenti sull'asse x) è 0,1 nel nostro contesto.

x aumenta di conseguenza.

y è semplicemente x².

dy è la distanza tra 2 valori y adiacenti. Ad esempio, quando x= 0,1, la distanza tra la corrente y (0,01 ) e la successiva y (0,04) è 0,03 — quindi, dy è 0,03 a x=0,1.

dy/dx è dy diviso per dx.

dy/dx / x è dy/dx diviso per x.

Notare ora che, all'aumentare di x, l'ultima riga si avvicina a 2, il che significa che la velocità di variazione di x² rispetto a x si avvicina al doppio di x, che è 2x .

Ricordi la derivata di x² rispetto a x? 2 volte! Trovare qualche connessione?

Tempo di codifica

Proviamo le cose nel codice di cui abbiamo discusso finora.

Supponendo che tu abbia già installato Python, nel terminale, esegui:

pip installa matplotlib

Successivamente, esegui il seguente codice Python:

Qui:

x : contenente numeri da 0 a 9.

y : un altro array, ogni elemento è quadrato dell'elemento x corrispondente

dy : un altro array inizializzato con zeri. Metteremo le distanze y in questo array.

dydx : un altro array inizializzato con zeri. Conterrà il valore dy/dx di ogni punto.

dx : Abbastanza ovvio — è la dimensione del passo. Distanza tra 2 numeri consecutivi, che diminuisce all'aumentare di SIZE. Se SIZE = 10, dx = 1. Se SIZE = 100, dx = 0,1.

In primo luogo, stiamo derivando dy per ogni punto. Quindi calcoliamo dydx da esso.

Notare che:

Calcolo immagine 05

Qui stiamo omettendo il primo e l'ultimo valore. Il primo valore di x è 0, che produrrà un errore di divisione zero. E non possiamo calcolare l'ultimo valore di dy/dx poiché non abbiamo l'ultimo valore di dy, perché richiederebbe accanto all'ultimo valore disponibile di y, che non abbiamo qui.

Se tutto va bene, otterrai questo grafico:

Grafico di calcolo

Cosa capisci dalla trama

Come vedi, il grafico si avvicina a 2. Aumenta il valore di SIZE (che significa impostazione inferiore a dx) e osserva come il grafico si avvicina più rapidamente a 2.

Seconda derivata

Ora che sei arrivato fin qui, bastano ancora pochi passi per realizzare la derivata seconda, che ti darà l'intuizione per la derivata di qualsiasi ordine.

Come ricorderete, la derivata seconda è il tasso di variazione della derivata prima rispetto a x. In poche parole: dy/dx nella derivata seconda è come y nella derivata prima.

Eseguiamo le seguenti modifiche al codice sopra:

Dichiara altri 2 array:

d2ydx2 : che rappresenterà la seconda derivata:

Calcolo immagine 06

distance_dydx: per rappresentare la distanza tra il valore dy/dx tra 2 punti adiacenti

Ecco il codice completo per la derivata seconda:

Dopo aver calcolato dydx nel ciclo for, eseguiamo un altro ciclo per calcolare la derivata seconda. Con una codifica saggia, potremmo calcolare la derivata seconda nello stesso ciclo (prova come esercizio), ma li ho tenuti separati qui per chiarezza.

Inoltre, nota che:

Calcolo immagine 07

Come abbiamo fatto nella derivata prima, anche qui stiamo omettendo alcuni valori. Gli ultimi 2 valori vengono omessi poiché il secondo dall'ultimo richiederebbe l'ultimo valore di "derivata prima", che non siamo riusciti a calcolare (poiché non avevamo il valore y richiesto per esso, come descritto sopra). Significa che dobbiamo omettere gli ultimi 3 valori nel caso della 3a derivata?🤔 — sta a te trovarlo.

Ecco il grafico di output:

Grafico di calcolo 02

Cosa vediamo qui?

Come sai dal liceo:

Calcolo immagine 08

Ora, come puoi vedere dal codice sopra, la derivata seconda rimane per lo più costante e se continui ad aumentare SIZE - si avvicina a 2!

Perché il tasso di cambiamento è importante

Ti starai chiedendo:

— Perché superiamo tutti questi brutti guai? Quali informazioni utili otteniamo dal tasso di variazione o derivato?

— Perché non possiamo semplicemente seguire il tasso di cambio per qualsiasi importo? Perché solo infinitamente piccolo? Quali informazioni otteniamo dal tasso di variazione rispetto a valori infinitamente piccoli , che non si possono trovare dal tasso di variazione rispetto a valori maggiori?

— Questa cosa infinitamente piccola sembra un hack? Abbiamo lavorato con alcuni piccoli numeri sopra, ma sicuramente non infinitamente piccoli.

Se mi permetto di andare avanti, te ne andresti vedendo la lunghezza di questo articolo e non saresti arrivato così lontano. Forse affronteremo queste domande un altro giorno 😀.