Sommario:

Come realizzare un programma di integrazione numerica in Python: 10 passaggi
Come realizzare un programma di integrazione numerica in Python: 10 passaggi

Video: Come realizzare un programma di integrazione numerica in Python: 10 passaggi

Video: Come realizzare un programma di integrazione numerica in Python: 10 passaggi
Video: Workshop Calcolo Numerico - Introduzione a Python per il calcolo scientifico 2024, Dicembre
Anonim
Come realizzare un programma di integrazione numerica in Python
Come realizzare un programma di integrazione numerica in Python

Questo è un tutorial su come creare ed eseguire un programma che valuterà integrali definiti utilizzando un algoritmo di integrazione numerica. Ho diviso i passaggi in 3 sezioni: comprensione dell'algoritmo che verrà utilizzato per creare il programma, codifica del programma utilizzando il linguaggio di programmazione Python ed esecuzione del programma. Questo tutorial è destinato a qualcuno che potrebbe aver bisogno di creare rapidamente una calcolatrice per valutare integrali definiti, o forse ha bisogno dell'algoritmo per l'uso in un programma su larga scala. È prevista una conoscenza di base del calcolo, ma vengono riviste le informazioni matematiche rilevanti. La conoscenza della programmazione non è prevista, ma è utile poiché descrivo solo brevemente come funziona effettivamente la programmazione.

Di cosa avrai bisogno:

Un personal computer con accesso a Internet

Fase 1: Comprensione dell'algoritmo Parte 1: l'integrale definito e il suo utilizzo

Comprensione dell'algoritmo Parte 1: l'integrale definito e il suo utilizzo
Comprensione dell'algoritmo Parte 1: l'integrale definito e il suo utilizzo

Presumo che tu sappia un po' di cosa sia un integrale nel contesto del calcolo di base. Gli integrali sono importanti perché consentono di sommare un array di valori moltiplicato per una lunghezza infinitesimale; questo è utile in molte aree della finanza, della teoria dei numeri, della fisica, della chimica e in molti altri campi. Questo programma, tuttavia, ti consentirà solo di calcolare l'area al di sotto di una curva per un intervallo finito, o in altre parole, non valuta le anti-derivate: per questo è necessario un algoritmo molto più potente. Questo algoritmo è utile se hai bisogno di valutare un integrale definito in un programma più grande specificato verso qualcos'altro, o se vuoi controllare la tua risposta per eventuali integrali definiti fatti a mano.

Un integrale definito di base rappresenta l'area sotto una curva definita da una funzione, ad es. f(x). Per un integrale definito, cerchiamo l'area tra due punti (etichettati rispettivamente con aeb). Nell'immagine, la regione turchese è l'area a cui mi riferisco e l'equazione per determinarla è mostrata anche in quella regione. La funzione mostrata nell'immagine è arbitraria.

Fase 2: Comprensione dell'algoritmo Parte 2: Approssimazione numerica

Comprensione dell'algoritmo Parte 2: Approssimazione numerica
Comprensione dell'algoritmo Parte 2: Approssimazione numerica

Un computer ha bisogno di un ampio set di istruzioni per calcolare quell'area sotto una funzione arbitraria che funzionerà per qualsiasi funzione, quindi i metodi analitici che potresti conoscere non sono utili poiché sono troppo particolari. Un metodo per calcolare approssimativamente gli integrali, che un computer può effettivamente gestire, consiste nel riempire l'area di interesse con una quantità definita dall'utente di rettangoli di uguale larghezza e altezza variabile, quindi sommando tutte le aree del rettangolo. Le proprietà rigide dei rettangoli lasceranno inalterata parte dell'area totale, quindi perché questa è considerata un'approssimazione; tuttavia, più rettangoli puoi stipare tra i confini (aeb), più accurata sarà l'approssimazione poiché le regioni non toccate diventano più rade. Poiché un computer eseguirà l'attività, è possibile impostare il numero di rettangoli nella regione desiderata su un numero molto grande, rendendo l'approssimazione estremamente accurata. Nell'immagine di supporto, immagina che ogni rettangolo nell'area designata sia di uguale larghezza. Ho fatto del mio meglio per renderli di uguale larghezza in Microsoft Paint, ma non ho fatto il miglior lavoro.

Fase 3: Comprensione dell'algoritmo Parte 3: la regola del punto medio

Comprensione dell'algoritmo Parte 3: la regola del punto medio
Comprensione dell'algoritmo Parte 3: la regola del punto medio

Questa regola indica come vengono creati e utilizzati i rettangoli nell'approssimazione. Ogni rettangolo di "N" rettangoli deve avere una larghezza uguale, Δx, ma ogni n-esimo rettangolo non può essere esattamente lo stesso: il fattore variabile è l'altezza che varia al variare della funzione valutata in un certo punto. La regola del punto medio prende il nome dal fatto che stai valutando l'altezza di ciascun rettangolo come f(x_n), dove "x_n" è il rispettivo punto centrale di ciascun rettangolo, posto a sinistra oa destra del rettangolo. Usare il punto medio è come implementare una media che renderà l'approssimazione più accurata che se dovessi usare la destra o la sinistra. L'immagine di supporto per questo passaggio riassume come la regola del punto medio è definita matematicamente.

Passaggio 4: creazione del programma Parte 1: download di un compilatore/editor Python

Ora che hai compreso l'algoritmo che deve essere implementato, si tratta di fare in modo che un computer esegua il calcolo per te. Il primo passo per dire a un computer cosa fare è procurarsi gli strumenti per farlo. Questo algoritmo può essere codificato in qualsiasi lingua; per semplicità, questo programma sarà codificato in linguaggio Python. Per comandare al tuo computer di eseguire operazioni con Python, avrai bisogno di un editor che prenda le istruzioni scritte in quel linguaggio che verranno poi compilate in un linguaggio macchina che il tuo computer può capire in modo che possa eseguire le attività che gli dici di fare. Al giorno d'oggi, di solito sono integrati un editor e un compilatore, tuttavia non è sempre così. Puoi usare qualsiasi editor/compilatore con cui ti senti a tuo agio, ma ti mostrerò come ottenere il mio preferito per Python: Canopy. Se hai già un editor/compilatore, puoi saltare questi passaggi.

  1. Vai su
  2. Fare clic su Scarica copertura
  3. Fai clic sul pulsante di download corrispondente al tuo sistema operativo

    Il download inizierà automaticamente

  4. Segui le istruzioni di instillazione dopo aver avviato il file di esecuzione
  5. Esegui il programma
  6. Fare clic su "Editor" dal menu principale del programma
  7. Fai clic su "crea un nuovo file" al centro dello schermo

Da questo punto dovresti vedere una finestra bianca vuota con un cursore che ricorda un semplice documento di elaborazione testi. Ora sei pronto per iniziare a codificare l'algoritmo di integrazione numerica per risolvere integrali definiti. I passaggi successivi avranno un frammento di codice che copierai e una spiegazione di cosa fa quel frammento per il programma nel suo insieme.

Passaggio 5: creazione del programma Parte 2: importazione di funzioni e definizione di variabili

Creazione del programma Parte 2: importazione di funzioni e definizione di variabili
Creazione del programma Parte 2: importazione di funzioni e definizione di variabili

Copia il codice nell'immagine.

Per qualsiasi programma potresti trovarti a codificare, ci saranno variabili. Una variabile è un nome dato a un valore su cui verrà operato e che può cambiare. Nella maggior parte dei linguaggi di programmazione (se non tutti) è necessario inizializzare una variabile prima che il programma possa modificarla. Nel caso di questo programma ho chiamato le variabili "N", "a," e "b". Questi valori rappresentano rispettivamente il numero di iterazioni (AKA numero di rettangoli), il limite inferiore e il limite superiore. Puoi nominarli come vuoi, ma per far corrispondere le formule fornite in "Capire l'algoritmo, parte 3: la regola del punto medio", è meglio mantenerli gli stessi. Nota che non sono solo impostati su un valore specifico. Questo perché vengono effettuati degli input che, quando il programma viene eseguito, l'utente del programma può definire quale sarà il valore. Il testo tra virgolette, dopo il comando di input, viene visualizzato quando si esegue il programma dicendo che tipo di valore digitare. Si noterà anche che "int" e "float" vengono utilizzati prima delle designazioni di input. Questi termini indicano al computer che tipo di variabile sarà questo valore. Un "int" è un numero intero e un "float" è un valore in virgola mobile (cioè un decimale). Dovrebbe essere chiaro perché questi sono designati come tali.

Qualsiasi testo presente dopo un "#" è un commento che consente al programmatore di seguire il codice in modo umanistico; Ho inserito alcuni commenti nel mio codice che copierai, ma sentiti libero di aggiungere qualsiasi commento che ti aiuti in modo specifico. Il programma non leggerà nulla con un "#" prima di esso come comando.

La parte di codice che legge "from math import *" dice al programma di importare una serie di funzioni matematiche che possono essere utilizzate senza doverle programmare da soli. Il "*" significa semplicemente "tutto". Leggi questa porzione di codice come: dalla libreria matematica importa tutte le funzioni. Ciò consente di utilizzare funzioni matematiche come seno, coseno, log, exp, ecc. Queste funzioni possono essere integrate matematicamente all'interno del codice.

Passaggio 6: creazione del programma Parte 3: creazione di una funzione per l'integrazione

Creazione del programma Parte 3: creazione di una funzione per l'integrazione
Creazione del programma Parte 3: creazione di una funzione per l'integrazione

Copia il codice nell'immagine sotto il codice precedente.

ATTENZIONE: questa sezione è densa e voglio chiarire alcune cose che potrebbero creare confusione. Quando si parla di programmazione, la parola "funzione" compare spesso. Questo termine compare spesso anche quando si parla di matematica. Quindi, da questo punto in poi, quando parlerò di una funzione nel senso della programmazione, scriverò "Funzione Python" e quando parlerò della funzione matematica, dirò "funzione matematica". Ad un certo punto useremo una funzione Python come rappresentazione per la funzione matematica in questione.

Questo prossimo frammento di codice è il cuore del programma. Qui viene definita una funzione Python che esegue l'algoritmo di integrazione numerica utilizzando la regola del punto medio. "def Integrate(N, a, b)" si legge come: definisce una funzione chiamata "Integra" che accetta le variabili "N, " "a, " e "b, " e restituisce l'area sotto la curva (la funzione matematica) che è anche definito all'interno della funzione Python "Integra". Puoi chiamare questa funzione Python qualsiasi cosa quando esegui la codifica, ma ha senso chiamarla integrata poiché è una funzione che integra effettivamente una funzione matematica.

A questo punto vale la pena commentare come Python segrega i blocchi di codice. Un blocco di codice è un'intera sezione che esegue un determinato compito. Diversi linguaggi di programmazione avranno modi designati per distinguere questi "blocchi". Per Python, un blocco si distingue per i rientri: ogni sezione che esegue attività ha il proprio rientro e possono esserci blocchi rientrati all'interno di altri blocchi rientrati. Rappresenta le attività all'interno delle attività e indica essenzialmente l'ordine in cui il codice deve essere eseguito. Nel caso della funzione Python definita "Integra", tutto all'interno di quella funzione è rientrato di un blocco, distinguendo così i compiti che verranno eseguiti all'interno di quella funzione. Ci sono parti rientrate all'interno di questa funzione Python che svolgono anche i propri compiti. Funziona come segue: viene indicato un comando (attività), i due punti seguono il comando e ciò che fa il comando è rientrato sotto.

Immediatamente dopo aver definito la funzione Python "integra", definirai un'altra funzione Python chiamata f(x). Rappresenta la funzione matematica che verrà integrata. Per ogni diversa funzione matematica che si desidera integrare, sarà necessario utilizzare questa riga di programma per modificarla (a differenza delle variabili che vengono definite durante l'esecuzione del programma). Ogni funzione Python avrà un valore di ritorno, questo è ciò che la funzione restituisce quando gli si lancia un valore. In questo caso il valore lanciato è "x", e questo termine "x" prenderà il valore di qualunque cosa tu lo lanci: è un valore temporaneo.

Successivamente, un ciclo for funge da sommatoria definita nelle formule nella sezione "Comprensione dell'algoritmo" di questo tutorial. Questa somma richiede un paio di variabili in più, una delle quali fungerà da valore restituito per l'intera funzione Python "Integra". Prima del ciclo for, ho designato queste variabili come "valore" e "valore2". il compito del ciclo for è di iterare su un intervallo di valori per una variabile designata, che può essere convenientemente definito all'interno del comando ciclo for; in questo caso, quella variabile è "n". L'intervallo per il quale si verifica l'iterazione è compreso tra 1 e N+1. Dovresti notare che la sommatoria definita nelle formule di cui sopra varia solo da 1 a N. La definiamo in questo modo perché il linguaggio Python conta ogni valore iterato a partire da zero, quindi dobbiamo essenzialmente spostare l'intervallo dei valori per adattarlo al nostro desiderato gamma. Il ciclo for consente quindi la somma di tutte le altezze del rettangolo e memorizza quel valore nella variabile che ho chiamato "valore". Questo è visto nel pezzo di codice che si presenta come: valore += f(a+((n-(1/2))*((b-a)/N))).

Da lì, la parte successiva del codice utilizza la variabile chiamata "value2" che viene quindi assegnata alla somma di tutte le altezze di ciascun rettangolo moltiplicate per la larghezza standardizzata di ciascun rettangolo: questa è la nostra risposta finale che vogliamo visualizzato dal nostro programma, ed è quindi il valore di ritorno della funzione Python "Integra".

Passaggio 7: creazione del programma Parte 4: visualizzazione della risposta

Creazione del programma Parte 4: Visualizzazione della risposta
Creazione del programma Parte 4: Visualizzazione della risposta

Copia il codice nell'immagine sotto il codice precedente.

Ora che la risposta può essere ottenuta tramite la funzione Python "Integra", vogliamo essere in grado di visualizzarla. Si tratta solo di inserire i valori immessi dall'utente ("N, " "a, " e "b") nella funzione Python "Integra" e stamparli sullo schermo. Questo comando viene mostrato alla riga 21 ed è davvero tutto ciò che devi fare per completare questo passaggio. Il codice sulle righe 19 e 20 è lì solo per "abbellire" l'output dell'intero programma. "print("……………………….")" separa la sezione di input del programma dalla sezione di output e "print("Ecco la tua risposta: ")" è solo una designazione che la risposta essere stampato dopo quella riga di testo.

Passaggio 8: esecuzione del programma Parte 1: esecuzione del programma così com'è

Esecuzione del programma Parte 1: Esecuzione del programma così com'è
Esecuzione del programma Parte 1: Esecuzione del programma così com'è

Se non stai usando Canopy, probabilmente non hai nemmeno bisogno di seguire questo passaggio e l'esecuzione del programma potrebbe richiedere procedure diverse. In Canopy, prima di poter eseguire il programma, dovrai salvarlo. Il tipo di file per un programma Python è un file.py che viene salvato automaticamente come questo. Scegli dove vuoi salvare il file, quindi sarai in grado di eseguire il programma.

Esecuzione del programma:

  1. Premi il pulsante verde che sembra un "pulsante di riproduzione" situato sulla barra degli strumenti appena sopra il nome del tuo file (fare riferimento all'immagine).
  2. Il programma verrà quindi eseguito nella schermata inferiore dell'editor noto come ambiente di analisi dei dati Canopy. Supponendo che tu abbia copiato i prompt come li ho scritti, dovresti vedere nella parte inferiore dell'ambiente di analisi dei dati di Canopy il prompt: "Inserisci quante volte vuoi sommare (più volte = più accurato):." (fare riferimento all'immagine)
  3. Inserisci un valore per quante volte vuoi eseguire l'iterazione, ad esempio 10000 (quanti rettangoli vuoi inserire nella tua area), quindi premi invio.
  4. Appariranno più richieste con istruzioni che dovrebbero essere le familiari richieste di input che hai codificato nel programma nel passaggio 5. Compilale in modo appropriato proprio come nel numero 3 sopra.
  5. L'integrale dovrebbe essere valutato e dovrebbe apparire un risultato.

Se hai codificato il programma come mostrato nelle immagini precedenti, hai appena integrato f(x) = x^2 oltre alcuni limiti. L'integrale di x^2 è facile da valutare a mano, quindi dovresti controllare e assicurarti che il programma abbia dato una risposta molto vicina al corretto valore analitico determinato a mano. Quando eseguo il programma con i valori N = 10000, a = 0 e b = 10, ottengo la risposta 333.33333249999964. La risposta analitica corretta è 333.333. Questo è incredibilmente preciso e veloce. In pratica hai schiacciato 10.000 rettangoli tra 0 e 10 sull'asse x e li hai usati per approssimare l'area sotto la curva x^2!

Fase 9: Esecuzione del programma Parte 2: Integrazione di altre funzioni matematiche

Esecuzione del programma Parte 2: Integrazione di altre funzioni matematiche
Esecuzione del programma Parte 2: Integrazione di altre funzioni matematiche

Nel passaggio precedente, se hai seguito fedelmente, hai integrato f(x) = x^2. Questa non è l'unica funzione matematica che questo programma può integrare. Ricorda dal passaggio 5 che hai importato l'array della libreria matematica delle funzioni Python nel programma. Ciò consente di utilizzare funzioni matematiche più complicate che possono essere integrate. Diamo una possibilità. Naturalmente, puoi usare qualsiasi funzione desideri, ma dimostrerò ulteriormente l'accuratezza di questo codice integrando una particolare funzione matematica che produce un valore ben noto quando integrato in un determinato intervallo. Quella funzione è f(x) = Sin[x]. Questa funzione matematica viene visualizzata nella prima immagine allegata, tracciata da 0 a 2π, e l'area di interesse è ombreggiata in turchese. C'è una quantità uguale di area positiva come c'è area negativa in questo intervallo, quindi se sommi l'area totale, dovresti ottenere zero. Vediamo se questo accade effettivamente:

Inserendo nel programma la funzione matematica f(x) = Sin[x]:

  1. Prima di eseguire nuovamente il programma, sotto il commento "#type your function after return", digita: sin(x) dove x**2 si trova attualmente. (fare riferimento all'immagine).
  2. Esegui il programma premendo nuovamente il pulsante verde di riproduzione.
  3. Digitare 10000 per il valore N (quante volte si desidera sommare).
  4. inserisci "0" per il limite inferiore.
  5. Metti 6,2832 per il limite superiore (circa 2π).
  6. Guarda che valore ottieni.

Quando l'ho fatto, ho finito per ottenere un valore di 1.079e-10: questo equivale a.0000000001079, che è molto vicino allo zero, quindi sembra essere accurato e mostra che l'algoritmo gestisce adeguatamente l'area negativa.

Passaggio 10: esecuzione del programma Parte 3: espansione del programma

A questo punto hai finito: hai un algoritmo integrale definito funzionante codificato in Python che funziona senza problemi e fornisce risposte molto accurate. Tuttavia, questo programma può essere migliorato. Non sono un programmatore e ho un'esperienza minima con Python. In effetti, ho dovuto rinfrescarmi sull'uso di Python per completare questo tutorial, ma questo dovrebbe darti la certezza che Python è un linguaggio così facile da imparare. Il mio punto è che puoi espandere questo programma rendendolo più efficiente, magari implementando una GUI e rendendolo più facile da usare.

I miei pensieri sull'espansione del programma:

  • Implementa un'interfaccia utente grafica che ti permetta di eseguire il programma senza utilizzare l'ambiente interattivo di analisi dei dati di Canopy
  • Fai in modo che la funzione matematica da integrare non debba essere inserita all'interno del programma, ma possa essere inserita dopo l'esecuzione del programma (inizialmente stavo provando a farlo, ma non riuscivo a capirlo).
  • Definisci una funzione Python "Integra" in modo che prenda la funzione f(x) invece di avere la funzione f(x) definita al suo interno.

Questi sono solo alcuni esempi di aree di miglioramento, ma garantisco che ci sono molte altre aree che possono essere migliorate. Quindi lascio questo passaggio come esempio dei difetti che questo programma ha e forse un esercizio per chiunque voglia migliorare ulteriormente il programma.

Consigliato: