Taula de continguts:

Com fer un programa d’integració numèrica a Python: 10 passos
Com fer un programa d’integració numèrica a Python: 10 passos

Vídeo: Com fer un programa d’integració numèrica a Python: 10 passos

Vídeo: Com fer un programa d’integració numèrica a Python: 10 passos
Vídeo: UPC - APRÈN MATLAB - Integració Numèrica 01 2024, Desembre
Anonim
Com fer un programa d’integració numèrica a Python
Com fer un programa d’integració numèrica a Python

Aquest és un tutorial sobre com crear i executar un programa que avaluarà integrals definides mitjançant un algorisme d'integració numèrica. He dividit els passos en 3 seccions: comprendre l'algoritme que s'utilitzarà per fer el programa, codificar el programa mitjançant el llenguatge de programació Python i executar el programa. Aquest tutorial està pensat per a algú que necessiti fer una calculadora ràpidament per avaluar integrals definides, o potser necessiti l'algorisme per utilitzar-lo en un programa a escala més gran. S'esperen coneixements bàsics de càlcul, però es revisa informació matemàtica rellevant. No s’espera coneixement de la programació, però és útil, ja que només descric breument com funciona la programació.

Què necessiteu:

Un ordinador personal amb accés a Internet

Pas 1: Entendre l'algorisme Part 1: la integral definida i el seu ús

Comprensió de l'algorisme Part 1: la integral definida i el seu ús
Comprensió de l'algorisme Part 1: la integral definida i el seu ús

Suposaré que coneixeu una mica el que és una integral en el context del càlcul bàsic. Les integrals són importants perquè permeten sumar una matriu de valors multiplicats per una longitud infinitesimal; això és útil en moltes àrees de finances, teoria de nombres, física, química, així com en molts altres camps. Tanmateix, aquest programa només us permetrà calcular l'àrea sota una corba per a un interval finit, o dit d'una altra manera, no avalua antidirivades: per a això és necessari un algorisme molt més potent. Aquest algorisme és útil si necessiteu avaluar una integral definida en un programa més gran especificat cap a una altra cosa, o si voleu comprovar la vostra resposta si hi ha integrals definides fetes a mà.

Una integral definida bàsica representa l'àrea sota una corba definida per una funció, per exemple. f (x). Per a una integral definida, busquem l'àrea entre dos punts (etiquetats a i b respectivament). A la imatge, la regió de color turquesa és la zona a què em refereixo, i l’equació per determinar-la també es mostra en aquesta regió. La funció que es mostra a la imatge és arbitrària.

Pas 2: entendre l'algorisme Part 2: aproximació numèrica

Comprensió de l'algorisme Part 2: Aproximació numèrica
Comprensió de l'algorisme Part 2: Aproximació numèrica

Un ordinador necessita un ampli conjunt d’instruccions per calcular aquesta àrea sota una funció arbitrària que funcionarà per a qualsevol funció, de manera que els mètodes analítics que potser coneixeu no serveixen de res, ja que són massa particulars. Un mètode per calcular aproximadament integrals, que un ordinador pot gestionar, es realitza omplint l'àrea d'interès amb una quantitat definida per l'usuari de rectangles d'ample igual i alçada variable i sumant totes les àrees del rectangle. Les propietats rígides dels rectangles deixaran intacta part de l’àrea total, per això es considera una aproximació; tanmateix, com més rectangles es puguin amuntegar entre els límits (a i b), més precisa serà l'aproximació, ja que les regions intactes es tornen més escasses. Com que l'ordinador realitzarà la tasca, podeu establir que el nombre de rectangles de la regió desitjada sigui molt gran, cosa que fa que l'aproximació sigui molt precisa. A la imatge de suport, imagineu que cada rectangle de l'àrea designada té la mateixa amplada. Vaig fer tot el possible per aconseguir que la mateixa amplada fos a Microsoft Paint, però no vaig fer la millor feina.

Pas 3: entendre l'algorisme Part 3: la regla del punt mitjà

Comprensió de l'algorisme Part 3: la regla del punt mitjà
Comprensió de l'algorisme Part 3: la regla del punt mitjà

Aquesta regla designa com es fabriquen i s’utilitzen els rectangles en l’aproximació. Cada rectangle de rectangles "N" ha de tenir una amplada igual, Δx, però cada enèsim rectangle no pot ser exactament el mateix: el factor variable és l'alçada que varia segons la funció avaluada en un punt determinat. La regla del punt mig rep el seu nom pel fet que esteu avaluant l'alçada de cada rectangle com a f (x_n), on "x_n" és el punt central respectiu de cada rectangle, tal com es posa a l'esquerra o a la dreta del rectangle. Utilitzar el punt mitjà és com implementar una mitjana que farà que l’aproximació sigui més precisa que si fes servir la dreta o l’esquerra. La imatge de suport d’aquest pas resumeix com es defineix matemàticament la regla del punt mig.

Pas 4: Creació del programa Part 1: Descàrrega d'un compilador / editor Python

Ara que enteneu l’algoritme que cal implementar, es tracta d’aconseguir que un ordinador us faci el càlcul. El primer pas per dir a l’ordinador què ha de fer és aconseguir les eines per fer-ho. Aquest algorisme es pot codificar en qualsevol idioma; per simplificar, aquest programa es codificarà en el llenguatge Python. Per demanar al vostre ordinador que faci operacions amb Python, necessitareu un editor que prengui instruccions escrites en aquest idioma que després es compilaran en llenguatge de màquina que el vostre ordinador pugui entendre perquè pugui realitzar les tasques que li digueu que faci. En l'actualitat, normalment s'integra un editor i un compilador, però no sempre és així. Podeu utilitzar qualsevol editor / compilador que us agradi, però us mostraré com obtenir el meu favorit personal per a Python: Canopy. Si ja teniu un editor / compilador, podeu ometre aquests passos.

  1. Aneu a
  2. Feu clic a Baixa Canopy
  3. Feu clic al botó de baixada corresponent al vostre sistema operatiu

    La descàrrega s'iniciarà automàticament

  4. Seguiu les instruccions d'instil·lació després d'iniciar el fitxer d'execució
  5. Executeu el programa
  6. Feu clic a "Editor" al menú principal del programa
  7. Feu clic a "crea un fitxer nou" al centre de la pantalla

A partir d’aquest moment hauríeu de veure una finestra blanca en blanc amb un cursor semblant a un document bàsic de processament de textos. Ja esteu a punt per començar a codificar l'algorisme d'integració numèrica per resoldre integrals definides. Els passos següents tindran un fragment de codi que copiarà i una explicació del que fa aquest fragment per al programa en general.

Pas 5: creació del programa Part 2: importació de funcions i definició de variables

Creació del programa Part 2: importació de funcions i definició de variables
Creació del programa Part 2: importació de funcions i definició de variables

Copieu el codi de la imatge.

Hi haurà variables per a qualsevol programa que us trobeu codificant. Una variable és un nom donat a un valor que serà operat i que pot canviar. En la majoria de llenguatges de programació (si no tots), heu d'inicialitzar una variable abans que el programa pugui fer-hi canvis. En el cas d'aquest programa, he anomenat les variables "N", "a" i "b". Aquests valors representen el nombre d'iteracions (AKA nombre de rectangles), límit inferior i límit superior respectivament. Podeu anomenar-los com vulgueu, però per coincidir amb les fórmules donades a "Comprendre l'algorisme Part 3: La regla del punt mitjà", és millor mantenir-les iguals. Tingueu en compte que no només es defineixen en un valor específic. Això es deu al fet que es fan entrades que, quan s'executa el programa, l'usuari del programa pot definir quin serà el valor. El text entre cometes, després de l'ordre d'entrada, apareix quan executeu el programa indicant-vos quin tipus de valor escriviu. També notareu que s'utilitzen "int" i "float" abans de les designacions d'entrada. Aquests termes indiquen a l’ordinador quin tipus de variable serà aquest valor. Un "int" és un enter i un "float" és un valor de coma flotant (és a dir, un decimal). Ha de quedar clar per què es designen com a tals.

Qualsevol text present després d'un "#" és un comentari que permet al programador seguir el codi d'una manera humanista; He fet alguns comentaris al meu codi que copiaràs, però no dubtis a afegir comentaris que t’ajudin específicament. El programa no llegirà res amb un "#" abans com a ordre.

La porció de codi que es llegeix "des de la importació matemàtica *" indica al programa que importi una sèrie de funcions matemàtiques que es puguin utilitzar sense haver de programar-les en un mateix. El "*" només significa "tot". Llegiu aquesta part del codi com: a la biblioteca de matemàtiques importeu totes les funcions. Això us permet utilitzar funcions matemàtiques com sinus, cosinus, log, exp, etc. Aquesta funció es pot integrar matemàticament dins del codi.

Pas 6: Creació del programa Part 3: Creació d'una funció per a la integració

Creació del programa Part 3: Creació d'una funció per a la integració
Creació del programa Part 3: Creació d'una funció per a la integració

Copieu el codi de la imatge a sota del codi anterior.

ADVERTÈNCIA: aquesta secció és densa i vull aclarir algunes coses que poden resultar confuses. Quan es parla de programació, apareix molt la paraula "funció". Aquest terme també apareix molt quan parleu de matemàtiques. Així doncs, a partir d’aquest moment, quan parlo d’una funció en el sentit de la programació, escriuré "Funció Python" i, quan parlo de la funció matemàtica, diré "funció matemàtica". En algun moment utilitzarem una funció Python com a representació de la funció matemàtica en qüestió.

Aquest següent fragment de codi és el cor del programa. Aquí es defineix una funció Python que realitza l'algoritme d'integració numèrica mitjançant la regla del punt mig. "def Integrate (N, a, b)" es diu així: defineix una funció anomenada "Integrate" que accepta les variables "N", "a" i "b" i retorna l'àrea sota la corba (la funció matemàtica) que també es defineix dins de la funció Python "Integrar". Podeu anomenar aquesta funció Python qualsevol cosa quan feu la codificació, però té sentit anomenar-la integrada, ja que és una funció que de fet integra una funció matemàtica.

En aquest punt val la pena comentar com Python segrega blocs de codi. Un bloc de codi és tota una secció que realitza una determinada tasca. Els diferents llenguatges de programació tindran formes designades per distingir aquests "blocs". Per a Python, un bloc es distingeix per sagnats: cada secció que realitza tasques té el seu propi sagnat i hi pot haver blocs sagnats dins d'altres blocs sagnats. Això representa les tasques dins de les tasques i, bàsicament, indica l'ordre en què cal executar el codi. En el cas de la funció Python definida "Integrar", tot allò dins d'aquesta funció s'indenta en un bloc, distingint així les tasques que s'executaran dins d'aquesta funció. Hi ha parts sagnades dins d'aquesta funció Python que també realitzen les seves pròpies tasques. Segueix el següent: s’estableix una ordre (tasca), dos punts segueixen l’ordre i el que fa l’ordre és sagnat a sota.

Immediatament després de definir la funció Python "integra", definireu una altra funció Python anomenada f (x). Això representa la funció matemàtica que s’integrarà. Per a cada funció matemàtica que vulgueu integrar, haureu d'anar a aquesta línia de programa per canviar-la (a diferència de les variables que es defineixen quan s'executa el programa). Cada funció Python tindrà un valor de retorn, això és el que retorna la funció quan li llanceu un valor. En aquest cas, el valor introduït és "x", i aquest terme "x" prendrà el valor del que el llanceu; és un valor temporal.

A continuació, un bucle for actua com la suma definida a les fórmules de la secció "Comprensió de l'algorisme" d'aquest tutorial. Aquesta suma requereix un parell de variables més, una de les quals actuarà com a valor de retorn de tota la funció Python "Integrar". Abans del bucle for, he designat aquestes variables com a "valor" i "valor2". la tasca del bucle for és iterar en un interval de valors per a una variable designada, que es pot definir convenientment dins de l'ordre for-loop; en aquest cas, aquesta variable és "n". L'interval en què es produeix la iteració és d'1 a N + 1. Heu de fixar-vos que la suma definida a les fórmules esmentades només oscil·la entre 1 i N. La definim d'aquesta manera perquè el llenguatge Python compta cada valor iterat a partir de zero, de manera que bàsicament hem de canviar l'interval dels valors per ajustar-los al que desitgeu. abast. El bucle for permet llavors sumar totes les altures del rectangle junt i emmagatzema aquest valor a la variable que he anomenat "valor". Això es veu al fragment de codi que apareix com a: valor + = f (a + ((n- (1/2)) * ((b-a) / N))).

A partir d’aquí, la següent peça del codi utilitza la variable anomenada "valor2", que s'assigna a la suma de totes les altures de cada rectangle multiplicat per l'amplada estandarditzada de cada rectangle. Aquesta és la nostra resposta final que volem que mostra el nostre programa i, per tant, és el valor de retorn de la funció Python "Integrar".

Pas 7: Creació del programa Part 4: Visualització de la resposta

Creació del programa Part 4: Visualització de la resposta
Creació del programa Part 4: Visualització de la resposta

Copieu el codi de la imatge a sota del codi anterior.

Ara que la resposta es pot obtenir mitjançant la funció Python "Integrar", volem poder mostrar-la. Això només és qüestió de posar els valors introduïts per l'usuari ("N", "a" i "b") a la funció Python "Integrar" i imprimir-los a la pantalla. Aquesta ordre es mostra a la línia 21 i és realment tot el que heu de fer per acabar aquest pas. El codi de les línies 19 i 20 només hi és per "millorar" la sortida de tot el programa. "print (" ………………………. ")" separa la secció d'entrada del programa de la secció de sortida i "print (" Aquí teniu la vostra resposta: ")" és només una designació de la resposta s’imprimeix després d’aquesta línia de text.

Pas 8: Execució del programa Part 1: Execució del programa tal qual

Execució del programa Part 1: Execució del programa tal qual
Execució del programa Part 1: Execució del programa tal qual

Si no utilitzeu Canopy, és probable que ni tan sols hàgiu de seguir aquest pas i que executar el programa pot requerir diferents procediments. A Canopy, abans de poder executar el programa, haureu de desar-lo. El tipus de fitxer per a un programa Python és un fitxer.py, que es desa automàticament. Trieu on voleu que es desi el fitxer i podreu executar el programa.

Execució del programa:

  1. Feu clic al botó verd que sembla un "botó de reproducció" situat a la barra d'eines just a sobre del lloc on apareix el vostre nom de fitxer (consulteu la imatge).
  2. A continuació, el programa s'executarà a la pantalla inferior de l'editor, que es coneix com a entorn d'anàlisi de dades Canopy. Suposant que heu copiat les sol·licituds tal com les he escrit, hauríeu de veure a la part inferior de l'entorn d'anàlisi de dades de Canopy l'indicatiu: "Introduïu quantes vegades voleu sumar (més vegades = més precís):." (consulteu la imatge)
  3. Introduïu un valor per quantes vegades voleu fer la iteració, és a dir, 10000 (quants rectangles voleu introduir a la vostra àrea) i, a continuació, premeu Intro.
  4. Apareixeran més indicacions amb sentències que haurien de ser les indicacions d'entrada familiars que heu codificat al programa al pas 5. Empleneu-les adequadament tal com es mostra al número 3 anterior.
  5. S'ha d'avaluar la integral i ha d'aparèixer un resultat.

Si heu codificat el programa tal com es mostra a les imatges anteriors, acabeu d'integrar f (x) = x ^ 2 en alguns límits. La integral de x ^ 2 és fàcil d’avaluar a mà, per tant, heu de comprovar i assegurar-vos que el programa donés una resposta molt propera al valor analític correcte determinat manualment. Quan executo el programa amb els valors N = 10000, a = 0 i b = 10, obtinc la resposta 333.33333249999964. La resposta analítica correcta és 333.333. Això és increïblement precís i ràpid. Essencialment, heu exprimit 10.000 rectangles entre 0 i 10 a l'eix x i els heu utilitzat per aproximar l'àrea sota la corba x ^ 2.

Pas 9: Execució del programa Part 2: Integració d'altres funcions matemàtiques

Execució del programa Part 2: Integració d'altres funcions matemàtiques
Execució del programa Part 2: Integració d'altres funcions matemàtiques

Al pas anterior, si heu seguit fidelment, heu integrat f (x) = x ^ 2. Aquesta no és l'única funció matemàtica que pot integrar aquest programa. Recordeu des del pas 5 que vau importar la matriu de biblioteca matemàtica de funcions de Python al programa. Això us permet utilitzar funcions matemàtiques més complicades que es poden integrar. Fem una oportunitat. Per descomptat, podeu utilitzar qualsevol funció que vulgueu, però demostraré a més la precisió d’aquest codi mitjançant la integració d’una funció matemàtica concreta que doni un valor ben conegut quan s’integri en un interval determinat. Aquesta funció és f (x) = Sin [x]. Aquesta funció matemàtica es mostra a la primera imatge adjunta, representada de 0 a 2π, i l'àrea d'interès està ombrejada en color turquesa. Hi ha una quantitat igual d’àrea positiva que d’àrea negativa en aquest interval, de manera que si sumeu l’àrea total, hauríeu d’obtenir zero. A veure si això passa realment:

Posar la funció matemàtica f (x) = Sin [x] al programa:

  1. Abans d'executar el programa de nou, al comentari "#type your function after return", escriviu: sin (x) on es troba actualment x ** 2. (consulteu la imatge).
  2. Executeu el programa prement el botó de reproducció verd de nou.
  3. Escriviu 10000 per al valor N (quantes vegades voleu sumar).
  4. posa "0" al límit inferior.
  5. Introduïu 6.2832 per al límit superior (aproximadament 2π).
  6. Mireu quin valor obteniu.

Quan vaig fer això, vaig acabar obtenint un valor de 1.079e-10: això equival a.0000000001079, que és realment proper a zero, de manera que sembla ser precís i demostra que l'algorisme maneja adequadament l'àrea negativa.

Pas 10: Execució del programa Part 3: Ampliació del programa

En aquest punt, heu acabat: teniu un algorisme integral definit codificat a Python que funciona sense problemes i que proporciona respostes molt precises. No obstant això, aquest programa es pot millorar. No sóc programador i tinc una experiència mínima amb Python. De fet, em vaig haver de refrescar a l’hora d’utilitzar Python per completar aquest tutorial, però això us hauria de donar confiança que Python és un llenguatge tan fàcil d’aprendre. El meu punt és que podeu ampliar aquest programa fent-lo més eficient, potser implementant alguna interfície gràfica d’usuari i fent-lo més fàcil d’utilitzar.

Els meus pensaments sobre l'ampliació del programa:

  • Implementeu una interfície gràfica d’usuari que us permet executar el programa sense utilitzar l’entorn d’anàlisi de dades interactiu de Canopy
  • Feu que la funció matemàtica que s’integri no s’hagi d’introduir dins del programa, sinó que es pot introduir després d’executar-lo (inicialment intentava fer-ho, però no ho vaig poder esbrinar).
  • Definiu una funció Python "Integrar" de manera que prengui la funció f (x) tal i com es defineix a la funció f (x).

Aquests són només alguns exemples d’àrees de millora, però garanteixo que hi ha moltes altres àrees que es poden millorar. Així que deixo aquest pas com a exemple dels defectes que té aquest programa i potser un exercici per a qualsevol persona que vulgui millorar-lo encara més.

Recomanat: