Obsah:
- Krok 1: Pochopenie algoritmu Časť 1: Definitívny integrál a jeho použitie
- Krok 2: Pochopenie algoritmu Časť 2: Numerická aproximácia
- Krok 3: Pochopenie algoritmu, časť 3: Pravidlo stredného bodu
- Krok 4: Vytvorenie programu Časť 1: Stiahnutie kompilátora/editora Pythonu
- Krok 5: Vytvorenie programu Časť 2: Import funkcií a definovanie premenných
- Krok 6: Vytvorenie programu Časť 3: Vytvorenie funkcie pre integráciu
- Krok 7: Vytvorenie programu Časť 4: Zobrazenie odpovede
- Krok 8: Spustenie programu Časť 1: Spustenie programu tak, ako je
- Krok 9: Spustenie programu Časť 2: Integrácia ďalších matematických funkcií
- Krok 10: Spustenie programu Časť 3: Rozbalenie programu
Video: Ako vytvoriť program numerickej integrácie v Pythone: 10 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Toto je návod, ako vytvoriť a spustiť program, ktorý bude hodnotiť určité integrály pomocou numerického integračného algoritmu. Kroky som rozdelil do 3 častí: porozumenie algoritmu, ktorý bude použitý na vytvorenie programu, kódovanie programu pomocou programovacieho jazyka Python a spustenie programu. Tento tutoriál je určený pre niekoho, kto môže potrebovať rýchlo vytvoriť kalkulačku na vyhodnotenie určitých integrálov, alebo potrebuje algoritmus na použitie v programe vo vyššom meradle. Očakávajú sa základné znalosti o počte, ale prehodnocujú sa relevantné matematické informácie. Znalosť programovania sa neočakáva, ale je užitočná, pretože len stručne popíšem, ako programovanie vlastne funguje.
Čo budete potrebovať:
Osobný počítač s prístupom na internet
Krok 1: Pochopenie algoritmu Časť 1: Definitívny integrál a jeho použitie
Budem predpokladať, že trochu viete, čo je to integrál v kontexte základného počtu. Integrály sú dôležité, pretože vám umožňujú sčítať pole hodnôt vynásobených nekonečne malou dĺžkou; je to užitočné v mnohých oblastiach financií, teórie čísel, fyziky, chémie a mnohých ďalších odborov. Tento program vám však umožní vypočítať plochu pod krivkou iba pre konečný interval, alebo inými slovami, nevyhodnocuje antideriváty-na to je potrebný oveľa výkonnejší algoritmus. Tento algoritmus je užitočný, ak potrebujete vyhodnotiť určitý integrál vo väčšom programe špecifikovanom smerom k niečomu inému, alebo ak chcete skontrolovať svoju odpoveď na akékoľvek definitívne integrály vykonávané ručne.
Základný určitý integrál predstavuje oblasť pod krivkou definovanú funkciou, napr. f (x). Pre určitý integrál hľadáme oblasť medzi dvoma bodmi (označenými a a b). Na obrázku je tyrkysová oblasť oblasť, o ktorej hovorím, a rovnica na jej určenie je v tejto oblasti tiež zobrazená. Funkcia zobrazená na obrázku je ľubovoľná.
Krok 2: Pochopenie algoritmu Časť 2: Numerická aproximácia
Počítač potrebuje široký súbor pokynov na výpočet tejto oblasti pod ľubovoľnou funkciou, ktorá bude fungovať pre každú funkciu, takže analytické metódy, ktoré poznáte, nie sú k ničomu, pretože sú príliš konkrétne. Jeden spôsob výpočtu približne integrálov, ktorý počítač skutočne zvládne, sa vykonáva vyplnením záujmovej oblasti používateľom definovaným počtom obdĺžnikov rovnakej šírky a premennej výšky a následným súčtom všetkých oblastí obdĺžnika. Tuhé vlastnosti obdĺžnikov ponechajú časť celkovej plochy nedotknutú, a preto sa to považuje za aproximáciu; čím viac obdĺžnikov môžete vtesnať medzi hranice (a a b), tým presnejšia bude aproximácia, pretože nedotknuté oblasti budú riedke. Pretože úlohu bude vykonávať počítač, môžete nastaviť počet obdĺžnikov v požadovanej oblasti na veľmi veľké číslo, takže aproximácia je mimoriadne presná. Na podpornom obrázku si predstavte, že každý obdĺžnik v označenej oblasti má rovnakú šírku. Urobil som všetko pre to, aby boli v programe Microsoft Paint rovnaké šírky, ale neodviedol som najlepšiu prácu.
Krok 3: Pochopenie algoritmu, časť 3: Pravidlo stredného bodu
Toto pravidlo určuje, ako sa obdĺžniky vyrábajú a používajú pri aproximácii. Každý obdĺžnik z „N“obdĺžnikov musí mať rovnakú šírku Δx, ale každý n -tý obdĺžnik nemôže byť úplne rovnaký: meniacim sa faktorom je výška, ktorá sa mení podľa toho, ako je funkcia hodnotená v určitom bode. Pravidlo stredného bodu má názov podľa skutočnosti, že výšku každého obdĺžnika hodnotíte ako f (x_n), kde „x_n“je príslušný stredový bod každého obdĺžnika, ktorý sa nachádza vľavo alebo vpravo od obdĺžnika. Použitie stredového bodu je ako implementácia priemeru, vďaka ktorému bude aproximácia presnejšia, ako keby ste použili vpravo alebo vľavo. Na podpornom obrázku k tomuto kroku je zhrnuté, ako je pravidlo stredu definované matematicky.
Krok 4: Vytvorenie programu Časť 1: Stiahnutie kompilátora/editora Pythonu
Teraz, keď rozumiete algoritmu, ktorý je potrebné implementovať, je to otázka prinútenia počítača vykonať výpočet za vás. Prvým krokom, ako povedať počítaču, čo má robiť, je získať k tomu nástroje. Tento algoritmus je možné kódovať v akomkoľvek jazyku; kvôli jednoduchosti bude tento program kódovaný v jazyku Python. Ak chcete svojmu počítaču prikázať vykonávať operácie s jazykom Python, budete potrebovať editor, ktorý preberá pokyny napísané v tomto jazyku a ktoré sa potom skompilujú do strojového jazyka, ktorému váš počítač porozumie, aby mohol vykonávať úlohy, ktoré mu prikážete. V dnešnej dobe sú editor a kompilátor zvyčajne integrované, ale nie vždy to tak je. Môžete použiť ľubovoľný editor/kompilátor, ktorý vám vyhovuje, ale ukážem vám, ako získať môjho osobného favorita pre Python: Canopy. Ak už máte editor/kompilátor, môžete tieto kroky preskočiť.
- Prejdite na
- Kliknite na položku Prevziať baldachýn
-
Kliknite na tlačidlo sťahovania zodpovedajúce vášmu operačnému systému
Sťahovanie sa spustí automaticky
- Po spustení súboru na spustenie postupujte podľa pokynov na instiláciu
- Spustite program
- V hlavnej ponuke programu kliknite na „Editor“
- V strede obrazovky kliknite na „vytvoriť nový súbor“
Od tohto bodu by ste mali vidieť prázdne biele okno s kurzorom pripomínajúcim základný dokument na spracovanie textu. Teraz ste pripravení začať kódovať numerický integračný algoritmus na riešenie určitých integrálov. Nasledujúce kroky budú mať útržok kódu, ktorý skopírujete, a vysvetlenie, čo tento úryvok robí pre program ako celok.
Krok 5: Vytvorenie programu Časť 2: Import funkcií a definovanie premenných
Skopírujte kód na obrázku.
Pre každý program, v ktorom sa ocitnete v kódovaní, budú existovať premenné. Premenná je názov priradený hodnote, s ktorou sa bude operovať a ktorá sa môže zmeniť. Vo väčšine programovacích jazykov (ak nie všetky) musíte premennú inicializovať, aby v nej program mohol vykonávať zmeny. V prípade tohto programu som premenné pomenoval „N“, „a“a „b“. Tieto hodnoty predstavujú počet iterácií (AKA počet obdĺžnikov), dolnú hranicu a hornú hranicu. Môžete ich pomenovať ľubovoľne, ale aby sa zhodovali so vzorcami uvedenými v časti „Pochopenie algoritmu, časť 3: Pravidlo stredného bodu“, je najlepšie ich ponechať rovnaké. Všimnite si, že nie sú nastavené iba na konkrétnu hodnotu. Je to preto, že sú to vstupy, ktoré pri spustení programu môže užívateľ programu definovať, aká bude hodnota. Text v úvodzovkách za vstupným príkazom sa zobrazí, keď spustíte program a povie vám, aký typ hodnoty chcete zadať. Tiež si všimnete, že pred označeniami vstupov sa používajú výrazy „int“a „float“. Tieto výrazy informujú počítač, akým typom premennej bude táto hodnota. „Int“je celé číslo a „float“je hodnota s pohyblivou rádovou čiarkou (t. J. Desatinná čiarka). Malo by byť zrejmé, prečo sú takto označené.
Akýkoľvek text prítomný za „#“je komentár, ktorý umožňuje programátorovi riadiť sa kódom humanistickým spôsobom; Vo svojom kóde som uviedol určité poznámky, ktoré budete kopírovať, ale môžete pridať akékoľvek komentáre, ktoré vám konkrétne pomôžu. Program ako príkaz nič nečíta s číslom „#“.
Časť kódu, ktorá číta „z matematického importu *“, hovorí programu, aby importoval množstvo matematických funkcií, ktoré je možné použiť bez toho, aby ste ich museli programovať sami. „*“Znamená iba „všetko“. Prečítajte si túto časť kódu ako: z matematickej knižnice importujte všetky funkcie. To vám umožní používať matematické funkcie ako sínus, kosínus, log, exp atď. Tieto funkcie je možné matematicky integrovať do kódu.
Krok 6: Vytvorenie programu Časť 3: Vytvorenie funkcie pre integráciu
Skopírujte kód na obrázku pod predchádzajúcim kódom.
UPOZORNENIE: Táto časť je hustá a chcem objasniť niektoré veci, ktoré môžu byť potenciálne mätúce. Keď hovoríme o programovaní, veľa sa objaví slovo „funkcia“. Tento termín sa tiež často objavuje, keď hovoríte o matematike. Takže odteraz, keď budem hovoriť o funkcii v zmysle programovania, napíšem „funkcia Python“a keď budem hovoriť o matematickej funkcii, poviem „matematická funkcia“. V určitom okamihu použijeme funkciu Pythonu ako reprezentáciu príslušnej matematickej funkcie.
Tento ďalší útržok kódu je jadrom programu. Tu je definovaná funkcia Python, ktorá vykonáva algoritmus numerickej integrácie pomocou pravidla stredného bodu. „def Integrate (N, a, b)“znie: definujte funkciu s názvom „Integrovať“, ktorá akceptuje premenné „N“, „a“a „b“a vráti oblasť pod krivkou (matematická funkcia) ktorý je tiež definovaný v rámci funkcie „Integrovať“Python. Túto funkciu Python môžete nazvať akokoľvek, keď robíte kódovanie, ale dáva zmysel nazvať ju integrovanou, pretože je to funkcia, ktorá skutočne integruje matematickú funkciu.
Na tomto mieste stojí za to komentovať, ako Python oddeľuje bloky kódu. Blok kódu je celá sekcia, ktorá vykonáva určitú úlohu. Rôzne programovacie jazyky budú mať určené spôsoby rozlíšenia týchto „blokov“. V prípade Pythonu sa blok odlišuje odsadením: každá sekcia vykonávajúca úlohu má svoju vlastnú zarážku a v iných odsadených blokoch môžu byť odsadené bloky. Predstavuje úlohy v rámci úloh a v zásade určuje poradie, v ktorom je potrebné kód vykonať. V prípade definovanej funkcie Pythonu „Integrovať“je všetko v rámci tejto funkcie odsadené do jedného bloku, čím sa rozlišujú úlohy, ktoré sa v rámci tejto funkcie budú vykonávať. V tejto funkcii Pythonu sú odsadené časti, ktoré tiež vykonávajú svoje vlastné úlohy. Funguje to nasledovne: je zadaný príkaz (úloha), dvojbodka nasleduje za príkazom a to, čo príkaz robí, je uvedené nižšie.
Ihneď po definovaní funkcie „integrovať“Python definujete inú funkciu Pythonu s názvom f (x). Toto predstavuje matematickú funkciu, ktorá bude integrovaná. Pre každú inú matematickú funkciu, ktorú chcete integrovať, budete musieť prejsť na tento riadok programu, aby ste ho zmenili (na rozdiel od premenných, ktoré sú definované pri spustení programu). Každá funkcia Pythonu bude mať návratovú hodnotu, to je funkcia, ktorú funkcia vráti, keď jej hodíte hodnotu. V tomto prípade je hodená hodnota „x“a tento výraz „x“bude mať hodnotu toho, čím ho hodíte-je to dočasná hodnota.
Ďalej for-loop funguje ako súčet definovaný vo vzorcoch v časti „Pochopenie algoritmu“tohto tutoriálu. Tento súčet vyžaduje niekoľko ďalších premenných, z ktorých jedna bude fungovať ako návratová hodnota pre celú funkciu „Integrate“Python. Pred cyklom for som tieto premenné označil ako „hodnota“a „hodnota2“. úlohou for-loop je iterovať rozsah hodnôt pre určenú premennú, ktoré je možné pohodlne definovať v rámci príkazu for-loop; v tomto prípade je táto premenná "n." Rozsah, pre ktorý sa iterácia vyskytuje, je 1 až N+1. Mali by ste si všimnúť, že súčet definovaný vo vyššie uvedených vzorcoch sa pohybuje iba od 1 do N. Definujeme to týmto spôsobom, pretože jazyk Python počíta každú iterovanú hodnotu od nuly, takže v zásade musíme posunúť rozsah hodnôt tak, aby zodpovedali nášmu požadovanému rozsah. For-loop potom umožňuje súčet všetkých výšok obdĺžnika dohromady a uloží túto hodnotu do premennej, ktorú som nazval „hodnota“. Je to vidieť na časti kódu, ktorá sa ukazuje ako: hodnota += f (a +((n- (1/2))*((b-a)/N))).
Odtiaľ nasledujúci kus kódu používa premennú s názvom „hodnota2“, ktorej je potom priradený súčet všetkých výšok každého obdĺžnika vynásobený štandardizovanou šírkou každého obdĺžnika-toto je naša konečná odpoveď, ktorú chceme zobrazuje náš program, a je teda návratovou hodnotou funkcie „Integrovať“Python.
Krok 7: Vytvorenie programu Časť 4: Zobrazenie odpovede
Skopírujte kód na obrázku pod predchádzajúcim kódom.
Teraz, keď je možné odpoveď získať prostredníctvom funkcie „Integrovať“v jazyku Python, chceme ju vedieť zobraziť. Ide len o to vložiť hodnoty, ktoré zadal používateľ („N“, „a“a „b“) do funkcie „Integrovať“Python, a vytlačiť ich na obrazovku. Tento príkaz je zobrazený na riadku 21 a je to skutočne všetko, čo musíte urobiť, aby ste tento krok dokončili. Kód na riadkoch 19 a 20 slúži len na to, aby „pekne“vylepšil výstup celého programu. „print (“………………………. “)“oddeľuje vstupnú časť programu od výstupnej a „print (“Tu je vaša odpoveď: „)“je len označenie, ktoré odpoveď prinesie sa vytlačia za tento riadok textu.
Krok 8: Spustenie programu Časť 1: Spustenie programu tak, ako je
Ak nepoužívate baldachýn, pravdepodobne tento krok ani nemusíte vôbec vykonávať a spustenie programu môže vyžadovať iné postupy. V programe Canopy budete musieť program uložiť, kým ho budete môcť spustiť. Typ súboru pre program Python je súbor.py-automaticky sa uloží ako tento. Vyberte, kam chcete súbor uložiť, potom budete môcť program spustiť.
Spustenie programu:
- Stlačte zelené tlačidlo, ktoré vyzerá ako „tlačidlo prehrávania“umiestnené na paneli s nástrojmi tesne nad miestom, kde sa zobrazuje názov vášho súboru (pozri obrázok).
- Program sa potom spustí v spodnej časti editora, ktorý je známy ako prostredie Canopy na analýzu údajov. Za predpokladu, že ste skopírovali výzvy, ako som ich napísal, mali by ste v spodnej časti prostredia analýzy údajov Canopy vidieť výzvu: „Zadajte, koľkokrát chcete súčet (viackrát = presnejšie):.“(pozri obrázok)
- Zadajte hodnotu, koľkokrát chcete vykonať iteráciu, tj. 10 000 (koľko obdĺžnikov chcete vložiť do svojej oblasti), potom stlačte kláves Enter.
- Zobrazí sa viac výziev s vyhláseniami, ktoré by mali byť známymi vstupnými výzvami, ktoré ste kódovali do programu v kroku 5. Vyplňte ich primerane rovnako ako v bode 3 vyššie.
- Integrál by sa mal vyhodnotiť a mal by sa objaviť výsledok.
Ak ste kódovali program podľa predchádzajúcich obrázkov, práve ste integrovali f (x) = x^2 cez niektoré hranice. Integrál x^2 sa dá ľahko vyhodnotiť ručne, preto by ste mali skontrolovať a uistiť sa, že program poskytol veľmi podrobnú odpoveď na správnu analytickú hodnotu určenú ručne. Keď spustím program s hodnotami N = 10 000, a = 0, a b = 10, dostanem odpoveď 333,33333249999964. Správna analytická odpoveď je 333,333. Je to neuveriteľne presné a rýchle. V podstate ste stlačili 10 000 obdĺžnikov medzi 0 a 10 na osi x a použili ste ich na aproximáciu oblasti pod krivkou x^2!
Krok 9: Spustenie programu Časť 2: Integrácia ďalších matematických funkcií
Ak ste v predchádzajúcom kroku verne nasledovali, integrovali ste f (x) = x^2. Nie je to jediná matematická funkcia, ktorú tento program môže integrovať. Pripomeňme si z kroku 5, že ste do programu importovali pole matematickej knižnice funkcií Pythonu. To vám umožní používať komplikovanejšie matematické funkcie, ktoré je možné integrovať. Skúsme jeden. Samozrejme, môžete použiť akúkoľvek funkciu, ktorú by ste chceli, ale ďalej budem demonštrovať presnosť tohto kódu integráciou konkrétnej matematickej funkcie, ktorá pri integrácii v určitom rozsahu prinesie dobre známu hodnotu. Táto funkcia je f (x) = Sin [x]. Táto matematická funkcia je zobrazená na prvom sprievodnom obrázku vynesenom od 0 do 2π a oblasť záujmu je tieňovaná tyrkysovou farbou. V tomto intervale je rovnaké množstvo pozitívnej oblasti, ako aj negatívnej oblasti, takže ak sčítate celkovú plochu, mala by vám vyjsť nula. Uvidíme, či sa to skutočne stane:
Vloženie matematickej funkcie f (x) = Sin [x] do programu:
- Pred opätovným spustením programu do komentára „#type your function after return“napíšte: sin (x), kde sa aktuálne nachádza x ** 2. (pozri obrázok).
- Spustite program opätovným stlačením zeleného tlačidla prehrávania.
- Ako hodnotu N zadajte 10 000 (koľkokrát chcete súčet).
- zadajte „0“pre dolnú hranicu.
- Zadajte 6,2832 pre hornú hranicu (približne 2π).
- Pozrite sa, akú hodnotu získate.
Keď som to urobil, nakoniec som získal hodnotu 1,079e-10: to sa rovná 0,0000000001079, čo je skutočne blízko nuly, takže sa zdá, že je to presné a ukazuje, že algoritmus adekvátne zvláda negatívnu oblasť.
Krok 10: Spustenie programu Časť 3: Rozbalenie programu
V tomto bode ste hotoví: máte funkčný integrálny algoritmus kódovaný v Pythone, ktorý beží hladko a poskytuje veľmi presné odpovede. Tento program je však možné vylepšiť. Nie som programátor a s Pythonom mám minimálne skúsenosti. V skutočnosti som sa musel obnoviť používanie Pythonu na dokončenie tohto tutoriálu, ale to by ti malo dodať istotu, že Python je taký ľahký jazyk na naučenie. Ide mi o to, aby ste mohli tento program rozšíriť tak, že ho zefektívni, možno implementuje nejaké GUI a urobí ho užívateľsky prívetivejším.
Moje úvahy o rozšírení programu:
- Implementujte grafické používateľské rozhranie, ktoré vám umožní spustiť program bez použitia prostredia interaktívnej analýzy údajov Canopy
- Vykonajte to tak, aby integrovaná matematická funkcia nemusela byť zadaná vo vnútri programu, ale mohla byť zadaná po spustení programu (Pôvodne som sa to pokúšal urobiť, ale nemohol som na to prísť).
- Definujte funkciu „Integrovať“Pythonu, aby funkcia f (x) bola definovaná tak, že je v nej definovaná funkcia f (x).
Toto je len niekoľko príkladov oblastí zlepšenia, ale zaručujem, že existuje mnoho ďalších oblastí, ktoré je možné zlepšiť. Tento krok preto ponechávam ako príklad chýb, ktoré tento program má, a možno je to cvičenie pre každého, kto chce program ďalej zlepšovať.
Odporúča:
Šifrovací program Caesar v Pythone: 4 kroky
Program Caesar Cipher v Pythone: Caesar Cipher je starodávna a široko používaná šifra, ktorú je ľahké šifrovať a dešifrovať. Funguje to tak, že posuniete písmená abecedy a vytvoríte úplne novú abecedu (ABCDEF by sa mohol posunúť o 4 písmená a stal by sa EFGHIJ). Caesar C
Ako vytvoriť slučku while v Pythone: 9 krokov
Ako vytvoriť slučku while v Pythone: V programovaní existujú momenty, kedy musíte na vyriešenie problému zopakovať sériu krokov. Cyklus while vám umožňuje prechádzať časťou kódu bez toho, aby ste museli písať opakovaný kód. Pri programovaní napíšte ten istý kód a
Ako vypočítať plochu lichobežníka v Pythone?: 5 krokov
Ako vypočítať plochu lichobežníka v Pythone?: S týmto návodom budete môcť poznať oblasť akéhokoľvek daného lichobežníka pomocou programu v pythone
Ako: Vytvorenie náhodného generátora hesiel v Pythone: 8 krokov
Ako: Vytvorenie generátora náhodných hesiel v Pythone: V tomto tutoriáli sa naučíte, ako vytvoriť generátor náhodných hesiel pomocou pythonu v niekoľkých jednoduchých krokoch
Ako vytvoriť jednoduchý chatovací program v jazyku Visual Basic pomocou ovládacieho prvku Microsoft Winsock: 7 krokov
Ako vytvoriť jednoduchý chatovací program v jazyku Visual Basic pomocou ovládacieho prvku Microsoft Winsock: V tejto intuitívnej verzii vám ukážem, ako vytvoriť jednoduchý chatovací program v jazyku Visual Basic. Prejdem sa k tomu, čo všetko kód robí, takže sa naučíte, ako ho vytvoríte, a na konci vám ukážem, ako ho používať