Kazalo:

Kako narediti program numerične integracije v Pythonu: 10 korakov
Kako narediti program numerične integracije v Pythonu: 10 korakov

Video: Kako narediti program numerične integracije v Pythonu: 10 korakov

Video: Kako narediti program numerične integracije v Pythonu: 10 korakov
Video: Григорий Хайтин: сложность, метабиология, Гёдель, холодный синтез 2024, November
Anonim
Kako narediti program za numerično integracijo v Pythonu
Kako narediti program za numerično integracijo v Pythonu

To je vadnica o tem, kako ustvariti in zagnati program, ki bo ovrednotil določene integrale z uporabo algoritma numerične integracije. Korake sem razdelil v 3 razdelke: razumevanje algoritma, ki bo uporabljen za izdelavo programa, kodiranje programa z uporabo programskega jezika Python in zagon programa. Ta vadnica je namenjena nekomu, ki bo morda moral hitro narediti kalkulator za oceno določenih integralov ali pa morda potrebuje algoritem za uporabo v večjem programu. Pričakuje se osnovno znanje računanja, vendar se pregledajo ustrezne matematične informacije. Poznavanje programiranja ni pričakovano, je pa koristno, saj le na kratko opišem, kako programiranje dejansko deluje.

Kaj boste potrebovali:

Osebni računalnik z dostopom do interneta

1. korak: Razumevanje algoritma 1. del: Določeni integral in njegova uporaba

Razumevanje algoritma 1. del: Določeni integral in njegova uporaba
Razumevanje algoritma 1. del: Določeni integral in njegova uporaba

Predvidevam, da veste malo o tem, kaj je integral v kontekstu osnovnega računa. Integrali so pomembni, ker omogočajo seštevanje niza vrednosti, pomnoženih z neskončno majhno dolžino; to je uporabno na številnih področjih financ, teorije števil, fizike, kemije, pa tudi na mnogih drugih področjih. Ta program pa vam bo omogočil le izračun območja pod krivuljo za omejen interval, ali z drugimi besedami, ne ocenjuje anti-derivatov-za to je potreben veliko močnejši algoritem. Ta algoritem je uporaben, če morate oceniti določen integral v večjem programu, ki je določen za kaj drugega, ali če želite v svojem odgovoru preveriti morebitne ročno določene integrale.

Osnovni določeni integral predstavlja površino pod krivuljo, ki jo definira funkcija npr. f (x). Za določen integral iščemo območje med dvema točkama (označeno z a oziroma b). Na sliki je turkizno območje območje, na katerega se nanašam, in enačba za določanje tega je prikazana tudi na tem območju. Na sliki prikazana funkcija je poljubna.

2. korak: Razumevanje algoritma 2. del: Numerično približevanje

Razumevanje algoritma 2. del: Numerični približek
Razumevanje algoritma 2. del: Numerični približek

Računalnik potrebuje širok nabor navodil za izračun tega območja pod poljubno funkcijo, ki bo delovala za katero koli funkcijo, zato analitične metode, ki jih poznate, niso uporabne, ker so preveč posebne. Eden od načinov približnega izračunavanja integralov, ki ga računalnik dejansko lahko obvlada, je izvedba tako, da področje, ki nas zanima, napolnimo z uporabniško določeno količino pravokotnikov enake širine in spremenljive višine, nato pa povzamemo vsa področja pravokotnika. Toge lastnosti pravokotnikov bodo pustile del celotne površine nedotaknjene, zato se to šteje za približek; več pravokotnikov pa lahko vstavite med meje (a in b), natančnejši bo približek, saj bodo nedotaknjena območja bolj redka. Ker bo nalogo opravil računalnik, lahko nastavite število pravokotnikov v želenem območju na zelo veliko število, zaradi česar je približevanje izjemno natančno. Na podporni sliki si predstavljajte, da je vsak pravokotnik na označenem območju enake širine. Potrudil sem se, da so v programu Microsoft Paint enake širine, vendar nisem opravil najboljšega.

3. korak: Razumevanje algoritma 3. del: pravilo vmesne točke

Razumevanje algoritma 3. del: pravilo vmesne točke
Razumevanje algoritma 3. del: pravilo vmesne točke

To pravilo določa, kako so pravokotniki izdelani in uporabljeni v približku. Vsak pravokotnik iz "N" pravokotnikov mora imeti enako širino, Δx, vendar vsak n -ti pravokotnik ne more biti popolnoma enak: variabilni faktor je višina, ki se spreminja glede na funkcijo, ovrednoteno na določeni točki. Pravilo vmesne točke dobi ime po dejstvu, da ocenjujete višino vsakega pravokotnika kot f (x_n), kjer je "x_n" ustrezna sredinska točka vsakega pravokotnika, ki se nahaja levo ali desno od pravokotnika. Uporaba sredine je kot uvedba povprečja, zaradi česar bo približek natančnejši, kot če bi uporabili desno ali levo. Podporna slika za ta korak povzema, kako je pravilo srednje točke matematično opredeljeno.

4. korak: Ustvarjanje programa 1. del: Prenos prevajalnika/urejevalnika Python

Zdaj, ko razumete algoritem, ki ga je treba implementirati, morate računalnik izvesti za vas. Prvi korak, da računalniku poveste, kaj naj naredi, je pridobivanje orodij za to. Ta algoritem je lahko kodiran v katerem koli jeziku; zaradi poenostavitve bo ta program kodiran v jeziku Python. Če želite računalniku ukazati, da izvaja operacije s programom Python, potrebujete urejevalnik, ki sprejme navodila, napisana v tem jeziku, ki bodo nato prevedena v strojni jezik, ki ga računalnik razume, da lahko opravlja naloge, ki mu jih naročite. V današnjem času sta urejevalnik in prevajalnik običajno integrirana, vendar to ni vedno tako. Uporabite lahko kateri koli urejevalnik/prevajalnik, ki vam ustreza, vendar vam bom pokazal, kako pridobiti mojega najljubšega za Python: Canopy. Če že imate urejevalnik/prevajalnik, lahko te korake preskočite.

  1. Pojdite na
  2. Kliknite Download Canopy
  3. Kliknite gumb za prenos, ki ustreza vašemu operacijskemu sistemu

    Prenos se bo samodejno začel

  4. Po zagonu izvršilne datoteke sledite navodilom za vkapanje
  5. Zaženite program
  6. V glavnem meniju programa kliknite "Urejevalnik"
  7. Na sredini zaslona kliknite »ustvari novo datoteko«

Od te točke bi morali videti prazno belo okno s kazalko, ki spominja na osnovni dokument za obdelavo besedil. Zdaj ste pripravljeni na kodiranje algoritma numerične integracije za reševanje določenih integralov. Nadaljevalni koraki bodo vsebovali delček kode, ki ga boste kopirali, in razlago, kaj ta delček naredi za program kot celoto.

5. korak: Ustvarjanje programa 2. del: Uvoz funkcij in definiranje spremenljivk

Ustvarjanje programa 2. del: Uvoz funkcij in definiranje spremenljivk
Ustvarjanje programa 2. del: Uvoz funkcij in definiranje spremenljivk

Kopirajte kodo na sliki.

Za kateri koli program, ki ga boste morda kodirali, bodo spremenljivke. Spremenljivka je ime vrednosti, ki bo operirana in se lahko spremeni. V večini programskih jezikov (če ne v vseh) morate spremeniti spremenljivko, preden jo lahko program spremeni. V primeru tega programa sem spremenljivke poimenoval "N", "a" in "b." Te vrednosti predstavljajo število ponovitev (število pravokotnikov AKA), spodnjo in zgornjo mejo. Lahko jih poimenujete karkoli želite, vendar se ujemajo s formulami, navedenimi v "Razumevanje algoritma, 3. del: pravilo vmesne točke", zato je najbolje, da ostanejo enaki. Upoštevajte, da niso nastavljeni samo na določeno vrednost. To je zato, ker so vneseni, da lahko uporabnik programa ob zagonu programa določi, kakšna bo vrednost. Besedilo v narekovajih se po ukazu za vnos prikaže, ko zaženete program in vam pove, kakšno vrsto vrednosti morate vnesti. Opazili boste tudi, da se pred oznakami vnosa uporabljata "int" in "float". Ti izrazi povedo računalniku, kakšno vrsto spremenljivke bo ta vrednost. "Int" je celo število, "float" pa je vrednost s plavajočo vejico (to je decimalka). Jasno bi moralo biti, zakaj so označeni kot taki.

Vsako besedilo, ki je prisotno po "#", je komentar, ki programerju omogoča, da sledi kodi na humanističen način; V kodo sem vnesel določene pripombe, ki jih boste kopirali, vendar lahko dodate kakršne koli pripombe, ki vam bodo v pomoč. Program ne bo prebral ničesar z "#" kot ukaz.

Del kode, ki se glasi "from math import *", pove programu, da uvozi niz matematičnih funkcij, ki jih je mogoče uporabiti, ne da bi jih morali programirati sami. "*" Pomeni samo "vse". Ta del kode preberite kot: iz matematične knjižnice uvozite vse funkcije. To vam omogoča uporabo matematičnih funkcij, kot so sinus, kosinus, dnevnik, izraz itd. Te funkcije je mogoče matematično vključiti v kodo.

6. korak: Ustvarjanje programa 3. del: Ustvarjanje funkcije za integracijo

Ustvarjanje programa 3. del: Ustvarjanje funkcije za integracijo
Ustvarjanje programa 3. del: Ustvarjanje funkcije za integracijo

Kopirajte kodo na sliki pod prejšnjo kodo.

OPOZORILO: Ta razdelek je gost in želim razčistiti nekatere stvari, ki bi lahko bile zmedene. Ko govorimo o programiranju, se beseda "funkcija" veliko pojavi. Ta izraz se veliko pojavlja tudi, ko govorite o matematiki. Torej, od takrat naprej, ko govorim o funkciji v programskem smislu, bom napisal "Python funkcija", in ko bom govoril o matematični funkciji, bom rekel "matematična funkcija". Na neki točki bomo funkcijo Python uporabili kot predstavitev zadevne matematične funkcije.

Naslednji del kode je srce programa. Tu je definirana funkcija Python, ki izvaja algoritem numerične integracije s pravilom srednjih točk. "def Integrate (N, a, b)" se bere kot: definirajte funkcijo, imenovano "Integrate", ki sprejema spremenljivke "N", "a," in "b", in vrne območje pod krivuljo (matematična funkcija) ki je definiran tudi v okviru funkcije "Integrate" Python. To funkcijo Python lahko pri kodiranju pokličete karkoli, vendar je smiselno, da jo pokličete integracija, saj gre za funkcijo, ki resnično vključuje matematično funkcijo.

Na tem mestu je vredno komentirati, kako Python ločuje bloke kode. Blok kode je celoten odsek, ki opravlja določeno nalogo. Različni programski jeziki bodo imeli določene načine za razlikovanje teh "blokov". Za Python se blok odlikuje z vdolbinami: vsak razdelek, ki opravlja naloge, ima svojo zamik, v drugih zamaknjenih blokih pa so lahko zamikani bloki. To predstavlja naloge v nalogah in v bistvu pove vrstni red, v katerem je treba kodo izvesti. V primeru definirane Pythonove funkcije "Integrate" je vse znotraj te funkcije razčlenjeno za en blok, s čimer se razlikujejo naloge, ki se bodo izvajale v okviru te funkcije. V tej funkciji Python so vdolbljeni deli, ki opravljajo tudi svoje naloge. Gre takole: ukaz (naloga) je postavljen, dvopičje sledi ukazu, in tisto, kar ukaz naredi, je pod njim zamaknjeno.

Takoj po opredelitvi funkcije "integracija" Python boste opredelili drugo funkcijo Python, imenovano f (x). To predstavlja matematično funkcijo, ki bo integrirana. Za vsako drugačno matematično funkcijo, ki jo želite integrirati, boste morali spremeniti to vrstico programa (za razliko od spremenljivk, ki so definirane pri zagonu programa). Vsaka funkcija Python bo imela vrnjeno vrednost, to funkcija vrne, ko ji vrnete vrednost. V tem primeru je vložena vrednost "x" in ta izraz "x" bo imel vrednost tistega, kar mu vržete-to je začasna vrednost.

Nato zanka for deluje kot seštevek, opredeljen v formulah v razdelku "Razumevanje algoritma" te vadnice. To seštevanje zahteva še nekaj spremenljivk, od katerih bo ena delovala kot vrnjena vrednost za celotno funkcijo "Integrate" Python. Pred zanko for sem te spremenljivke označil za "vrednost" in "vrednost2". naloga for-zanke je iteriranje po obsegu vrednosti za določeno spremenljivko, ki jo je priročno določiti v ukazu for-loop; v tem primeru je ta spremenljivka "n". Obseg, za katerega pride do ponovitve, je 1 do N+1. Opaziti morate, da se vsota, opredeljena v zgoraj omenjenih formulah, giblje le od 1 do N. Tako jo definiramo, ker jezik Python šteje vsako ponovljeno vrednost, ki se začne od nič, zato moramo v bistvu premakniti obseg vrednosti, da ustreza našim želenim obseg. For-zanka nato omogoča seštevanje vseh višin pravokotnika skupaj in to vrednost shrani v spremenljivko, ki sem jo poimenoval "vrednost". To je razvidno iz kode, ki se prikaže kot: vrednost += f (a +((n- (1/2))*((b-a)/N))).

Naslednji del kode uporablja spremenljivko, imenovano "value2", ki je nato dodeljena kot vsota vseh višin vsakega pravokotnika, pomnožena s standardizirano širino vsakega pravokotnika-to je naš zadnji odgovor, ki ga želimo prikazuje naš program in je tako vrnjena vrednost funkcije "Integrate" Python.

7. korak: Ustvarjanje programa 4. del: Prikaz odgovora

Ustvarjanje programa 4. del: Prikaz odgovora
Ustvarjanje programa 4. del: Prikaz odgovora

Kopirajte kodo na sliki pod prejšnjo kodo.

Zdaj, ko je odgovor mogoče dobiti s funkcijo "Integrate" Python, ga želimo prikazati. To je samo vprašanje vnosa vrednosti, ki jih je uporabnik vnesel ("N", "a," in "b") v funkcijo "Integrate" Python in tiskanje na zaslon. Ta ukaz je prikazan v vrstici 21 in je res vse, kar morate storiti, da dokončate ta korak. Koda v vrsticah 19 in 20 je samo tam, da "precej poveča" izhod celotnega programa. "print (" …………… natisniti za to vrstico besedila.

8. korak: Zagon programa 1. del: Zagon programa takšnega, kot je

Zagon programa 1. del: Zagon programa, kakršen je
Zagon programa 1. del: Zagon programa, kakršen je

Če ne uporabljate programa Canopy, vam tega koraka verjetno sploh ni treba slediti in zagon programa lahko zahteva različne postopke. V programu Canopy ga morate pred zagonom programa shraniti. Vrsta datoteke za program Python je datoteka.py-samodejno se shrani tako. Izberite, kam želite shraniti datoteko, nato pa boste lahko zagnali program.

Izvajanje programa:

  1. Pritisnite zeleni gumb, ki izgleda kot "gumb za predvajanje", ki se nahaja v orodni vrstici tik nad mestom, kjer je prikazano ime vaše datoteke (glejte sliko).
  2. Program se bo nato zagnal na spodnjem zaslonu urejevalnika, ki je znan kot okolje za analizo podatkov Canopy. Ob predpostavki, da ste kopirali pozive, kot sem jih napisal, bi morali na dnu okolja za analizo podatkov Canopy videti poziv: "Vnesite, kolikokrat želite sešteti (večkrat = natančneje):". (glej sliko)
  3. Vnesite vrednost, kolikokrat želite ponoviti, to je 10000 (koliko pravokotnikov želite potisniti v svoje območje), nato pritisnite enter.
  4. Prikazalo se bo več pozivov z izjavami, ki bi morale biti znani vnosni pozivi, ki ste jih kodirali v program v 5. koraku. Primerno jih izpolnite, tako kot pri zgornji številki 3.
  5. Integral je treba ovrednotiti in prikazati se mora rezultat.

Če ste program kodirali, kot je prikazano na prejšnjih slikah, ste pravkar integrirali f (x) = x^2 v nekaj mejah. Integral x^2 je enostavno oceniti z roko, zato morate preveriti in se prepričati, da je program dal zelo natančen odgovor na pravilno analitično vrednost, določeno z roko. Ko zaženem program z vrednostmi N = 10000, a = 0 in b = 10, dobim odgovor 333.33333249999964. Pravilen analitični odgovor je 333.333. To je neverjetno hitro in natančno. V bistvu ste stisnili 10 000 pravokotnikov med 0 in 10 na osi x in jih uporabili za približevanje površine pod krivuljo x^2!

9. korak: Zagon programa 2. del: Vključevanje drugih matematičnih funkcij

Izvajanje programa 2. del: Vključevanje drugih matematičnih funkcij
Izvajanje programa 2. del: Vključevanje drugih matematičnih funkcij

Če ste v prejšnjem koraku zvesto sledili, ste integrirali f (x) = x^2. To ni edina matematična funkcija, ki jo lahko vključi ta program. Spomnite se, da ste iz 5. koraka v program uvozili niz matematičnih knjižnic funkcij Python. To vam omogoča uporabo bolj zapletenih matematičnih funkcij, ki jih je mogoče integrirati. Poskusimo enega. Seveda lahko uporabite katero koli funkcijo, ki jo želite, vendar bom natančnost te kode še dokazal z integracijo določene matematične funkcije, ki daje dobro znano vrednost, če je integrirana v določenem območju. Ta funkcija je f (x) = Sin [x]. Ta matematična funkcija je prikazana na prvi spremljajoči sliki, narisani od 0 do 2π, območje, ki vas zanima, pa je zasenčeno v turkizno. Pozitivna površina je enaka, saj je v tem intervalu negativna površina, zato morate, če seštejete celotno površino, dobiti nič. Poglejmo, če se to res zgodi:

Vstavljanje matematične funkcije f (x) = Sin [x] v program:

  1. Preden znova zaženete program, pod komentarjem "#type your function after return" vnesite: sin (x), kjer je trenutno x ** 2. (glej sliko).
  2. Zaženite program tako, da znova pritisnete zeleni gumb za predvajanje.
  3. Vnesite 10000 za vrednost N (kolikokrat želite sešteti).
  4. za spodnjo mejo vnesite "0".
  5. Za zgornjo mejo vstavite 6.2832 (približno 2π).
  6. Poglejte, kakšno vrednost imate.

Ko sem to storil, sem na koncu dobil vrednost 1.079e-10: to je enako 0,0000000001079, kar je res blizu ničle, zato se zdi, da je natančno, in kaže, da algoritem ustrezno obravnava negativno območje.

10. korak: Zagon programa 3. del: Razširitev programa

Na tej točki ste končali: imate delujoč določen integralni algoritem, kodiran v Pythonu, ki teče gladko in daje zelo natančne odgovore. Vendar pa je ta program mogoče izboljšati. Nisem programer in imam minimalne izkušnje s Pythonom. Pravzaprav sem se moral osvežiti pri uporabi Pythona za dokončanje te vadnice, vendar bi vam to moralo dati zaupanje, da je Python tako preprost jezik za učenje. Moja poanta je, da lahko ta program razširite tako, da ga naredite učinkovitejšega, morda uvedete kakšen grafični vmesnik in ga naredite uporabniku bolj prijaznega.

Moje razmišljanje o razširitvi programa:

  • Uvedite grafični uporabniški vmesnik, ki vam omogoča zagon programa brez uporabe okolja za interaktivno analizo podatkov Canopy
  • Naredite tako, da matematične funkcije, ki jo želite integrirati, ni treba vnesti v program, ampak jo je mogoče vnesti po zagonu programa (sprva sem to poskušal narediti, vendar mi ni uspelo ugotoviti).
  • Določite funkcijo "Integriraj" Python, tako da bo funkcija f (x) predvidena, da ima v njej definirano funkcijo f (x).

To je le nekaj primerov področij izboljšav, vendar zagotavljam, da obstaja veliko drugih področij, ki jih je mogoče izboljšati. Zato ta korak puščam kot primer pomanjkljivosti, ki jih ima ta program, in morda vajo vsem, ki želijo program še izboljšati.

Priporočena: