Indholdsfortegnelse:

Sådan laver du et numerisk integrationsprogram i Python: 10 trin
Sådan laver du et numerisk integrationsprogram i Python: 10 trin

Video: Sådan laver du et numerisk integrationsprogram i Python: 10 trin

Video: Sådan laver du et numerisk integrationsprogram i Python: 10 trin
Video: Casio FX-83GT CW and Casio FX-85GT CW Calculators fully manul 2024, Juli
Anonim
Sådan laver du et numerisk integrationsprogram i Python
Sådan laver du et numerisk integrationsprogram i Python

Dette er en vejledning i, hvordan du opretter og kører et program, der vil evaluere bestemte integraler ved hjælp af en numerisk integrationsalgoritme. Jeg har opdelt trinene i 3 sektioner: forståelse af algoritmen, der skal bruges til at lave programmet, kodning af programmet ved hjælp af Python -programmeringssprog og kørsel af programmet. Denne vejledning er beregnet til nogen, der muligvis hurtigt skal lave en lommeregner for at evaluere bestemte integraler, eller måske har brug for algoritmen til brug i et større program. Grundlæggende beregningskendskab forventes, men relevant matematisk information gennemgås. Kendskab til programmering forventes ikke, men er nyttig, da jeg kun kort beskriver, hvordan programmeringen rent faktisk fungerer.

Det skal du bruge:

En personlig computer med adgang til internettet

Trin 1: Forståelse af algoritmen Del 1: Den deciderede integral og dens anvendelse

Forståelse af algoritmen Del 1: Den deciderede integral og dens anvendelse
Forståelse af algoritmen Del 1: Den deciderede integral og dens anvendelse

Jeg vil antage, at du ved lidt om, hvad et integral er i forbindelse med grundlæggende beregning. Integraler er vigtige, fordi de giver dig mulighed for at opsummere en række værdier ganget med en uendelig lille længde; dette er nyttigt på mange områder inden for finansiering, talteori, fysik, kemi samt mange andre områder. Dette program giver dig dog kun mulighed for at beregne arealet under en kurve i et begrænset interval, eller med andre ord, det evaluerer ikke antidderivater-en meget mere kraftfuld algoritme er nødvendig for det. Denne algoritme er nyttig, hvis du skal evaluere en bestemt integral i et større program, der er angivet mod noget andet, eller hvis du vil kontrollere dit svar for bestemte integraler, der er udført i hånden.

En grundlæggende bestemt integral repræsenterer arealet under en kurve defineret af en funktion f.eks. f (x). For en bestemt integral søger vi området mellem to punkter (mærket henholdsvis a og b). På billedet er den turkise region det område, jeg refererer til, og ligningen til bestemmelse af dette er også vist i den region. Funktionen vist på billedet er vilkårlig.

Trin 2: Forståelse af algoritmen Del 2: Numerisk tilnærmelse

Forståelse af algoritmen Del 2: Numerisk tilnærmelse
Forståelse af algoritmen Del 2: Numerisk tilnærmelse

En computer har brug for et bredt sæt instruktioner til beregning af det område under en vilkårlig funktion, der fungerer for enhver funktion, så analysemetoder, du måske kender til, nytter ikke noget, da de er for særlige. En metode til at beregne integraler omtrent, som en computer faktisk kan håndtere, udføres ved at fylde interesseområdet med en brugerdefineret mængde rektangler med samme bredde og variabel højde og derefter opsummere alle rektanglets områder. De stive egenskaber ved rektangler vil efterlade noget af det samlede areal uberørt, hvorfor dette betragtes som en tilnærmelse; Men jo flere rektangler du kan trænge ind mellem grænserne (a og b), desto mere præcis vil tilnærmelsen være, da de uberørte områder bliver mere sparsomme. Da en computer udfører opgaven, kan du indstille antallet af rektangler i den ønskede region til at være et meget stort antal, hvilket gør tilnærmelsen ekstremt præcis. På det understøttende billede skal du forestille dig, at hvert rektangel i det angivne område er lige bredt. Jeg gjorde mit bedste for at få dem til lige bredde i Microsoft Paint, men gjorde ikke det bedste stykke arbejde.

Trin 3: Forståelse af algoritmen Del 3: midtpunktsreglen

Forståelse af algoritmen Del 3: midtpunktsreglen
Forståelse af algoritmen Del 3: midtpunktsreglen

Denne regel angiver, hvordan rektanglerne laves og bruges i tilnærmelsen. Hvert rektangel ud af "N" rektangler skal have en lige bredde, Δx, men hvert nte rektangel kan ikke være nøjagtigt det samme: Den varierende faktor er højden, der varierer som funktionen evalueres på et bestemt tidspunkt. Midtpunktsreglen får sit navn fra, at du vurderer højden af hvert rektangel som f (x_n), hvor "x_n" er det respektive midtpunkt i hvert rektangel, som det er anbragt til venstre eller højre for rektanglet. Brug af midtpunktet er som at implementere et gennemsnit, der vil gøre tilnærmelsen mere præcis, end hvis du skulle bruge højre eller venstre. Det understøttende billede for dette trin opsummerer, hvordan midtpunktsreglen defineres matematisk.

Trin 4: Oprettelse af programmet Del 1: Download af en Python Compiler/Editor

Nu hvor du forstår den algoritme, der skal implementeres, er det et spørgsmål om at få en computer til at udføre beregningen for dig. Det første skridt til at fortælle en computer, hvad de skal gøre, er at få værktøjerne til at gøre det. Denne algoritme kan kodes på ethvert sprog; For enkelthed vil dette program blive kodet på Python -sproget. For at kommandere din computer til at udføre operationer med Python, skal du bruge en editor, der tager instruktioner skrevet på det sprog, som derefter vil blive samlet til maskinsprog, som din computer kan forstå, så den kan udføre de opgaver, du fortæller den at udføre. I disse dage er en redaktør og kompilator normalt integreret, men det er ikke altid tilfældet. Du kan bruge enhver editor/compiler, du er fortrolig med, men jeg vil vise dig, hvordan du får min personlige favorit til Python: Canopy. Hvis du allerede har en editor/kompilator, kan du springe disse trin over.

  1. Gå til
  2. Klik på Download Canopy
  3. Klik på download -knappen, der svarer til dit operativsystem

    Overførslen starter automatisk

  4. Følg instillationsinstruktionerne efter start af udførelsesfilen
  5. Kør programmet
  6. Klik på "Editor" i programmets hovedmenu
  7. Klik på "opret en ny fil" i midten af skærmen

Fra dette tidspunkt skulle du se et tomt hvidt vindue med en markør, der ligner et grundlæggende tekstbehandlingsdokument. Du er nu klar til at begynde at kode den numeriske integrationsalgoritme til løsning af bestemte integraler. De igangværende trin vil have et kodestykke, som du vil kopiere og en forklaring på, hvad dette kodestykke gør for programmet som helhed.

Trin 5: Oprettelse af programmet Del 2: Import af funktioner og definition af variabler

Oprettelse af programmet Del 2: Import af funktioner og definition af variabler
Oprettelse af programmet Del 2: Import af funktioner og definition af variabler

Kopier koden på billedet.

For ethvert program, du måtte finde på at kode, vil der være variabler. En variabel er et navn givet til en værdi, der vil blive opereret, og som kan ændre sig. På de fleste programmeringssprog (hvis ikke alle) skal du initialisere en variabel, før programmet kan foretage ændringer i det. I tilfælde af dette program har jeg navngivet variablerne "N", "a" og "b". Disse værdier repræsenterer henholdsvis antallet af iterationer (AKA antal rektangler), nedre grænse og øvre grænse. Du kan navngive disse alt hvad du vil, men for at matche formlerne i "Forståelse af algoritmen, del 3: midtpunktsreglen", er det bedst at beholde dem på samme måde. Bemærk, at de ikke bare er indstillet til en bestemt værdi. Dette er fordi de er lavet input, at når programmet køres, kan brugeren af programmet definere, hvad værdien vil være. Teksten i anførselstegn, efter inputkommandoen, vises, når du kører programmet og fortæller dig, hvilken type værdi du skal indtaste. Du vil også bemærke, at "int" og "float" bruges før inputbetegnelserne. Disse udtryk fortæller computeren, hvilken type variabel denne værdi vil være. Et "int" er et helt tal, og et "float" er en flydende værdi (dvs. en decimal). Det bør være klart, hvorfor disse er udpeget som sådanne.

Enhver tekst, der er til stede efter et "#", er en kommentar, der giver programmereren mulighed for at følge koden på en humanistisk måde; Jeg har givet visse kommentarer i min kode, som du vil kopiere, men tilføj gerne kommentarer, der hjælper dig specifikt. Programmet vil ikke læse noget med et "#" før det som en kommando.

Den del af koden, der læser "fra matematisk import *", fortæller programmet at importere en række matematiske funktioner, der kan bruges uden at skulle programmere dem i dig selv. "*" Betyder bare "alt". Læs denne del af koden som: fra matematikbiblioteket importer alle funktionerne. Dette giver dig mulighed for at bruge matematiske funktioner som sinus, cosinus, log, exp osv. Disse funktioner kan matematisk integreres i koden.

Trin 6: Oprettelse af programmet Del 3: Oprettelse af en funktion til integration

Oprettelse af programmet Del 3: Oprettelse af en funktion til integration
Oprettelse af programmet Del 3: Oprettelse af en funktion til integration

Kopier koden på billedet under den forrige kode.

ADVARSEL: Dette afsnit er tæt, og jeg vil opklare nogle ting, der potentielt kan være forvirrende. Når man taler om programmering, dukker ordet "funktion" meget op. Dette udtryk dukker også meget op, når du taler om matematik. Så fra dette tidspunkt, når jeg taler om en funktion i programmeringsforstand, vil jeg skrive "Python -funktion", og når jeg taler om den matematiske funktion, vil jeg sige "matematisk funktion". På et tidspunkt vil vi bruge en Python -funktion som repræsentation for den pågældende matematiske funktion.

Dette næste kodestykke er programmets hjerte. Her defineres en Python -funktion, der udfører algoritmen til numerisk integration ved hjælp af midtpunktsreglen. "def Integrate (N, a, b)" lyder som: definer en funktion kaldet "Integrer", der accepterer variablerne "N," "a" og "b" og returnerer området under kurven (den matematiske funktion) som også er defineret inden for "Integrer" Python -funktionen. Du kan kalde denne Python -funktion alt, når du laver kodningen, men det er fornuftigt at kalde den integreret, da det er en funktion, der faktisk integrerer en matematisk funktion.

På dette tidspunkt er det værd at kommentere, hvordan Python adskiller kodeblokke. En blok blok er en hel sektion, der udfører en bestemt opgave. Forskellige programmeringssprog vil have bestemte måder at skelne mellem disse "blokke". For Python kendetegnes en blok ved fordybninger: hver opgaveudførende sektion har sin egen indrykning, og der kan være indrykkede blokke inden for andre indrykkede blokke. Dette repræsenterer opgaver inden for opgaver og fortæller i det væsentlige i hvilken rækkefølge koden skal udføres. I tilfælde af den definerede Python -funktion "Integrer" er alt inden for denne funktion indrykket i en blok, hvilket adskiller de opgaver, der vil blive udført inden for denne funktion. Der er indrykkede dele i denne Python -funktion, der også udfører deres egne opgaver. Det går som følger: en kommando (opgave) er angivet, et kolon følger kommandoen, og hvad kommandoen gør er indrykket nedenunder.

Umiddelbart efter at have defineret "integrer" Python -funktionen, vil du definere en anden Python -funktion kaldet f (x). Dette repræsenterer den matematiske funktion, der vil blive integreret. For hver anden matematisk funktion, du vil integrere, bliver du nødt til at gå til denne programlinje for at ændre den (i modsætning til de variabler, der er defineret, når programmet køres). Hver Python -funktion har en returværdi, det er hvad funktionen returnerer, når du kaster den en værdi. I dette tilfælde er den indkastede værdi "x", og dette "x" udtryk vil tage værdien af det, du nogensinde smider det-det er en midlertidig værdi.

Derefter fungerer en for-loop som den summering, der er defineret i formlerne i afsnittet "Forståelse af algoritmen" i denne vejledning. Denne summering kræver et par flere variabler, hvoraf den ene fungerer som returværdi for hele "Integrer" Python -funktionen. Før for-loop har jeg betegnet disse variabler som "værdi" og "værdi2". For-loopens opgave er at iterere over en række værdier for en udpeget variabel, som bekvemt kan defineres inden for-loop-kommandoen; i dette tilfælde er denne variabel "n." Det område, som iterationen sker for, er 1 til N+1. Du skal bemærke, at summeringen defineret i de førnævnte formler kun spænder fra 1 til N. Vi definerer det på denne måde, fordi Python -sproget tæller hver itereret værdi, der starter fra nul, så vi er i det væsentlige nødt til at flytte værdiområdet for at passe til vores ønskede rækkevidde. Forløkken tillader derefter summering af alle rektanglets højder sammen og gemmer denne værdi i den variabel, som jeg kaldte "værdi". Dette ses i det stykke kode, der vises som: værdi += f (a +((n- (1/2))*((b-a)/N))).

Derfra udnytter det næste stykke af koden variablen kaldet "value2", som derefter tildeles summen af alle højderne i hvert rektangel ganget med den standardiserede bredde af hvert rektangel-dette er vores endelige svar, som vi ønsker vises af vores program, og er dermed returværdien af "Integrer" Python -funktionen.

Trin 7: Oprettelse af programmet Del 4: Visning af svaret

Oprettelse af programdelen 4: Visning af svaret
Oprettelse af programdelen 4: Visning af svaret

Kopier koden på billedet under den forrige kode.

Nu hvor svaret kan opnås via "Integrer" Python -funktionen, ønsker vi at kunne vise det. Dette er bare et spørgsmål om at sætte de værdier, der blev indtastet af brugeren ("N", "a" og "b") i "Integrer" Python -funktionen og udskrive den på skærmen. Denne kommando vises på linje 21, og er virkelig alt, hvad du skal gøre for at afslutte dette trin. Koden på linje 19 og 20 er der bare for at "smukke" outputtet af hele programmet. "print (" ………………………. ")" adskiller programmets inputafsnit fra output -sektionen, og "print (" Her er dit svar: ")" er bare en betegnelse, som svaret vil udskrives efter den tekstlinje.

Trin 8: Kørsel af programmet Del 1: Kørsel af programmet som det er

Kører programmet Del 1: Kører programmet som det er
Kører programmet Del 1: Kører programmet som det er

Hvis du ikke bruger Canopy, behøver du sandsynligvis slet ikke at følge dette trin overhovedet, og det kan kræve forskellige procedurer at køre programmet. I Canopy, før du kan køre programmet, skal du gemme det. Filtypen for et Python-program er en.py-fil-den gemmes automatisk som denne. Vælg, hvor du vil have filen gemt, så vil du kunne køre programmet.

Kører programmet:

  1. Tryk på den grønne knap, der ligner en "afspilningsknap" placeret på værktøjslinjen lige over, hvor dit filnavn vises (se billedet).
  2. Programmet kører derefter i bundskærmen i editoren, der er kendt som Canopy-dataanalysemiljøet. Forudsat at du kopierede prompterne, som jeg skrev dem, skulle du se bunden af Canopy-dataanalysemiljøet prompten: "Indtast, hvor mange gange du vil summere (flere gange = mere præcist):." (se billede)
  3. Indtast en værdi for, hvor mange gange du vil udføre iterationen, dvs. 10000 (hvor mange rektangler du vil skubbe ind i dit område), og tryk derefter på enter.
  4. Der vises flere prompts med udsagn, der burde være de velkendte inputprompts, du kodede ind i programmet i trin 5. Udfyld dem korrekt som i nummer 3 ovenfor.
  5. Integralet bør evalueres, og et resultat skal vises.

Hvis du har kodet programmet som vist på de foregående billeder, har du netop integreret f (x) = x^2 over nogle grænser. Integrationen af x^2 er let at evaluere i hånden, derfor bør du kontrollere og sikre dig, at programmet gav et meget tæt svar på den korrekte analyseværdi, der er bestemt for hånd. Når jeg kører programmet med værdierne N = 10000, a = 0 og b = 10, får jeg svaret 333.33333249999964. Det korrekte analytiske svar er 333,333. Dette er utrolig præcist og hurtigt. Du har i det væsentlige presset 10.000 rektangler mellem 0 og 10 på x -aksen og brugt dem til at tilnærme området under kurven x^2!

Trin 9: Kørsel af programmet Del 2: Integrering af andre matematiske funktioner

Kører programmet Del 2: Integrering af andre matematiske funktioner
Kører programmet Del 2: Integrering af andre matematiske funktioner

I det foregående trin, hvis du har fulgt trofast, har du integreret f (x) = x^2. Det er ikke den eneste matematiske funktion, dette program kan integrere. Husk fra trin 5, at du importerede matematikbiblioteket med Python -funktioner til programmet. Dette giver dig mulighed for at bruge mere komplicerede matematiske funktioner, der kan integreres. Lad os give en et skud. Selvfølgelig kan du bruge enhver funktion, du ønsker, men jeg vil yderligere demonstrere nøjagtigheden af denne kode ved at integrere en bestemt matematisk funktion, der giver en velkendt værdi, når den integreres over et bestemt område. Denne funktion er f (x) = Sin [x]. Denne matematiske funktion vises i det første ledsagende billede, plottet fra 0 til 2π, og interesseområdet er skraveret i turkis. Der er lige meget positivt areal, da der er negativt område i dette interval, så hvis du summerer det samlede areal, skal du få nul. Lad os se, om dette rent faktisk sker:

At sætte den matematiske funktion f (x) = Sin [x] i programmet:

  1. Inden programmet køres igen, skal du under kommentaren "#type din funktion efter returnering" skrive: sin (x), hvor x ** 2 i øjeblikket er placeret. (se billedet).
  2. Kør programmet ved at trykke på den grønne afspilningsknap igen.
  3. Skriv 10000 for N -værdien (hvor mange gange du vil summe).
  4. sæt "0" ind for den nedre grænse.
  5. Sæt 6.2832 ind for den øvre grænse (ca. 2π).
  6. Se hvilken værdi du får.

Da jeg gjorde dette, endte jeg med at få en værdi på 1.079e-10: dette svarer til.0000000001079, som virkelig er tæt på nul, så det ser ud til at være nøjagtigt og viser, at algoritmen håndterer negativt område tilstrækkeligt.

Trin 10: Kørsel af programmet Del 3: Udvidelse af programmet

På dette tidspunkt er du færdig: du har en fungerende bestemt integreret algoritme kodet op i Python, der kører problemfrit og giver meget præcise svar. Dette program kan dog forbedres. Jeg er ikke en programmør, og jeg har minimal erfaring med Python. Faktisk var jeg nødt til at opdatere mig selv om at bruge Python til at fuldføre denne vejledning, men det skulle give dig tillid til, at Python er et så let sprog at lære. Min pointe er, at du kan udvide dette program ved at gøre det mere effektivt, måske implementere noget GUI og gøre det mere brugervenligt.

Mine tanker om at udvide programmet:

  • Implementer en grafisk brugergrænseflade, der giver dig mulighed for at køre programmet uden at bruge Canopy interaktive dataanalysemiljø
  • Gør det sådan, at den matematiske funktion, der skal integreres, ikke behøver at være indtastet inde i programmet, men kan indtastes, når programmet er kørt (jeg forsøgte oprindeligt at gøre dette, men kunne ikke finde ud af det).
  • Definer en "Integrer" Python -funktion, så det tager f (x) -funktionen, som den er beregnet til at have f (x) -funktionen defineret i den.

Dette er blot nogle eksempler på forbedringsområder, men jeg garanterer, at der er mange andre områder, det kan forbedres. Så jeg forlader dette trin som et eksempel på de fejl, dette program har og måske en øvelse til alle, der ønsker at forbedre programmet yderligere.

Anbefalede: