Satura rādītājs:

Kā izveidot ciparu integrācijas programmu Python: 10 soļi
Kā izveidot ciparu integrācijas programmu Python: 10 soļi

Video: Kā izveidot ciparu integrācijas programmu Python: 10 soļi

Video: Kā izveidot ciparu integrācijas programmu Python: 10 soļi
Video: Java Tech Talk: Telegram бот на java за 1 час 2024, Jūlijs
Anonim
Kā izveidot ciparu integrācijas programmu Python
Kā izveidot ciparu integrācijas programmu Python

Šī ir apmācība par to, kā izveidot un palaist programmu, kas novērtēs noteiktus integrāļus, izmantojot ciparu integrācijas algoritmu. Es esmu sadalījis soļus 3 sadaļās: izpratne par algoritmu, kas tiks izmantots programmas izveidei, programmas kodēšana, izmantojot programmēšanas valodu Python, un programmas palaišana. Šī apmācība ir paredzēta cilvēkiem, kuriem, iespējams, vajadzēs ātri izveidot kalkulatoru, lai novērtētu noteiktus integrāļus, vai, iespējams, nepieciešams algoritms izmantošanai lielāka mēroga programmā. Tiek gaidītas pamatzināšanas par aprēķiniem, bet tiek pārskatīta atbilstošā matemātiskā informācija. Zināšanas par programmēšanu nav gaidāmas, bet ir noderīgas, jo es tikai īsi aprakstīšu, kā programmēšana faktiski darbojas.

Kas jums būs nepieciešams:

Personālais dators ar piekļuvi internetam

1. darbība. Algoritma izpratne 1. daļa: Noteiktais integrālis un tā izmantošana

Izpratne par algoritmu 1. daļa: Noteiktais integrālis un tā izmantošana
Izpratne par algoritmu 1. daļa: Noteiktais integrālis un tā izmantošana

Es pieņemu, ka jūs mazliet zināt, kas ir integrālis pamata aprēķinu kontekstā. Integrāļi ir svarīgi, jo tie ļauj apkopot vērtību masīvu, kas reizināts ar bezgalīgi mazu garumu; tas ir noderīgi daudzās finanšu, skaitļu teorijas, fizikas, ķīmijas, kā arī daudzās citās jomās. Tomēr šī programma ļaus aprēķināt laukumu zem līknes tikai ierobežotam intervālam, citiem vārdiem sakot, tā neizvērtē anti-atvasinājumus-tam ir nepieciešams daudz jaudīgāks algoritms. Šis algoritms ir noderīgs, ja jums ir jānovērtē noteikts integrālis lielākā programmā, kas norādīta uz kaut ko citu, vai ja vēlaties pārbaudīt, vai jūsu atbildē nav noteikti integrāli, kas veikti ar roku.

Noteikts pamata integrālis attēlo laukumu zem līknes, ko definē funkcija, piem. f (x). Noteiktai integrālei mēs meklējam laukumu starp diviem punktiem (attiecīgi apzīmēti ar a un b). Attēlā tirkīza reģions ir apgabals, uz kuru es atsaucos, un vienādojums tā noteikšanai ir parādīts arī šajā reģionā. Attēlā redzamā funkcija ir patvaļīga.

2. darbība. Algoritma izpratne 2. daļa: Skaitliskā tuvināšana

Algoritma izpratne 2. daļa: Skaitliskā tuvināšana
Algoritma izpratne 2. daļa: Skaitliskā tuvināšana

Datoram ir nepieciešams plašs instrukciju kopums, lai aprēķinātu šo apgabalu zem patvaļīgas funkcijas, kas derēs jebkurai funkcijai, tāpēc jums zināmās analītiskās metodes neko nedod, jo tās ir pārāk specifiskas. Viena metode, kā aptuveni aprēķināt integrālus, kurus dators faktiski var apstrādāt, tiek veikta, aizpildot interesējošo apgabalu ar lietotāja noteiktu vienāda platuma un mainīga augstuma taisnstūru daudzumu, pēc tam summējot visus taisnstūra laukumus. Taisnstūru stingrās īpašības atstās neskartu daļu no kopējās platības, tāpēc to uzskata par aptuvenu; tomēr, jo vairāk taisnstūru var iespiest starp robežām (a un b), jo precīzāka būs tuvināšana, jo neskartie reģioni kļūst retāki. Tā kā dators veiks šo uzdevumu, vēlamajā apgabalā varat iestatīt ļoti lielu taisnstūru skaitu, padarot tuvināšanu ārkārtīgi precīzu. Atbalsta attēlā iedomājieties, ka katrs taisnstūris norādītajā zonā ir vienāda platuma. Es darīju visu iespējamo, lai padarītu tos vienādus platumā programmā Microsoft Paint, bet neveicu labāko darbu.

3. darbība. Algoritma izpratne 3. daļa: viduspunkta noteikums

Izpratne par algoritmu 3. daļa: viduspunkta noteikums
Izpratne par algoritmu 3. daļa: viduspunkta noteikums

Šis noteikums norāda, kā taisnstūri tiek veidoti un izmantoti aptuvenā veidā. Katram taisnstūrim no “N” taisnstūriem jābūt vienādam platumam Δx, bet katrs n -tais taisnstūris nevar būt tieši tāds pats: mainīgais koeficients ir augstums, kas mainās atkarībā no noteiktā punktā novērtētās funkcijas. Viduspunkta noteikums savu nosaukumu ieguvis no tā, ka katra taisnstūra augstumu novērtējat kā f (x_n), kur "x_n" ir katra taisnstūra attiecīgais centrs, kā norādīts taisnstūra kreisajā vai labajā pusē. Viduspunkta izmantošana ir tāda pati kā vidējās vērtības ieviešana, kas tuvināšanu padarīs precīzāku nekā tad, ja izmantotu labo vai kreiso pusi. Atbalsta attēls šim solim apkopo to, kā viduspunkta noteikums ir matemātiski definēts.

4. darbība. Programmas izveide 1. daļa: Python kompilatora/redaktora lejupielāde

Tagad, kad jūs saprotat algoritmu, kas jāievieš, ir jāpanāk, lai dators veiktu aprēķinus jūsu vietā. Pirmais solis, lai pateiktu datoram, kas jādara, ir iegūt rīkus, lai to izdarītu. Šo algoritmu var kodēt jebkurā valodā; vienkāršības labad šī programma tiks kodēta Python valodā. Lai pavēlētu datoram veikt darbības ar Python, jums būs nepieciešams redaktors, kas ņem instrukcijas, kas rakstītas šajā valodā, un pēc tam tiks apkopotas datorvalodā, kas ir saprotama jūsu datoram, lai tā varētu izpildīt uzdevumus, ko jūs tai darāt. Mūsdienās redaktors un kompilators parasti ir integrēti, taču tas ne vienmēr tā ir. Jūs varat izmantot jebkuru redaktoru/kompilatoru, kas jums patīk, bet es jums parādīšu, kā iegūt savu personīgo favorītu Python: Canopy. Ja jums jau ir redaktors/kompilators, varat izlaist šīs darbības.

  1. Dodieties uz vietni
  2. Noklikšķiniet uz Lejupielādēt lapotni
  3. Noklikšķiniet uz lejupielādes pogas, kas atbilst jūsu operētājsistēmai

    Lejupielāde sāksies automātiski

  4. Pēc izpildes faila palaišanas izpildiet instilācijas norādījumus
  5. Palaidiet programmu
  6. Programmas galvenajā izvēlnē noklikšķiniet uz "Redaktors"
  7. Ekrāna centrā noklikšķiniet uz "izveidot jaunu failu"

No šī brīža jums vajadzētu redzēt tukšu baltu logu ar kursoru, kas atgādina pamata tekstapstrādes dokumentu. Tagad jūs esat gatavs sākt kodēt skaitlisko integrācijas algoritmu noteiktu integrālu risināšanai. Turpmākajās darbībās būs koda fragments, kuru jūs kopēsit, un paskaidrojums par to, ko šis fragments sniedz visai programmai.

5. darbība: programmas izveide 2. daļa: funkciju importēšana un mainīgo noteikšana

Programmas izveide 2. daļa: Funkciju importēšana un mainīgo noteikšana
Programmas izveide 2. daļa: Funkciju importēšana un mainīgo noteikšana

Kopējiet attēlā redzamo kodu.

Jebkurai programmai, kurai var rasties kodēšana, būs mainīgie. Mainīgais ir nosaukums, kas piešķirts vērtībai, kas tiks darbināta un var mainīties. Lielākajā daļā programmēšanas valodu (ja ne visās) mainīgais ir jāinicializē, pirms programma var tajā veikt izmaiņas. Šīs programmas gadījumā es nosaucu mainīgos "N", "a" un "b". Šīs vērtības ir attiecīgi atkārtojumu skaits (AKA taisnstūru skaits), apakšējā robeža un augšējā robeža. Jūs varat nosaukt šos vārdus jebko, ko vēlaties, taču, lai tie atbilstu formulām, kas sniegtas sadaļā "Izpratne par algoritma 3. daļu: viduspunkta noteikums", vislabāk ir saglabāt tās pašas. Ņemiet vērā, ka tiem nav iestatīta tikai noteikta vērtība. Tas ir tāpēc, ka tie ir ievadi, kas, palaižot programmu, programmas lietotājs var definēt vērtību. Teksts pēdiņās pēc ievades komandas tiek parādīts, palaižot programmu, norādot, kāda veida vērtība jāievada. Jūs arī pamanīsit, ka pirms ievades apzīmējumiem tiek izmantoti "int" un "float". Šie termini norāda datoram, kāda veida mainīgais būs šī vērtība. "Int" ir vesels skaitlis, un "pludiņš" ir peldošā komata vērtība (ti, aiz komata). Būtu jābūt skaidram, kāpēc tie ir šādi.

Jebkurš teksts, kas atrodas aiz "#", ir komentārs, kas ļauj programmētājam sekot kodam humānistiskā veidā; Es savā kodā esmu izteicis dažus komentārus, kurus jūs kopēsit, taču nekautrējieties pievienot komentārus, kas jums īpaši palīdz. Programma neko nelasīs ar "#" kā komandu.

Koda daļa, kas skan “no matemātikas importēšanas *”, liek programmai importēt matemātisko funkciju masīvu, ko var izmantot, tās neieprogrammējot sevī. "*" Nozīmē tikai "visu". Izlasiet šo koda daļu kā: no matemātikas bibliotēkas importējiet visas funkcijas. Tas ļauj izmantot matemātiskas funkcijas, piemēram, sinusu, kosinusu, žurnālu, exp utt. Šo funkciju var matemātiski integrēt kodā.

6. darbība: programmas izveide 3. daļa: integrācijas funkcijas izveide

Programmas izveide 3. daļa: Integrācijas funkcijas izveide
Programmas izveide 3. daļa: Integrācijas funkcijas izveide

Nokopējiet kodu attēlā zem iepriekšējā koda.

BRĪDINĀJUMS: Šī sadaļa ir blīva, un es vēlos noskaidrot dažas lietas, kas varētu būt mulsinošas. Runājot par programmēšanu, ļoti bieži parādās vārds "funkcija". Šis termins daudz parādās arī tad, kad runājat par matemātiku. Tātad, no šī brīža, kad es runāju par funkciju programmēšanas izpratnē, es uzrakstīšu "Python funkcija", un, runājot par matemātisko funkciju, es teikšu "matemātiskā funkcija". Kādā brīdī mēs izmantosim Python funkciju kā attiecīgās matemātiskās funkcijas attēlojumu.

Šis nākamais koda fragments ir programmas pamatā. Šeit ir definēta funkcija Python, kas veic ciparu integrācijas algoritmu, izmantojot viduspunkta noteikumu. "def Integrēt (N, a, b)" skan šādi: definējiet funkciju ar nosaukumu "Integrēt", kas pieņem mainīgos "N", "a" un "b" un atgriež laukumu zem līknes (matemātiskā funkcija) kas ir definēts arī Python funkcijā "Integrēt". Kodējot, šo Python funkciju var saukt par jebko, taču ir jēga to saukt par integrētu, jo tā ir funkcija, kas patiešām integrē matemātisku funkciju.

Šajā brīdī ir vērts komentēt, kā Python nošķir koda blokus. Koda bloks ir visa sadaļa, kas veic noteiktu uzdevumu. Dažādās programmēšanas valodās būs noteikti veidi, kā atšķirt šos "blokus". Python gadījumā bloku izceļ ievilkumi: katrai uzdevumu izpildes sadaļai ir savs ievilkums, un citos blokos var būt atkāpes. Tas attēlo uzdevumus uzdevumu ietvaros un būtībā norāda secību, kādā kods jāizpilda. Definētās Python funkcijas "Integrēt" gadījumā viss šajā funkcijā ir ievilkts vienā blokā, tādējādi nošķirot uzdevumus, kas tiks izpildīti šīs funkcijas ietvaros. Šajā Python funkcijā ir ievilktas daļas, kas arī veic savus uzdevumus. Tas notiek šādi: tiek noteikta komanda (uzdevums), komandai seko kols, un tas, ko komanda dara, ir ievilkts zemāk.

Tūlīt pēc Python funkcijas "integrēt" definēšanas jūs definēsit citu Python funkciju ar nosaukumu f (x). Tas atspoguļo matemātisko funkciju, kas tiks integrēta. Katrai atšķirīgajai matemātiskajai funkcijai, kuru vēlaties integrēt, šī programmas rindiņa būs jāmaina (atšķirībā no mainīgajiem, kas tiek definēti programmas izpildes laikā). Katrai Python funkcijai būs atgriešanās vērtība, tā tiek atgriezta, kad to iemetat. Šajā gadījumā iemestā vērtība ir "x", un šis "x" termins ņems vērā to, ko jūs kādreiz iemetāt-tā ir pagaidu vērtība.

Tālāk for-loop darbojas kā apkopojums, kas definēts šīs apmācības sadaļas "Algoritma izpratne" formulās. Šai summēšanai nepieciešami vēl daži mainīgie, no kuriem viens darbosies kā atgriezeniskā vērtība visai funkcijai "Integrēt". Pirms for-loop, es esmu norādījis šos mainīgos kā "value" un "value2". for-loop uzdevums ir iterēt noteiktā mainīgā vērtību diapazonā, ko var ērti definēt for-loop komandā; šajā gadījumā šis mainīgais ir "n". Diapazons, kurā notiek iterācija, ir no 1 līdz N+1. Jums jāņem vērā, ka iepriekšminētajās formulās noteiktā summa ir tikai no 1 līdz N. Mēs to definējam šādā veidā, jo Python valoda skaita katru atkārtoto vērtību, sākot no nulles, tāpēc mums būtībā ir jāmaina vērtību diapazons, lai tas atbilstu mūsu vēlamajam diapazons. For-loop pēc tam ļauj summēt visus taisnstūra augstumus kopā un saglabā šo vērtību mainīgajā, ko es saucu par "vērtību". Tas ir redzams koda gabalā, kas tiek parādīts kā: vērtība += f (a +((n- (1/2))*((b-a)/N))).

Turpmākajā koda daļā tiek izmantots mainīgais ar nosaukumu "value2", kas pēc tam tiek piešķirts kā katra taisnstūra visu augstumu summa, kas reizināta ar katra taisnstūra standartizēto platumu-šī ir mūsu galīgā atbilde, ko vēlamies tiek parādīta mūsu programmā, un tādējādi tā ir funkcijas "Integrēt" atgriešanās vērtība.

7. darbība: programmas izveide 4. daļa: atbildes parādīšana

Programmas izveide 4. daļa: Atbildes parādīšana
Programmas izveide 4. daļa: Atbildes parādīšana

Nokopējiet kodu attēlā zem iepriekšējā koda.

Tagad, kad atbildi var iegūt, izmantojot funkciju "Integrēt" Python, mēs vēlamies to parādīt. Tas ir tikai jautājums par lietotāja ievadīto vērtību ("N", "a" un "b") ievietošanu funkcijā "Integrēt" un izdrukāt to uz ekrāna. Šī komanda ir parādīta 21. rindā, un tas tiešām ir viss, kas jums jādara, lai pabeigtu šo darbību. Kods 19. un 20. rindā ir tikai, lai "diezgan palielinātu" visas programmas produkciju. "print (" ………………………. ")" atdala programmas ievades sadaļu no izvades sadaļas, un "print (" Šeit ir jūsu atbilde: ")" ir tikai apzīmējums, uz kuru tiks sniegta atbilde drukāt pēc šīs teksta rindas.

8. darbība: programmas palaišana 1. daļa: programmas palaišana tāda, kāda tā ir

Programmas palaišana 1. daļa: Programmas palaišana tāda, kāda tā ir
Programmas palaišana 1. daļa: Programmas palaišana tāda, kāda tā ir

Ja jūs neizmantojat Canopy, iespējams, jums pat nav jāveic šī darbība, un programmas palaišanai var būt vajadzīgas dažādas procedūras. Lai varētu palaist programmu programmā Canopy, tā būs jāsaglabā. Python programmas faila tips ir.py fails-tas automātiski tiek saglabāts kā šāds. Izvēlieties, kur vēlaties saglabāt failu, tad varēsit palaist programmu.

Programmas palaišana:

  1. Noklikšķiniet uz zaļās pogas, kas izskatās kā "atskaņošanas poga", kas atrodas rīkjoslā tieši virs vietas, kur tiek parādīts jūsu faila nosaukums (skatiet attēlu).
  2. Pēc tam programma darbosies redaktora apakšējā ekrānā, kas pazīstams kā Canopy datu analīzes vide. Pieņemot, ka jūs nokopējāt uzvednes, kā es tās uzrakstīju, Canopy datu analīzes vides apakšdaļā vajadzētu redzēt uzvedni: "Ievadiet, cik reizes vēlaties summēt (vairāk reizes = precīzāk):." (skat. attēlu)
  3. Ievadiet vērtību, cik reizes vēlaties atkārtot, ti, 10000 (cik taisnstūru vēlaties ievietot savā apgabalā), pēc tam nospiediet taustiņu Enter.
  4. Parādīsies vairāk uzvedņu ar paziņojumiem, kuriem vajadzētu būt pazīstamiem ievades norādījumiem, kurus programmā iekodējāt 5. darbībā. Aizpildiet tos atbilstoši, kā norādīts iepriekš.
  5. Ir jānovērtē integrālis, un jāparādās rezultātam.

Ja jūs kodējāt programmu, kā parādīts iepriekšējos attēlos, jūs tikko esat integrējis f (x) = x^2 dažās robežās. X^2 integrāli ir viegli novērtēt ar rokām, tāpēc jums jāpārbauda un jāpārliecinās, vai programma sniedza ļoti tuvu atbildi uz pareizo analītisko vērtību, kas noteikta ar roku. Palaižot programmu ar vērtībām N = 10000, a = 0 un b = 10, es saņemu atbildi 333.33333249999964. Pareizā analītiskā atbilde ir 333,333. Tas ir neticami precīzs un ātrs. Jūs būtībā esat saspieduši 10 000 taisnstūru no 0 uz 10 uz ass un izmantojuši tos, lai tuvinātu laukumu zem līknes x^2!

9. solis: Programmas palaišana 2. daļa: Citu matemātisko funkciju integrēšana

Programmas vadīšana 2. daļa: Citu matemātisko funkciju integrēšana
Programmas vadīšana 2. daļa: Citu matemātisko funkciju integrēšana

Iepriekšējā solī, ja esat uzticīgi sekojis, jūs integrējāt f (x) = x^2. Šī nav vienīgā matemātiskā funkcija, ko šī programma var integrēt. Atgādiniet no 5. darbības, ka programmā importējāt Python funkciju matemātikas bibliotēkas masīvu. Tas ļauj izmantot sarežģītākas matemātiskās funkcijas, kuras var integrēt. Dosim vienu. Protams, jūs varat izmantot jebkuru funkciju, kuru vēlaties, taču es tālāk demonstrēšu šī koda precizitāti, integrējot noteiktu matemātisku funkciju, kas dod labi zināmu vērtību, ja tā ir integrēta noteiktā diapazonā. Šī funkcija ir f (x) = Sin [x]. Šī matemātiskā funkcija tiek parādīta pirmajā pievienotajā attēlā, kas attēlota no 0 līdz 2π, un interesējošā joma ir iekrāsota tirkīza krāsā. Pozitīvais laukums ir vienāds, jo šajā intervālā ir negatīvs laukums, tādēļ, saskaitot kopējo platību, jums vajadzētu iegūt nulli. Apskatīsim, vai tas tiešām notiek:

Ievietojot programmā matemātisko funkciju f (x) = Sin [x]:

  1. Pirms programmas atkārtotas palaišanas komentārā "#type your function after return" ierakstiet: sin (x), kur pašlaik atrodas x ** 2. (skatiet attēlu).
  2. Palaidiet programmu, vēlreiz nospiežot zaļo atskaņošanas pogu.
  3. Ievadiet N vērtību 10000 (cik reizes vēlaties summēt).
  4. ievietojiet "0" apakšējai robežai.
  5. Ievietojiet 6.2832 augšējai robežai (aptuveni 2π).
  6. Skatiet, kādu vērtību iegūstat.

Kad es to izdarīju, es saņēmu vērtību 1,079e-10: tas ir līdzvērtīgs.0000000001079, kas patiešām ir tuvu nullei, tāpēc šķiet, ka tas ir precīzs, un parāda, ka algoritms pienācīgi apstrādā negatīvo apgabalu.

10. solis: Programmas palaišana 3. daļa: Programmas paplašināšana

Šajā brīdī esat pabeidzis: jums ir Python kodēts funkcionāls noteikts integrālais algoritms, kas darbojas nevainojami un sniedz ļoti precīzas atbildes. Tomēr šo programmu var uzlabot. Es neesmu programmētājs, un man ir minimāla pieredze ar Python. Patiesībā man vajadzēja atsvaidzināt sevi, izmantojot Python, lai pabeigtu šo apmācību, taču tam vajadzētu dot jums pārliecību, ka Python ir tik viegli apgūstama valoda. Es domāju, ka jūs varat paplašināt šo programmu, padarot to efektīvāku, varbūt ieviest kādu GUI un padarīt to lietotājam draudzīgāku.

Manas domas par programmas paplašināšanu:

  • Ieviesiet grafisku lietotāja saskarni, kas ļauj palaist programmu, neizmantojot Canopy interaktīvo datu analīzes vidi
  • Izveidojiet to tā, lai integrējamā matemātiskā funkcija nebūtu jāievada programmas iekšienē, bet to varētu ievadīt pēc programmas palaišanas (es sākotnēji mēģināju to izdarīt, bet nevarēju to saprast).
  • Definējiet Python funkciju "Integrēt", lai tā izmantotu funkciju f (x), kā norādīts, lai tajā būtu definēta funkcija f (x).

Šie ir tikai daži piemēri uzlabojumu jomām, taču es garantēju, ka ir daudzas citas jomas, kurās to var uzlabot. Tāpēc es atstāju šo soli kā piemēru šīs programmas trūkumiem un, iespējams, vingrinājumu ikvienam, kurš vēlas programmu vēl uzlabot.

Ieteicams: