Cuprins:

Cum să faci un program de integrare numerică în Python: 10 pași
Cum să faci un program de integrare numerică în Python: 10 pași

Video: Cum să faci un program de integrare numerică în Python: 10 pași

Video: Cum să faci un program de integrare numerică în Python: 10 pași
Video: Cum sa scrii un program in PYTHON care genereaza TESTE si verifica RASPUNSURILE 2024, Iulie
Anonim
Cum se face un program de integrare numerică în Python
Cum se face un program de integrare numerică în Python

Acesta este un tutorial despre cum să creați și să rulați un program care va evalua integralele definite folosind un algoritm de integrare numerică. Am împărțit pașii în 3 secțiuni: înțelegerea algoritmului care va fi folosit pentru realizarea programului, codificarea programului utilizând limbajul de programare Python și rularea programului. Acest tutorial este destinat cuiva care ar putea avea nevoie să facă rapid un calculator pentru a evalua integrale definite sau poate că are nevoie de algoritm pentru a fi utilizat într-un program la scară mai mare. Se așteaptă cunoștințe de bază de calcul, dar sunt analizate informațiile matematice relevante. Cunoașterea programării nu este de așteptat, dar este utilă, deoarece descriu doar pe scurt modul în care funcționează de fapt programarea.

Ce vei avea nevoie:

Un computer personal cu acces la internet

Pasul 1: Înțelegerea algoritmului Partea 1: integrala definită și utilizarea sa

Înțelegerea algoritmului Partea 1: integrala definită și utilizarea sa
Înțelegerea algoritmului Partea 1: integrala definită și utilizarea sa

Voi presupune că știți puțin despre ce este o integrală în contextul calculului de bază. Integralele sunt importante deoarece vă permit să însumați o serie de valori înmulțite cu o lungime infinitesimală; acest lucru este util în multe domenii ale finanțelor, teoriei numerelor, fizicii, chimiei, precum și în multe alte domenii. Cu toate acestea, acest program vă va permite să calculați suprafața de sub o curbă pentru un interval finit sau, cu alte cuvinte, nu evaluează anti-derivatele - este necesar un algoritm mult mai puternic. Acest algoritm este util dacă trebuie să evaluați o integrală definită într-un program mai mare specificat spre altceva sau dacă doriți să verificați răspunsul pentru orice integrale definite făcute manual.

O integrală definită de bază reprezintă aria de sub o curbă definită de o funcție de ex. f (x). Pentru o integrală definită, căutăm aria dintre două puncte (etichetate respectiv a și b). În imagine, regiunea turcoaz este zona la care mă refer și ecuația pentru determinarea acestui lucru este prezentată și în acea regiune. Funcția afișată în imagine este arbitrară.

Pasul 2: Înțelegerea algoritmului Partea 2: Aproximare numerică

Înțelegerea algoritmului Partea 2: Aproximare numerică
Înțelegerea algoritmului Partea 2: Aproximare numerică

Un computer are nevoie de un set larg de instrucțiuni pentru a calcula acea zonă sub o funcție arbitrară care va funcționa pentru orice funcție, astfel încât metodele analitice cu care ați putea fi familiarizați nu sunt de nici un folos, deoarece sunt prea particulare. O metodă de calculare a integralelor aproximativ, pe care un computer o poate gestiona, se face prin umplerea zonei de interes cu o cantitate definită de utilizator de dreptunghiuri cu lățime egală și înălțime variabilă, însumând apoi toate zonele dreptunghiului. Proprietățile rigide ale dreptunghiurilor vor lăsa neatinsă o parte din aria totală, de aceea acest lucru este considerat o aproximare; cu toate acestea, cu cât puteți înghesui mai multe dreptunghiuri între limite (a și b), cu atât aproximarea va fi mai precisă, deoarece regiunile neatinse devin mai rare. Deoarece un computer va îndeplini sarcina, puteți seta numărul dreptunghiurilor din regiunea dorită să fie un număr foarte mare, făcând aproximarea extrem de precisă. În imaginea de susținere, imaginați-vă că fiecare dreptunghi din zona desemnată are o lățime egală. Am făcut tot posibilul pentru a le face cu lățimea egală în Microsoft Paint, dar nu am făcut cea mai bună treabă.

Pasul 3: Înțelegerea algoritmului Partea 3: regula punctului de mijloc

Înțelegerea algoritmului Partea 3: regula punctului de mijloc
Înțelegerea algoritmului Partea 3: regula punctului de mijloc

Această regulă desemnează modul în care dreptunghiurile sunt făcute și utilizate în aproximare. Fiecare dreptunghi din „N” dreptunghiuri trebuie să aibă o lățime egală, Δx, dar fiecare al doilea dreptunghi nu poate fi exact același: factorul variabil este înălțimea care variază ca funcție evaluată la un anumit punct. Regula punctului mijlociu își primește numele din faptul că evaluați înălțimea fiecărui dreptunghi ca f (x_n), unde „x_n” este punctul central al fiecărui dreptunghi, așa cum se aplică în stânga sau în dreapta dreptunghiului. Utilizarea punctului de mijloc este ca și cum ați implementa o medie care va face aproximarea mai precisă decât dacă ați folosi dreapta sau stânga. Imaginea de sprijin pentru acest pas rezumă modul în care regula punctului mediu este definită matematic.

Pasul 4: Crearea programului Partea 1: Descărcarea unui compilator / editor Python

Acum că înțelegeți algoritmul care trebuie implementat, este o chestiune de a obține un computer care să efectueze calculul pentru dvs. Primul pas pentru a spune unui computer ce să facă este să obțineți instrumentele pentru a face acest lucru. Acest algoritm poate fi codat în orice limbă; pentru simplitate, acest program va fi codat în limbajul Python. Pentru a comanda computerului dvs. să efectueze operațiuni cu Python, veți avea nevoie de un editor care să preia instrucțiuni scrise în limba respectivă, care vor fi apoi compilate în limbajul mașinii pe care computerul dvs. le poate înțelege, astfel încât să poată îndeplini sarcinile pe care i le spuneți să facă. În zilele noastre, un editor și un compilator sunt de obicei integrați, totuși nu este întotdeauna cazul. Puteți folosi orice editor / compilator cu care vă simțiți confortabil, dar vă voi arăta cum să obțineți favoritul meu personal pentru Python: Canopy. Dacă aveți deja un editor / compilator, puteți sări peste acești pași.

  1. Accesați
  2. Faceți clic pe Descărcați canopy
  3. Faceți clic pe butonul de descărcare corespunzător sistemului dvs. de operare

    Descărcarea va începe automat

  4. Urmați instrucțiunile de instilare după ce ați început fișierul de execuție
  5. Rulați programul
  6. Faceți clic pe „Editor” din meniul principal al programului
  7. Faceți clic pe „creați un fișier nou” în centrul ecranului

Din acest moment ar trebui să vedeți o fereastră albă goală, cu un cursor asemănător unui document de bază de procesare a textului. Acum sunteți gata să începeți codarea algoritmului de integrare numerică pentru rezolvarea integralelor definite. Pașii care urmează vor avea un fragment de cod pe care îl veți copia și o explicație a ceea ce face fragmentul respectiv pentru întregul program.

Pasul 5: Crearea programului Partea 2: Importarea funcțiilor și definirea variabilelor

Crearea programului Partea 2: Importarea funcțiilor și definirea variabilelor
Crearea programului Partea 2: Importarea funcțiilor și definirea variabilelor

Copiați codul din imagine.

Pentru orice program pe care l-ați putea codifica, vor exista variabile. O variabilă este un nume dat unei valori care va fi operată și care se poate schimba. În majoritatea limbajelor de programare (dacă nu în toate), trebuie să inițializați o variabilă înainte ca programul să poată face modificări. În cazul acestui program, am numit variabilele „N”, „a” și „b”. Aceste valori reprezintă numărul de iterații (AKA număr de dreptunghiuri), limita inferioară și respectiv limita superioară. Puteți denumi aceste lucruri orice doriți, dar pentru a se potrivi cu formulele date în „Înțelegerea algoritmului Partea 3: Regula punctului de mijloc”, este mai bine să le păstrați la fel. Observați că acestea nu sunt setate doar la o anumită valoare. Acest lucru se datorează faptului că acestea sunt intrări care, atunci când programul este rulat, utilizatorul programului poate defini care va fi valoarea. Textul între ghilimele, după comanda de introducere, apare atunci când rulați programul, spunându-vă ce tip de valoare să introduceți. Veți observa, de asemenea, că „int” și „float” sunt utilizate înainte de denumirile de intrare. Acești termeni spun computerului ce tip de variabilă va fi această valoare. Un „int” este un număr întreg, iar un „float” este o valoare în virgulă mobilă (adică o zecimală). Ar trebui să fie clar de ce acestea sunt desemnate ca atare.

Orice text prezent după un „#” este un comentariu care permite programatorului să urmeze codul într-un mod umanist; Am făcut anumite comentarii în codul meu pe care le veți copia, dar nu ezitați să adăugați orice comentarii care vă ajută în mod specific. Programul nu va citi nimic cu un „#” înainte ca comandă.

Porțiunea de cod care citește „din importul matematic *” îi spune programului să importe o serie de funcții matematice care pot fi utilizate fără a fi nevoie să le programați în dumneavoastră. „*” Înseamnă doar „toate”. Citiți această porțiune de cod ca: din biblioteca matematică importați toate funcțiile. Acest lucru vă permite să utilizați funcții matematice precum sinus, cosinus, jurnal, exp etc. Aceste funcții pot fi integrate matematic în cod.

Pasul 6: Crearea programului Partea 3: Crearea unei funcții pentru integrare

Crearea programului Partea 3: Crearea unei funcții pentru integrare
Crearea programului Partea 3: Crearea unei funcții pentru integrare

Copiați codul din imaginea de sub codul anterior.

AVERTISMENT: Această secțiune este densă și vreau să clarific câteva lucruri care ar putea confunda. Când vorbim despre programare, cuvântul „funcție” apare foarte mult. De asemenea, acest termen apare foarte mult atunci când vorbești despre matematică. Deci, din acest moment, când vorbesc despre o funcție în sensul programării, voi scrie „funcția Python”, iar când vorbesc despre funcția matematică, voi spune „funcția matematică”. La un moment dat vom folosi o funcție Python ca reprezentare pentru funcția matematică în cauză.

Următorul fragment de cod este inima programului. Aici este definită o funcție Python care realizează algoritmul integrării numerice utilizând regula punctului mediu. „def Integrate (N, a, b)” citește: definește o funcție numită „Integrate” care acceptă variabilele „N”, „a” și „b” și returnează aria de sub curbă (funcția matematică) care este, de asemenea, definit în cadrul funcției Python „Integrare”. Puteți numi această funcție Python orice atunci când efectuați codarea, dar este logic să o numiți integrată, deoarece este o funcție care integrează într-adevăr o funcție matematică.

În acest moment merită să comentăm modul în care Python separă blocurile de cod. Un bloc de cod este o întreagă secțiune care efectuează o anumită sarcină. Diferite limbaje de programare vor avea modalități desemnate de a distinge aceste „blocuri”. Pentru Python, un bloc se distinge prin indentări: fiecare secțiune de executare a sarcinii are propria liniuță și pot exista blocuri indentate în alte blocuri indentate. Aceasta reprezintă sarcini în cadrul sarcinilor și, în esență, spune ordinea în care codul trebuie executat. În cazul funcției Python definite "Integrare", totul din acea funcție este indentat într-un bloc, distingând astfel sarcinile care vor fi executate în cadrul acelei funcții. În această funcție Python există părți indentate care își îndeplinesc și propriile sarcini. Merge după cum urmează: o comandă (sarcină) este stabilită, două puncte urmează comanda și ceea ce face comanda este indentat dedesubt.

Imediat după definirea funcției Python „integrate”, veți defini o altă funcție Python numită f (x). Aceasta reprezintă funcția matematică care va fi integrată. Pentru fiecare funcție matematică diferită pe care doriți să o integrați, va trebui să mergeți la această linie de program pentru ao schimba (spre deosebire de variabilele care sunt definite atunci când programul este rulat). Fiecare funcție Python va avea o valoare de returnare, aceasta este ceea ce returnează funcția atunci când îi aruncați o valoare. În acest caz, valoarea aruncată este „x”, iar acest termen „x” va lua valoarea a ceea ce aruncați vreodată - este o valoare temporară.

Apoi, o buclă for acționează ca însumarea definită în formulele din secțiunea „Înțelegerea algoritmului” din acest tutorial. Această însumare necesită încă câteva variabile, dintre care una va acționa ca valoare returnată pentru întreaga funcție Python „Integrare”. Înainte de buclă, am desemnat aceste variabile ca „valoare” și „valoare2”. sarcina buclei pentru este de a itera pe o gamă de valori pentru o variabilă desemnată, care poate fi definită în mod convenabil în cadrul comenzii pentru buclă; în acest caz, acea variabilă este „n”. Intervalul pentru care apare iterația este de la 1 la N + 1. Trebuie să observați că sumarea definită în formulele menționate mai sus variază doar de la 1 la N. Noi o definim astfel, deoarece limbajul Python contorizează fiecare valoare iterată începând de la zero, deci trebuie să schimbăm gama valorilor pentru a se potrivi cu valoarea dorită. gamă. Bucla for permite apoi însumarea tuturor înălțimilor dreptunghiului împreună și stochează acea valoare în variabila pe care am numit-o „valoare”. Acest lucru este văzut în fragmentul de cod care apare ca: valoare + = f (a + ((n- (1/2)) * ((b-a) / N))).

De acolo, următoarea piesă a codului folosește variabila numită "valoare2", care este apoi atribuită pentru a fi suma tuturor înălțimilor fiecărui dreptunghi înmulțit cu lățimea standardizată a fiecărui dreptunghi - acesta este răspunsul nostru final pe care îl dorim afișat de programul nostru și este astfel valoarea returnată a funcției Python „Integrare”.

Pasul 7: Crearea programului Partea 4: Afișarea răspunsului

Crearea programului Partea 4: Afișarea răspunsului
Crearea programului Partea 4: Afișarea răspunsului

Copiați codul din imaginea de sub codul anterior.

Acum că răspunsul poate fi obținut prin funcția Python „Integrare”, vrem să îl putem afișa. Aceasta este doar o chestiune de a introduce valorile introduse de utilizator („N”, „a” și „b”) în funcția Python „Integrare” și de a le imprima pe ecran. Această comandă este afișată pe linia 21 și este într-adevăr tot ce trebuie să faceți pentru a finaliza acest pas. Codul de pe liniile 19 și 20 este doar acolo pentru a „crește” rezultatul întregului program. "print (" ……………………. ")" separă secțiunea de intrare a programului de secțiunea de ieșire, iar "print (" Iată răspunsul tău: ")" este doar o denumire pe care răspunsul o va să fie tipărite după acea linie de text.

Pasul 8: Rularea programului Partea 1: Rularea programului așa cum este

Rularea programului Partea 1: Rularea programului așa cum este
Rularea programului Partea 1: Rularea programului așa cum este

Dacă nu utilizați Canopy, atunci probabil că nici nu trebuie să urmați deloc acest pas și rularea programului poate necesita proceduri diferite. În Canopy, înainte de a putea rula programul, va trebui să îl salvați. Tipul de fișier pentru un program Python este un fișier.py - se salvează automat astfel. Alegeți unde doriți să fie salvat fișierul, apoi veți putea rula programul.

Rularea programului:

  1. Apăsați butonul verde care arată ca un „buton de redare” situat pe bara de instrumente chiar deasupra locului unde apare numele fișierului dvs. (consultați imaginea).
  2. Programul va rula apoi în ecranul de jos al editorului, cunoscut sub numele de mediul de analiză a datelor Canopy. Presupunând că ați copiat solicitările așa cum le-am scris, ar trebui să vedeți în partea de jos a mediului de analiză a datelor Canopy solicitarea: "Introduceți de câte ori doriți să însumați (mai multe ori = mai precis):." (consultați imaginea)
  3. Introduceți o valoare de câte ori doriți să faceți iterația, adică 10000 (câte dreptunghiuri doriți să introduceți în zona dvs.), apoi apăsați Enter.
  4. Vor apărea mai multe solicitări cu instrucțiuni care ar trebui să fie instrucțiunile de intrare familiare pe care le-ați codat în program la pasul 5. Completați-le în mod corespunzător la fel ca la numărul 3 de mai sus.
  5. Integrala ar trebui evaluată și ar trebui să apară un rezultat.

Dacă ați codat programul așa cum se arată în imaginile precedente, tocmai ați integrat f (x) = x ^ 2 peste niște limite. Integrala lui x ^ 2 este ușor de evaluat manual, de aceea ar trebui să verificați și să vă asigurați că programul a dat un răspuns foarte apropiat la valoarea analitică corectă determinată manual. Când rulez programul cu valorile N = 10000, a = 0 și b = 10, primesc răspunsul 333.33333249999964. Răspunsul analitic corect este 333.333. Acest lucru este incredibil de precis și de rapid. Ați strâns, în esență, 10 000 de dreptunghiuri între 0 și 10 pe axa x și le-ați folosit pentru a aproxima aria de sub curba x ^ 2!

Pasul 9: Rularea programului Partea 2: Integrarea altor funcții matematice

Rularea programului Partea 2: Integrarea altor funcții matematice
Rularea programului Partea 2: Integrarea altor funcții matematice

În pasul anterior, dacă ați urmărit cu fidelitate, ați integrat f (x) = x ^ 2. Aceasta nu este singura funcție matematică pe care acest program o poate integra. Reamintim de la pasul 5 că ai importat matricea bibliotecii matematice a funcțiilor Python în program. Acest lucru vă permite să utilizați funcții matematice mai complicate care pot fi integrate. Hai să-i dăm o lovitură. Desigur, puteți utiliza orice funcție doriți, dar voi demonstra în continuare acuratețea acestui cod prin integrarea unei anumite funcții matematice care dă o valoare bine cunoscută atunci când este integrată într-un anumit interval. Această funcție este f (x) = Sin [x]. Această funcție matematică este afișată în prima imagine însoțitoare, reprezentată de la 0 la 2π, iar zona de interes este umbrită în turcoaz. Există o cantitate egală de suprafață pozitivă, deoarece există o zonă negativă în acest interval, deci dacă adăugați suprafața totală, ar trebui să obțineți zero. Să vedem dacă acest lucru se întâmplă de fapt:

Punerea funcției matematice f (x) = Sin [x] în program:

  1. Înainte de a rula din nou programul, sub comentariul "#tipează-ți funcția după returnare", tastați: sin (x) unde se află în prezent x ** 2. (consultați imaginea).
  2. Rulați programul apăsând din nou butonul verde de redare.
  3. Tastați 10000 pentru valoarea N (de câte ori doriți să însumați).
  4. introduceți „0” pentru limita inferioară.
  5. Introduceți 6.2832 în limita superioară (aproximativ 2π).
  6. Vedeți ce valoare obțineți.

Când am făcut acest lucru, am ajuns să obțin o valoare de 1.079e-10: aceasta echivalează cu.0000000001079, care este cu adevărat aproape de zero, deci pare a fi exact și arată că algoritmul tratează în mod adecvat zona negativă.

Pasul 10: Rularea programului Partea 3: Extinderea programului

În acest moment ați terminat: aveți un algoritm integral funcțional, codificat în Python, care rulează fără probleme și oferă răspunsuri foarte precise. Cu toate acestea, acest program poate fi îmbunătățit. Nu sunt programator și am o experiență minimă cu Python. De fapt, a trebuit să mă reîmprospătez folosind Python pentru a finaliza acest tutorial, dar asta ar trebui să vă ofere încredere că Python este un limbaj atât de ușor de învățat. Ideea mea este că puteți extinde acest program făcându-l mai eficient, poate implementați unele interfețe grafice și îl faceți mai ușor de utilizat.

Gândurile mele despre extinderea programului:

  • Implementați o interfață grafică de utilizator care vă permite să rulați programul fără a utiliza mediul interactiv de analiză a datelor Canopy
  • Faceți-o astfel încât funcția matematică care urmează să fie integrată nu trebuie să fie introdusă în interiorul programului, ci poate fi introdusă după rularea programului (inițial încercam să fac acest lucru, dar nu mi-am dat seama).
  • Definiți o funcție Python „Integrare”, astfel încât să ia funcția f (x) așa cum se presupune că funcția f (x) este definită în ea.

Acestea sunt doar câteva exemple de domenii de îmbunătățire, dar garantez că există multe alte domenii care pot fi îmbunătățite. Așa că las acest pas ca un exemplu al defectelor pe care le are acest program și poate ca un exercițiu pentru oricine dorește să îmbunătățească în continuare programul.

Recomandat: