Sisällysluettelo:

Numeerisen integrointiohjelman luominen Pythonissa: 10 vaihetta
Numeerisen integrointiohjelman luominen Pythonissa: 10 vaihetta

Video: Numeerisen integrointiohjelman luominen Pythonissa: 10 vaihetta

Video: Numeerisen integrointiohjelman luominen Pythonissa: 10 vaihetta
Video: Modernien tekoälyratkaisujen ja datalähteiden hyödyntäminen Keski-Suomessa 2024, Marraskuu
Anonim
Kuinka tehdä numeerinen integrointiohjelma Pythonissa
Kuinka tehdä numeerinen integrointiohjelma Pythonissa

Tämä on opetusohjelma siitä, miten luodaan ja suoritetaan ohjelma, joka arvioi tiettyjä integraaleja numeerisen integrointialgoritmin avulla. Olen jakanut vaiheet kolmeen osaan: ohjelman tekemiseen käytettävän algoritmin ymmärtäminen, ohjelman koodaus Python -ohjelmointikielellä ja ohjelman suorittaminen. Tämä opetusohjelma on tarkoitettu henkilölle, joka saattaa joutua tekemään nopeasti laskimen tiettyjen integraalien arvioimiseksi, tai ehkä tarvitsee algoritmin käytettäväksi laajemmassa ohjelmassa. Laskennan perustiedot ovat odotettavissa, mutta asiaankuuluvat matemaattiset tiedot tarkistetaan. Ohjelmointitaitoa ei odoteta, mutta siitä on hyötyä, koska kuvaan vain lyhyesti, miten ohjelmointi todella toimii.

Mitä tarvitset:

Henkilökohtainen tietokone, jolla on pääsy Internetiin

Vaihe 1: Algoritmin ymmärtäminen Osa 1: Selvä integraali ja sen käyttö

Algoritmin ymmärtäminen Osa 1: Selvä integraali ja sen käyttö
Algoritmin ymmärtäminen Osa 1: Selvä integraali ja sen käyttö

Oletan, että tiedät vähän siitä, mikä on integraali peruslaskennan yhteydessä. Integraalit ovat tärkeitä, koska niiden avulla voit laskea yhteen joukon arvoja kerrottuna äärettömän pienellä pituudella; tästä on hyötyä monilla rahoituksen, lukuteorian, fysiikan, kemian ja monilla muilla aloilla. Tämän ohjelman avulla voit kuitenkin laskea käyrän alla olevan alueen vain rajalliselle aikavälille tai toisin sanoen se ei arvioi johdannaisia-siihen tarvitaan paljon tehokkaampi algoritmi. Tämä algoritmi on hyödyllinen, jos sinun on arvioitava tietty integraali suuremmassa ohjelmassa, joka on määritetty jotain muuta varten, tai jos haluat tarkistaa vastauksestasi, onko käsin tehtyjä kiinteitä integraaleja.

Perusmääritteinen integraali edustaa funktion määrittämän käyrän alla olevaa aluetta, esim. f (x). Selvää integraalia varten etsimme kahden pisteen välistä aluetta (merkitty a ja b). Kuvassa turkoosi alue on alue, johon viittaan, ja yhtälö tämän määrittämiseksi näkyy myös kyseisellä alueella. Kuvassa näkyvä toiminto on mielivaltainen.

Vaihe 2: Algoritmin ymmärtäminen Osa 2: Numeerinen lähentäminen

Algoritmin ymmärtäminen Osa 2: Numeerinen lähentäminen
Algoritmin ymmärtäminen Osa 2: Numeerinen lähentäminen

Tietokone tarvitsee laajan joukon ohjeita tämän alueen laskemiseksi mielivaltaisen funktion alla, joka toimii millä tahansa toiminnolla, joten tutut analyysimenetelmät eivät auta, koska ne ovat liian erityisiä. Yksi tapa laskea integraalit suunnilleen, joita tietokone todella pystyy käsittelemään, tehdään täyttämällä kiinnostava alue käyttäjän määrittämällä määrällä yhtä leveitä ja muuttuvaa korkeutta olevia suorakulmioita ja laskemalla sitten yhteen kaikki suorakulmion alueet. Suorakulmioiden jäykät ominaisuudet jättävät osan kokonaispinta -alasta koskemattomiksi, minkä vuoksi tätä pidetään likimääräisenä; kuitenkin, mitä enemmän suorakulmioita voit karsia rajojen (a ja b) väliin, sitä tarkempi on lähentäminen, koska koskemattomat alueet harventuvat. Koska tietokone suorittaa tehtävän, voit asettaa halutulla alueella olevien suorakulmioiden lukumäärän erittäin suureksi, jolloin likimääräisyys on erittäin tarkka. Kuvittele tukikuvassa, että jokainen suorakulmio merkityllä alueella on yhtä leveä. Tein parhaani, jotta ne olisivat yhtä leveitä Microsoft Paintissa, mutta en tehnyt parasta työtä.

Vaihe 3: Algoritmin ymmärtäminen Osa 3: Keskipistesääntö

Algoritmin ymmärtäminen Osa 3: Keskipistesääntö
Algoritmin ymmärtäminen Osa 3: Keskipistesääntö

Tämä sääntö osoittaa, kuinka suorakulmiot tehdään ja käytetään likimääräisessä muodossa. Jokaisella "N" suorakulmion leveydellä on oltava sama leveys Δx, mutta jokainen n: nnen suorakulmio ei voi olla täsmälleen sama: vaihteleva tekijä on korkeus, joka vaihtelee tietyssä kohdassa arvioidun funktion mukaan. Keskipistesääntö saa nimensä siitä, että arvioit kunkin suorakulmion korkeutta f (x_n), jossa "x_n" on kunkin suorakulmion keskipiste, suorakulmion vasemmalla tai oikealla puolella. Keskipisteen käyttäminen on kuin keskiarvon toteuttamista, mikä tekee lähentämisestä tarkemman kuin jos käyttäisit oikeaa tai vasenta. Tämän vaiheen tukikuva kuvaa yhteenvedon siitä, miten keskipisteen sääntö määritetään matemaattisesti.

Vaihe 4: Ohjelman luominen Osa 1: Python -kääntäjän/editorin lataaminen

Nyt kun ymmärrät toteutettavan algoritmin, sinun on saatava tietokone suorittamaan laskutoimitus puolestasi. Ensimmäinen askel kertoa tietokoneelle, mitä tehdä, on hankkia työkalut siihen. Tämä algoritmi voidaan koodata millä tahansa kielellä; Yksinkertaisuuden vuoksi tämä ohjelma koodataan Python -kielellä. Jotta voisit komentaa tietokonettasi suorittamaan toimintoja Pythonilla, tarvitset editorin, joka ottaa käyttöön kyseisellä kielellä kirjoitetut ohjeet, jotka sitten käännetään koneen kielelle, jonka tietokoneesi ymmärtää, jotta se voi suorittaa ne tehtävät, jotka sille on määrätty. Nykyään editori ja kääntäjä ovat yleensä integroituja, mutta näin ei aina ole. Voit käyttää mitä tahansa editoria/kääntäjää, johon olet tyytyväinen, mutta näytän sinulle, miten saan henkilökohtaisen suosikkini Python: Canopy -ohjelmaan. Jos sinulla on jo editori/kääntäjä, voit ohittaa nämä vaiheet.

  1. Siirry osoitteeseen
  2. Napsauta Lataa katos
  3. Napsauta käyttöjärjestelmääsi vastaavaa latauspainiketta

    Lataus alkaa automaattisesti

  4. Noudata asennusohjeita suoritustiedoston käynnistämisen jälkeen
  5. Suorita ohjelma
  6. Napsauta ohjelman päävalikosta "Editor"
  7. Napsauta "luo uusi tiedosto" näytön keskellä

Tästä lähtien sinun pitäisi nähdä tyhjä valkoinen ikkuna, jonka kohdistin muistuttaa tekstinkäsittelyasiakirjan perusasiakirjaa. Olet nyt valmis aloittamaan numeerisen integrointialgoritmin koodaamisen tiettyjen integraalien ratkaisemiseksi. Menettelyn vaiheissa on koodinpätkä, jonka kopioit, ja selitys siitä, mitä katkelma tekee koko ohjelmalle.

Vaihe 5: Ohjelman luominen Osa 2: Toimintojen tuominen ja muuttujien määrittäminen

Ohjelman luominen Osa 2: Toimintojen tuominen ja muuttujien määrittäminen
Ohjelman luominen Osa 2: Toimintojen tuominen ja muuttujien määrittäminen

Kopioi kuvassa oleva koodi.

Jokaiselle ohjelmalle saatat löytää koodauksen, siinä on muuttujia. Muuttuja on nimi, joka annetaan arvolle, jota käytetään ja joka voi muuttua. Useimmissa ohjelmointikielissä (ellei kaikissa) sinun on alustettava muuttuja ennen kuin ohjelma voi tehdä siihen muutoksia. Tämän ohjelman tapauksessa olen nimennyt muuttujat "N", "a" ja "b". Nämä arvot edustavat iterointien lukumäärää (AKA -lukumäärä suorakulmioita), alarajaa ja ylärajaa. Voit nimetä nämä haluamallasi tavalla, mutta niiden on vastattava kaavoja, jotka on annettu kohdassa "Algoritmin ymmärtäminen, osa 3: Keskipisteen sääntö". Huomaa, että ne eivät ole vain asetettu tiettyyn arvoon. Tämä johtuu siitä, että ne ovat syötteitä, jotka ohjelman ajaessa ohjelman käyttäjä voi määrittää, mikä arvo on. Lainausmerkkien teksti, syöttökomennon jälkeen, tulee näkyviin, kun suoritat ohjelman ja kertoo, minkä tyyppinen arvo kirjoitetaan. Huomaat myös, että "int" ja "float" käytetään ennen syöttömerkintöjä. Nämä termit kertovat tietokoneelle, minkä tyyppinen muuttuja tämä arvo tulee olemaan. "Int" on kokonaisluku ja "float" on liukulukuarvo (eli desimaali). Pitäisi olla selvää, miksi nämä on nimetty sellaisiksi.

Mikä tahansa "#" -merkin jälkeen oleva teksti on kommentti, jonka avulla ohjelmoija voi seurata koodia humanistisella tavalla; Olen tehnyt tiettyjä kommentteja koodiini, joita kopioit, mutta voit lisätä kommentteja, jotka auttavat sinua erityisesti. Ohjelma ei lue mitään komennolla "#" ennen sitä.

Koodin osa, joka lukee "matematiikan tuonnista *", kehottaa ohjelmaa tuomaan joukon matemaattisia funktioita, joita voidaan käyttää ilman, että sinun tarvitsee ohjelmoida niitä itseesi. "*" Tarkoittaa vain "kaikki". Lue tämä koodin osa seuraavasti: Tuo matemaattisesta kirjastosta kaikki toiminnot. Tämän avulla voit käyttää matemaattisia funktioita, kuten sini, kosini, log, exp jne. Nämä funktiot voidaan integroida matemaattisesti koodiin.

Vaihe 6: Ohjelman luominen Osa 3: Integrointitoiminnon luominen

Ohjelman luominen Osa 3: Integrointitoiminnon luominen
Ohjelman luominen Osa 3: Integrointitoiminnon luominen

Kopioi edellisen koodin alla olevan kuvan koodi.

VAROITUS: Tämä osa on tiheä, ja haluan selvittää joitakin asioita, jotka voivat olla hämmentäviä. Kun puhutaan ohjelmoinnista, sana "toiminto" tulee esiin paljon. Tämä termi tulee myös esiin paljon, kun puhut matematiikasta. Joten tästä lähtien, kun puhun funktiosta ohjelmointimielessä, kirjoitan "Python -funktio" ja kun puhun matemaattisesta funktiosta, sanon "matemaattinen funktio". Jossain vaiheessa käytämme Python -funktiota kyseisen matemaattisen funktion esitykseksi.

Tämä seuraava koodinpätkä on ohjelman ydin. Tässä määritellään Python -funktio, joka suorittaa numeerisen integroinnin algoritmin käyttämällä keskipistesääntöä. "def Integrate (N, a, b)" lukee seuraavasti: määritä funktio nimeltä "Integrate", joka hyväksyy muuttujat "N", "a" ja "b" ja palauttaa käyrän alla olevan alueen (matemaattinen funktio) joka on myös määritetty "Integroi" Python -toiminnossa. Voit kutsua tätä Python -funktiota millä tahansa, kun teet koodausta, mutta on järkevää kutsua sitä integroimiseksi, koska se on funktio, joka todella integroi matemaattisen funktion.

Tässä vaiheessa kannattaa kommentoida, miten Python erottaa koodilohkoja. Koodilohko on kokonainen osa, joka suorittaa tietyn tehtävän. Eri ohjelmointikielet voivat nimetä tapoja erottaa nämä "lohkot". Pythonissa lohko erottuu sisennyksistä: jokaisella tehtävän suorittavalla osalla on oma sisennys ja muiden sisennettyjen lohkojen sisällä voi olla sisennettyjä lohkoja. Tämä edustaa tehtäviä tehtävien sisällä ja kertoo olennaisesti koodin suoritusjärjestyksen. Määritetyn Python -toiminnon "Integrate" tapauksessa kaikki kyseisen funktion sisällä olevat sisennykset tehdään yhdestä lohkosta, mikä erottaa toiminnot, jotka suoritetaan kyseisen funktion sisällä. Tässä Python -toiminnossa on sisennettyjä osia, jotka suorittavat myös omat tehtävänsä. Se menee seuraavasti: annetaan komento (tehtävä), kaksoispiste seuraa komentoa, ja mitä komento tekee, on sisennetty alla.

Heti "integroi" Python -toiminnon määrittämisen jälkeen määrität toisen Python -funktion nimeltä f (x). Tämä edustaa integroitavaa matemaattista funktiota. Jokaiselle integroitavaan matemaattiseen funktioon sinun on siirryttävä tähän ohjelmariviin sen muuttamiseksi (toisin kuin muuttujat, jotka määritetään ohjelman suorittamisen aikana). Jokaisella Python -funktiolla on palautusarvo, jonka funktio palauttaa, kun heität sille arvon. Tässä tapauksessa sisäänheitetty arvo on "x", ja tämä "x" -merkki ottaa sen arvon, jonka heität-se on väliaikainen arvo.

Seuraavaksi for-loop toimii summana, joka on määritelty tämän opetusohjelman "Algoritmin ymmärtäminen" -osan kaavoissa. Tämä summaus vaatii vielä pari muuttujaa, joista yksi toimii palautusarvona koko "Integroi" Python -toiminnolle. Ennen for-silmukkaa olen määrittänyt nämä muuttujat arvoiksi ja arvoksi2. for-loop-tehtävänä on iteroida määritetyn muuttujan arvoalueella, joka voidaan kätevästi määrittää for-loop-komennolla; tässä tapauksessa muuttuja on "n". Alue, jolla iterointi tapahtuu, on 1 - N+1. Huomaa, että edellä mainituissa kaavoissa määritetty summa on vain välillä 1 - N. valikoima. For-silmukka sallii sitten kaikkien suorakulmion korkeuksien yhteenlaskemisen ja tallentaa arvon muuttujaan, jota kutsuin "arvoksi". Tämä näkyy koodissa, joka näkyy muodossa: arvo += f (a +((n- (1/2))*((b-a)/N))).

Sieltä seuraava koodikappale käyttää muuttujaa nimeltä "arvo2", joka sitten määritetään olemaan kunkin suorakulmion kaikkien korkeuksien summa kerrottuna kunkin suorakulmion standardoidulla leveydellä-tämä on viimeinen vastaus, jonka haluamme Ohjelmamme näyttää, ja se on siis "Integrate" Python -toiminnon palautusarvo.

Vaihe 7: Ohjelman luominen Osa 4: Vastauksen näyttäminen

Ohjelman luominen Osa 4: Vastauksen näyttäminen
Ohjelman luominen Osa 4: Vastauksen näyttäminen

Kopioi edellisen koodin alla olevan kuvan koodi.

Nyt kun vastaus voidaan saada Python -integrointitoiminnon avulla, haluamme pystyä näyttämään sen. Tässä on kyse vain käyttäjän syöttämien arvojen ("N", "a" ja "b") sisällyttämisestä Python -integrointitoimintoon ja niiden tulostamisesta näytölle. Tämä komento näkyy rivillä 21, ja se on kaikki mitä sinun tarvitsee tehdä tämän vaiheen loppuun saattamiseksi. Rivien 19 ja 20 koodi on vain "koko ajan" koko ohjelman tuotos. "print (" ………………………. ")" erottaa ohjelman syöttöosan tulostusosasta ja "print (" Tässä on vastauksesi: ")" on vain osoitus siitä, että vastaus tulee tulostetaan kyseisen tekstirivin jälkeen.

Vaihe 8: Ohjelman suorittaminen Osa 1: Ohjelman suorittaminen sellaisenaan

Ohjelman suorittaminen Osa 1: Ohjelman suorittaminen sellaisenaan
Ohjelman suorittaminen Osa 1: Ohjelman suorittaminen sellaisenaan

Jos et käytä Canopy -ohjelmaa, sinun ei todennäköisesti tarvitse edes noudattaa tätä vaihetta ollenkaan, ja ohjelman suorittaminen voi vaatia erilaisia toimenpiteitä. Ennen kuin voit suorittaa ohjelman, sinun on tallennettava se Canopyssa. Python-ohjelman tiedostotyyppi on.py-tiedosto-se tallennetaan automaattisesti tältä. Valitse minne haluat tallentaa tiedoston, niin voit suorittaa ohjelman.

Ohjelman suorittaminen:

  1. Paina vihreää painiketta, joka näyttää "toistopainikkeelta", joka sijaitsee työkalupalkissa tiedoston yläpuolella (katso kuva).
  2. Ohjelma suoritetaan sitten editorin alaruudulla, joka tunnetaan Canopy-tietojen analysointiympäristönä. Jos olet kopioinut kehotteet kirjoittaessani, sinun pitäisi nähdä Canopy-tietojen analysointiympäristön alareunassa kehote: "Anna kuinka monta kertaa haluat tehdä summan (enemmän kertoja = tarkempi):." (katso kuva)
  3. Anna arvo, kuinka monta kertaa haluat tehdä iteraation eli 10000 (kuinka monta suorakulmiota haluat työntää alueellesi), ja paina sitten enter.
  4. Näyttöön tulee lisää kehotteita ja lausuntoja, joiden pitäisi olla tuttuja syöttökehotteita, jotka olet koodannut ohjelmaan vaiheessa 5. Täytä ne asianmukaisesti kuten yllä olevassa numerossa 3.
  5. Integraali on arvioitava ja tuloksen pitäisi näkyä.

Jos olet koodannut ohjelman edellisten kuvien mukaisesti, olet juuri integroinut f (x) = x^2 joidenkin rajojen yli. X^2: n integraali on helppo arvioida käsin, joten sinun on tarkistettava ja varmistettava, että ohjelma antoi hyvin läheisen vastauksen oikeaan käsin määritettyyn analyyttiseen arvoon. Kun suoritan ohjelman arvoilla N = 10000, a = 0 ja b = 10, saan vastauksen 333.33333249999964. Oikea analyyttinen vastaus on 333,333. Tämä on uskomattoman tarkka ja nopea. Olet olennaisesti puristanut 10 000 suorakulmioita välillä 0 ja 10 x -akselilla ja käyttänyt niitä lähentämään käyrän x^2 alla olevaa aluetta!

Vaihe 9: Ohjelman suorittaminen Osa 2: Muiden matemaattisten funktioiden integrointi

Ohjelman suorittaminen Osa 2: Muiden matemaattisten toimintojen integrointi
Ohjelman suorittaminen Osa 2: Muiden matemaattisten toimintojen integrointi

Jos olet edellisessä vaiheessa seurannut uskollisesti, integroit f (x) = x^2. Tämä ei ole ainoa matemaattinen funktio, jonka tämä ohjelma voi integroida. Muista vaiheesta 5, että tuot ohjelmaan Python -funktioiden matematiikkakirjaston. Tämän avulla voit käyttää monimutkaisempia integroitavia matemaattisia toimintoja. Kokeillaanpa yhtä. Voit tietysti käyttää mitä tahansa haluamaasi toimintoa, mutta esittelen edelleen tämän koodin täsmällisyyttä integroimalla tietyn matemaattisen funktion, joka tuottaa tunnetun arvon, kun se integroidaan tietylle alueelle. Tämä funktio on f (x) = Sin [x]. Tämä matemaattinen funktio näkyy ensimmäisessä mukana tulevassa kuvassa, piirretty 0 - 2π, ja kiinnostava alue on varjostettu turkoosilla. Positiivista aluetta on yhtä paljon kuin negatiivista aluetta tällä aikavälillä, joten jos lasket kokonaispinta -alan yhteen, sinun pitäisi saada nolla. Saapa nähdä tapahtuuko näin:

Laita matemaattinen funktio f (x) = Sin [x] ohjelmaan:

  1. Ennen kuin käynnistät ohjelman uudelleen, kirjoita kommenttiin "#type your function after return", kirjoita: sin (x), missä x ** 2 sijaitsee. (katso kuva).
  2. Suorita ohjelma painamalla vihreää toistopainiketta uudelleen.
  3. Kirjoita N -arvoksi 10000 (kuinka monta kertaa haluat summaa).
  4. laita "0" alarajaan.
  5. Laita ylärajalle 6.2832 (noin 2π).
  6. Katso mitä arvoa saat.

Kun tein tämän, päädyin arvoon 1.079e-10: tämä vastaa.0000000001079, joka on todella lähellä nollaa, joten se näyttää olevan tarkka ja osoittaa, että algoritmi käsittelee riittävästi negatiivista aluetta.

Vaihe 10: Ohjelman suorittaminen Osa 3: Ohjelman laajentaminen

Tässä vaiheessa olet valmis: sinulla on toimiva, kiinteä integraalialgoritmi, joka on koodattu Pythoniin ja joka toimii sujuvasti ja antaa erittäin tarkkoja vastauksia. Tätä ohjelmaa voidaan kuitenkin parantaa. En ole ohjelmoija, ja minulla on minimaalinen kokemus Pythonista. Itse asiassa minun piti päivittää itseni käyttämään Pythonia tämän opetusohjelman suorittamiseen, mutta sen pitäisi antaa sinulle luottamusta siihen, että Python on niin helppo kieli oppia. Pointtini on, että voit laajentaa tätä ohjelmaa tehostamalla sitä, ehkä ottamalla käyttöön jonkin GUI: n ja tekemällä siitä käyttäjäystävällisemmän.

Ajatuksiani ohjelman laajentamisesta:

  • Ota käyttöön graafinen käyttöliittymä, jonka avulla voit suorittaa ohjelman ilman Canopy-interaktiivista data-analyysiympäristöä
  • Tee niin, että integroitavaa matemaattista funktiota ei tarvitse syöttää ohjelman sisälle, vaan se voidaan syöttää ohjelman suorittamisen jälkeen (alun perin yritin tehdä tämän, mutta en voinut selvittää sitä).
  • Määritä "Integroi" Python -toiminto, jotta se ottaa f (x) -funktion sellaisena kuin se on määritelty sen sisällä.

Nämä ovat vain muutamia esimerkkejä parantamisen aloista, mutta takaan, että on monia muita alueita, joita voidaan parantaa. Jätän tämän vaiheen esimerkkiksi tämän ohjelman puutteista ja ehkä harjoituksen kaikille, jotka haluavat parantaa ohjelmaa edelleen.

Suositeltava: