Obsah:

Jak vytvořit program číselné integrace v Pythonu: 10 kroků
Jak vytvořit program číselné integrace v Pythonu: 10 kroků

Video: Jak vytvořit program číselné integrace v Pythonu: 10 kroků

Video: Jak vytvořit program číselné integrace v Pythonu: 10 kroků
Video: Nedoceněný datový typ: MNOŽINY (Python pro začátečníky) 2024, Červenec
Anonim
Jak vytvořit program číselné integrace v Pythonu
Jak vytvořit program číselné integrace v Pythonu

Toto je návod, jak vytvořit a spustit program, který vyhodnotí určité integrály pomocí algoritmu numerické integrace. Kroky jsem rozdělil do 3 částí: porozumění algoritmu, který bude použit k vytvoření programu, kódování programu pomocí programovacího jazyka Python a spuštění programu. Tento tutoriál je určen pro někoho, kdo může potřebovat rychle vytvořit kalkulačku k vyhodnocení určitých integrálů, nebo možná potřebuje algoritmus pro použití v programu ve větším měřítku. Očekává se základní znalost počtu, ale relevantní matematické informace jsou zkontrolovány. Znalost programování se neočekává, ale je užitečná, protože pouze stručně popisuji, jak programování ve skutečnosti funguje.

Co budete potřebovat:

Osobní počítač s přístupem na internet

Krok 1: Porozumění algoritmu Část 1: Definitivní integrál a jeho použití

Pochopení algoritmu Část 1: Definitivní integrál a jeho použití
Pochopení algoritmu Část 1: Definitivní integrál a jeho použití

Budu předpokládat, že víte trochu o tom, co je integrál v kontextu základního počtu. Integrály jsou důležité, protože vám umožňují sečíst pole hodnot vynásobených nekonečně malou délkou; to je užitečné v mnoha oblastech financí, teorie čísel, fyziky, chemie a mnoha dalších oborů. Tento program vám však umožní vypočítat oblast pod křivkou pouze pro konečný interval, nebo jinými slovy, nevyhodnocuje antideriváty-k tomu je zapotřebí mnohem výkonnější algoritmus. Tento algoritmus je užitečný, pokud potřebujete vyhodnotit určitý integrál ve větším programu určeném směrem k něčemu jinému, nebo pokud chcete ve své odpovědi zkontrolovat nějaké definitivní integrály prováděné ručně.

Základní určitý integrál představuje oblast pod křivkou definovanou funkcí, např. f (x). Pro určitý integrál hledáme oblast mezi dvěma body (označenými a a b). Na obrázku je tyrkysová oblast oblastí, o které mluvím, a rovnice pro její určení je v této oblasti také znázorněna. Funkce zobrazená na obrázku je libovolná.

Krok 2: Porozumění algoritmu Část 2: Numerická aproximace

Pochopení algoritmu Část 2: Numerická aproximace
Pochopení algoritmu Část 2: Numerická aproximace

Počítač potřebuje širokou sadu pokynů pro výpočet této oblasti pod libovolnou funkcí, která bude fungovat pro jakoukoli funkci, takže analytické metody, které možná znáte, nejsou k ničemu, protože jsou příliš konkrétní. Jeden způsob výpočtu přibližně integrálů, který počítač ve skutečnosti zvládne, se provádí vyplněním oblasti zájmu uživatelem definovaným množstvím obdélníků stejné šířky a proměnné výšky a sečtením všech oblastí obdélníku. Tuhé vlastnosti obdélníků ponechají část celkové plochy nedotčenou, a proto je to považováno za přiblížení; čím více obdélníků můžete vtěsnat mezi hranice (a a b), tím přesnější bude aproximace, protože nedotčené oblasti budou řidší. Vzhledem k tomu, že úlohu bude provádět počítač, můžete nastavit počet obdélníků v požadované oblasti na velmi velké číslo, což činí aproximaci extrémně přesnou. Na podpůrném obrázku si představte, že každý obdélník v určené oblasti má stejnou šířku. Udělal jsem maximum, aby byly v programu Microsoft Paint stejné šířky, ale neodvedl jsem nejlepší práci.

Krok 3: Porozumění algoritmu Část 3: Pravidlo středového bodu

Pochopení algoritmu Část 3: Pravidlo středového bodu
Pochopení algoritmu Část 3: Pravidlo středového bodu

Toto pravidlo určuje, jak jsou obdélníky vytvářeny a používány při aproximaci. Každý obdélník z „N“obdélníků musí mít stejnou šířku Δx, ale každý n -tý obdélník nemůže být úplně stejný: měnícím se faktorem je výška, která se mění podle toho, jak je funkce vyhodnocena v určitém bodě. Pravidlo středového bodu má svůj název podle skutečnosti, že výšku každého obdélníku vyhodnocujete jako f (x_n), kde „x_n“je příslušný středový bod každého obdélníku, jak je uvedeno vlevo nebo vpravo od obdélníku. Použití středového bodu je jako implementace průměru, díky kterému bude aproximace přesnější, než kdybyste použili vpravo nebo vlevo. Podpůrný obrázek pro tento krok shrnuje, jak je pravidlo středu definováno matematicky.

Krok 4: Vytvoření programu Část 1: Stažení kompilátoru/editoru Pythonu

Nyní, když rozumíte algoritmu, který je třeba implementovat, jde o to, nechat počítač provést výpočet za vás. Prvním krokem k tomu, abyste počítači řekli, co má dělat, je získat k tomu nástroje. Tento algoritmus lze kódovat v jakémkoli jazyce; pro jednoduchost bude tento program kódován v jazyce Python. Chcete -li svému počítači přikázat provádět operace s Pythonem, budete potřebovat editor, který přebírá pokyny napsané v tomto jazyce, který bude poté zkompilován do strojového jazyka, kterému váš počítač rozumí, aby mohl provádět úkoly, které mu řeknete. V dnešní době jsou editor a kompilátor obvykle integrovány, ale ne vždy tomu tak je. Můžete použít jakýkoli editor/kompilátor, který vám vyhovuje, ale já vám ukážu, jak získat můj osobní oblíbený pro Python: Canopy. Pokud již máte editor/kompilátor, můžete tyto kroky přeskočit.

  1. Přejděte na
  2. Klikněte na Stáhnout stříšku
  3. Klikněte na tlačítko stahování odpovídající vašemu operačnímu systému

    Stahování se spustí automaticky

  4. Po spuštění spouštěcího souboru postupujte podle pokynů k nakapání
  5. Spusťte program
  6. V hlavní nabídce programu klikněte na „Editor“
  7. Ve středu obrazovky klikněte na „vytvořit nový soubor“

Od tohoto bodu byste měli vidět prázdné bílé okno s kurzorem připomínajícím základní dokument pro zpracování textu. Nyní jste připraveni začít kódovat algoritmus numerické integrace pro řešení určitých integrálů. Následující kroky budou obsahovat úryvek kódu, který zkopírujete, a vysvětlení toho, co tento úryvek dělá pro program jako celek.

Krok 5: Vytvoření programu Část 2: Import funkcí a definování proměnných

Vytvoření programu Část 2: Import funkcí a definování proměnných
Vytvoření programu Část 2: Import funkcí a definování proměnných

Zkopírujte kód na obrázku.

U každého programu, u kterého se ocitnete v kódování, budou existovat proměnné. Proměnná je název přiřazený hodnotě, se kterou se bude operovat a která se může změnit. Ve většině programovacích jazyků (ne -li ve všech) musíte proměnnou inicializovat, než v ní program může provádět změny. V případě tohoto programu jsem pojmenoval proměnné „N“, „a“a „b.“Tyto hodnoty představují počet iterací (AKA počet obdélníků), dolní hranici a horní hranici. Můžete je pojmenovat, jak chcete, ale aby odpovídaly vzorcům uvedeným v části „Porozumění algoritmu část 3: Pravidlo středového bodu“, je nejlepší je ponechat stejné. Všimněte si, že nejsou nastaveny pouze na konkrétní hodnotu. Důvodem je, že jsou to vstupy, které při spuštění programu mohou uživateli programu definovat, jaká bude hodnota. Text v uvozovkách za vstupním příkazem se zobrazí, když spustíte program a řekne vám, jaký typ hodnoty chcete zadat. Rovněž si všimnete, že před vstupními označeními se používají „int“a „float“. Tyto termíny říkají počítači, jaký typ proměnné tato hodnota bude. „Int“je celé číslo a „float“je hodnota s plovoucí desetinnou čárkou (tj. Desetinné číslo). Mělo by být jasné, proč jsou takto označeny.

Jakýkoli text přítomný za „#“je komentář, který umožňuje programátorovi následovat kód humanistickým způsobem; Udělal jsem určité komentáře v mém kódu, které budete kopírovat, ale můžete přidat jakékoli komentáře, které vám konkrétně pomohou. Program jako příkaz nepřečte nic s "#".

Část kódu, která čte „z matematického importu *“, říká programu, aby importoval řadu matematických funkcí, které lze použít, aniž byste je museli programovat sami. Písmeno „*“znamená „vše“. Přečtěte si tuto část kódu jako: z matematické knihovny importujte všechny funkce. To vám umožňuje používat matematické funkce jako sinus, kosinus, log, exp atd. Tyto funkce lze matematicky integrovat do kódu.

Krok 6: Vytvoření programu Část 3: Vytvoření funkce pro integraci

Vytvoření programu Část 3: Vytvoření funkce pro integraci
Vytvoření programu Část 3: Vytvoření funkce pro integraci

Zkopírujte kód na obrázku pod předchozím kódem.

UPOZORNĚNÍ: Tato část je hustá a chci vyjasnit některé věci, které by mohly být potenciálně matoucí. Když mluvíme o programování, hodně se objeví slovo „funkce“. Tento termín se také hodně objevuje, když mluvíte o matematice. Takže od tohoto okamžiku, když mluvím o funkci ve smyslu programování, napíšu „funkce Pythonu“a když mluvím o matematické funkci, řeknu „matematická funkce“. V určitém okamžiku použijeme funkci Pythonu jako reprezentaci dotyčné matematické funkce.

Tento další úryvek kódu je srdcem programu. Zde je definována funkce Pythonu, která provádí algoritmus numerické integrace pomocí pravidla středového bodu. „def Integrate (N, a, b)“zní takto: definujte funkci nazvanou „Integrovat“, která přijímá proměnné „N,“„a“a „b“a vrací oblast pod křivkou (matematická funkce) který je také definován v rámci funkce „Integrovat“Python. Tuto funkci Pythonu můžete při kódování nazvat jakkoli, ale má smysl ji nazývat integrovanou, protože je to funkce, která skutečně integruje matematickou funkci.

V tomto okamžiku stojí za to komentovat, jak Python odděluje bloky kódu. Blok kódu je celá sekce, která provádí určitý úkol. Různé programovací jazyky budou mít určené způsoby, jak tyto „bloky“odlišit. V Pythonu se blok vyznačuje odsazením: každá sekce provádějící úkoly má své vlastní odsazení a v rámci jiných odsazených bloků mohou být odsazené bloky. To představuje úkoly v rámci úkolů a v podstatě určuje pořadí, ve kterém je třeba kód spustit. V případě definované funkce Pythonu „Integrovat“je vše v rámci této funkce odsazeno do jednoho bloku, čímž se rozlišují úkoly, které budou v rámci této funkce prováděny. V této funkci Pythonu jsou odsazené části, které také provádějí své vlastní úkoly. Postup je následující: je uveden příkaz (úkol), dvojtečka následuje příkaz a to, co příkaz dělá, je odsazeno pod ním.

Ihned po definování funkce „integrovat“Python definujete další funkci Pythonu s názvem f (x). To představuje matematickou funkci, která bude integrována. Pro každou jinou matematickou funkci, kterou chcete integrovat, budete muset přejít na tuto řádku programu, abyste ji změnili (na rozdíl od proměnných, které jsou definovány při spuštění programu). Každá funkce Pythonu bude mít návratovou hodnotu, to je funkce, kterou funkce vrací, když jí hodíte hodnotu. V tomto případě je vhozená hodnota „x“a tento výraz „x“převezme hodnotu toho, co hodíte-je to dočasná hodnota.

Dále smyčka for funguje jako součet definovaný ve vzorcích v části „Porozumění algoritmu“tohoto kurzu. Toto shrnutí vyžaduje několik dalších proměnných, z nichž jedna bude fungovat jako návratová hodnota pro celou funkci „Integrovat“Python. Před smyčkou for jsem tyto proměnné označil jako „hodnota“a „hodnota2“. úkolem for-loop je iterovat přes rozsah hodnot pro určenou proměnnou, kterou lze pohodlně definovat v rámci příkazu for-loop; v tomto případě je tato proměnná "n." Rozsah, pro který se iterace vyskytuje, je 1 až N+1. Měli byste si všimnout, že součet definovaný ve výše uvedených vzorcích se pohybuje pouze od 1 do N. Definujeme to tímto způsobem, protože jazyk Python počítá každou iterovanou hodnotu počínaje nulou, takže v podstatě musíme posunout rozsah hodnot tak, aby odpovídaly našemu požadovanému rozsah. For-loop pak umožňuje součet všech výšek obdélníku dohromady a uloží tuto hodnotu do proměnné, kterou jsem nazval „hodnota“. To je vidět na části kódu, která se zobrazuje jako: hodnota += f (a +((n- (1/2))*((b-a)/N))).

Odtud další část kódu využívá proměnnou nazvanou „hodnota2“, která je poté přiřazena jako součet všech výšek každého obdélníku vynásobeného standardizovanou šířkou každého obdélníku-toto je naše konečná odpověď, kterou chceme zobrazuje náš program, a je tedy návratovou hodnotou funkce „Integrovat“Python.

Krok 7: Vytvoření programu Část 4: Zobrazení odpovědi

Vytvoření programu Část 4: Zobrazení odpovědi
Vytvoření programu Část 4: Zobrazení odpovědi

Zkopírujte kód na obrázku pod předchozím kódem.

Nyní, když lze odpověď získat prostřednictvím funkce „Integrovat“Python, chceme ji umět zobrazit. Jde jen o to, vložit hodnoty, které zadal uživatel („N“, „a“a „b“) do funkce „Integrovat“Python, a vytisknout je na obrazovku. Tento příkaz je zobrazen na řádku 21 a je to opravdu vše, co musíte udělat, abyste tento krok dokončili. Kód na řádcích 19 a 20 slouží pouze k „vylepšení“výstupu celého programu. „print (“………………………. “)“odděluje vstupní část programu od výstupní a „print (“Zde je vaše odpověď: „)“je pouze označení, které odpověď vytisknout za tento řádek textu.

Krok 8: Spuštění programu Část 1: Spuštění programu tak, jak je

Spuštění programu Část 1: Spuštění programu tak, jak je
Spuštění programu Část 1: Spuštění programu tak, jak je

Pokud nepoužíváte Canopy, pak pravděpodobně ani nemusíte tento krok vůbec dodržovat a spuštění programu může vyžadovat jiné postupy. V Canopy, než budete moci spustit program, budete ho muset uložit. Typ souboru pro program Python je soubor.py-automaticky se uloží jako tento. Vyberte, kam chcete soubor uložit, poté budete moci spustit program.

Spuštění programu:

  1. Stiskněte zelené tlačítko, které vypadá jako „tlačítko přehrávání“umístěné na panelu nástrojů těsně nad místem, kde se zobrazuje název vašeho souboru (viz obrázek).
  2. Program se poté spustí na spodní obrazovce editoru, který je známý jako prostředí pro analýzu dat Canopy. Za předpokladu, že jste zkopírovali výzvy, jak jsem je napsal, měli byste ve spodní části prostředí pro analýzu dat Canopy vidět výzvu: „Zadejte, kolikrát chcete součet (vícekrát = přesnější):“. (viz obrázek)
  3. Zadejte hodnotu, kolikrát chcete provést iteraci, tj. 10 000 (kolik obdélníků chcete zasunout do vaší oblasti), poté stiskněte klávesu Enter.
  4. Zobrazí se více výzev s příkazy, které by měly být známými vstupními výzvami, které jste zakódovali do programu v kroku 5. Vyplňte je odpovídajícím způsobem jako v bodě 3 výše.
  5. Integrál by měl být vyhodnocen a měl by se objevit výsledek.

Pokud jste kódovali program podle předcházejících obrázků, právě jste integrovali f (x) = x^2 přes některé hranice. Integrál x^2 lze snadno vyhodnotit ručně, proto byste měli zkontrolovat a ujistit se, že program poskytl velmi přesnou odpověď na správnou analytickou hodnotu určenou ručně. Když spustím program s hodnotami N = 10 000, a = 0, a b = 10, dostanu odpověď 333,33333249999964. Správná analytická odpověď je 333,333. To je neuvěřitelně přesné a rychlé. V podstatě jste stlačili 10 000 obdélníků mezi 0 a 10 na ose x a použili je k aproximaci oblasti pod křivkou x^2!

Krok 9: Spuštění programu Část 2: Integrace dalších matematických funkcí

Spuštění programu Část 2: Integrace dalších matematických funkcí
Spuštění programu Část 2: Integrace dalších matematických funkcí

Pokud jste v předchozím kroku věrně sledovali, integrovali jste f (x) = x^2. To není jediná matematická funkce, kterou tento program může integrovat. Vzpomeňte si na krok 5, do kterého jste importovali matematické pole funkcí Pythonu do programu. To vám umožní používat složitější matematické funkce, které lze integrovat. Zkusme jednoho. Samozřejmě můžete použít libovolnou funkci, kterou byste chtěli, ale dále předvedu přesnost tohoto kódu integrací konkrétní matematické funkce, která při integraci v určitém rozsahu poskytne dobře známou hodnotu. Tato funkce je f (x) = Sin [x]. Tato matematická funkce je zobrazena na prvním doprovodném obrázku, vyneseném od 0 do 2π, a oblast zájmu je stínována tyrkysově. V tomto intervalu je stejné množství pozitivní oblasti, protože existuje negativní oblast, takže pokud sečtete celkovou plochu, měli byste dostat nulu. Podívejme se, zda se to skutečně stane:

Vložení matematické funkce f (x) = Sin [x] do programu:

  1. Před opětovným spuštěním programu pod komentář „#type your function after return“zadejte: sin (x) kde x ** 2 se aktuálně nachází. (viz obrázek).
  2. Spusťte program opětovným stisknutím zeleného tlačítka přehrávání.
  3. Pro hodnotu N zadejte 10 000 (kolikrát chcete součet).
  4. pro dolní hranici zadejte „0“.
  5. Pro horní hranici vložte přibližně 6,2832 (přibližně 2π).
  6. Podívejte se, jakou hodnotu získáte.

Když jsem to udělal, nakonec jsem získal hodnotu 1,079e-10: to odpovídá 0,0000000001079, což je opravdu blízko nule, takže se to zdá být přesné a ukazuje, že algoritmus adekvátně zpracovává negativní oblast.

Krok 10: Spuštění programu Část 3: Rozbalení programu

V tuto chvíli máte hotovo: máte funkční jednoznačný integrální algoritmus zakódovaný v Pythonu, který běží hladce a poskytuje velmi přesné odpovědi. Tento program však lze vylepšit. Nejsem programátor a s Pythonem mám minimální zkušenosti. Ve skutečnosti jsem se musel osvěžit v používání Pythonu k dokončení tohoto tutoriálu, ale to by vám mělo dát jistotu, že Python je tak snadné se naučit. Jde mi o to, že tento program můžete rozšířit jeho zefektivněním, možná implementovat nějaké GUI a učinit ho uživatelsky přívětivějším.

Moje myšlenky na rozšíření programu:

  • Implementujte grafické uživatelské rozhraní, které vám umožní spustit program bez použití interaktivního prostředí pro analýzu dat Canopy
  • Vytvořte to tak, aby integrovaná matematická funkce nemusela být zadávána uvnitř programu, ale mohla být zadána po spuštění programu (původně jsem se o to pokoušel, ale nemohl jsem na to přijít).
  • Definujte funkci „Integrovat“Pythonu, aby funkce f (x) byla definována tak, že v ní bude definována funkce f (x).

Toto jsou jen některé příklady oblastí zlepšení, ale zaručuji, že existuje mnoho dalších oblastí, které lze zlepšit. Nechám tedy tento krok jako příklad nedostatků, které tento program má, a možná cvičení pro každého, kdo chce program dále vylepšovat.

Doporučuje: