Turinys:

Kaip sukurti skaitmeninės integracijos programą „Python“: 10 žingsnių
Kaip sukurti skaitmeninės integracijos programą „Python“: 10 žingsnių

Video: Kaip sukurti skaitmeninės integracijos programą „Python“: 10 žingsnių

Video: Kaip sukurti skaitmeninės integracijos programą „Python“: 10 žingsnių
Video: iOS App Development with Swift by Dan Armendariz 2024, Liepa
Anonim
Kaip sukurti skaitmeninės integracijos programą „Python“
Kaip sukurti skaitmeninės integracijos programą „Python“

Tai yra pamoka, kaip sukurti ir paleisti programą, kuri įvertins konkrečius integralus, naudojant skaitmeninio integravimo algoritmą. Aš suskirstiau veiksmus į 3 skyrius: suprasti algoritmą, kuris bus naudojamas kuriant programą, koduoti programą naudojant „Python“programavimo kalbą ir paleisti programą. Ši pamoka skirta tiems, kuriems gali prireikti greitai sukurti skaičiuotuvą tam tikriems integralams įvertinti, arba galbūt reikia algoritmo, kad būtų galima naudoti didesnio masto programoje. Tikimasi pagrindinių skaičiavimo žinių, tačiau peržiūrima aktuali matematinė informacija. Programavimo žinių nesitikima, tačiau tai naudinga, nes tik trumpai aprašau, kaip iš tikrųjų veikia programavimas.

Ko jums reikės:

Asmeninis kompiuteris su prieiga prie interneto

1 žingsnis: supraskite algoritmą 1 dalis: apibrėžtas integralas ir jo naudojimas

1 dalies algoritmo supratimas: apibrėžtas integralas ir jo naudojimas
1 dalies algoritmo supratimas: apibrėžtas integralas ir jo naudojimas

Manau, kad jūs šiek tiek žinote, kas yra integralas pagrindinio skaičiavimo kontekste. Integralai yra svarbūs, nes jie leidžia susumuoti reikšmių masyvą, padaugintą iš be galo mažo ilgio; tai naudinga daugelyje finansų, skaičių teorijos, fizikos, chemijos ir daugelio kitų sričių. Tačiau ši programa leis jums apskaičiuoti plotą po kreive tik ribotam intervalui arba, kitaip tariant, ji nevertina antiišvestinių priemonių-tam reikalingas daug galingesnis algoritmas. Šis algoritmas yra naudingas, jei reikia įvertinti tam tikrą integralą didesnėje programoje, nurodytą kitam tikslui, arba jei norite patikrinti savo atsakymą, ar nėra jokių rankiniu būdu atliktų integralų.

Pagrindinis apibrėžtas integralas reiškia plotą po kreive, apibrėžtą funkcija, pvz. f (x). Tam tikram integralui ieškome srities tarp dviejų taškų (atitinkamai pažymėtų a ir b). Paveikslėlyje turkio spalvos regionas yra sritis, į kurią aš kreipiuosi, ir to nustatymo lygtis taip pat rodoma tame regione. Paveikslėlyje parodyta funkcija yra savavališka.

2 žingsnis: Algoritmo supratimas 2 dalis. Skaitinis artinimas

Algoritmo supratimas 2 dalis: Skaitinis artinimas
Algoritmo supratimas 2 dalis: Skaitinis artinimas

Kompiuteriui reikia daugybės instrukcijų, kad būtų galima apskaičiuoti tą sritį po savavališka funkcija, kuri veiks bet kuriai funkcijai, todėl jums gerai žinomi analizės metodai nenaudingi, nes jie yra pernelyg konkretūs. Vienas iš būdų apskaičiuoti integralus, kuriuos kompiuteris iš tikrųjų gali valdyti, yra užpildomas dominančia sritimi vartotojo nustatytu vienodo pločio ir kintamo aukščio stačiakampių kiekiu, tada apibendrinant visas stačiakampio sritis. Dėl standžių stačiakampių savybių dalis bendro ploto bus nepaliesta, todėl tai laikoma apytiksle; tačiau kuo daugiau stačiakampių galite įspausti tarp sienų (a ir b), tuo tikslesnis bus aproksimacija, nes nepaliesti regionai tampa vis retesni. Kadangi kompiuteris atliks užduotį, norimame regione galite nustatyti labai didelį stačiakampių skaičių, todėl apytikslė vertė yra labai tiksli. Pagalbinėje nuotraukoje įsivaizduokite, kad kiekvienas stačiakampis tam skirtoje srityje yra vienodo pločio. Aš padariau viską, kad „Microsoft Paint“būtų vienodo pločio, bet ne taip gerai.

3 žingsnis: suprasti algoritmą 3 dalis: vidurio taško taisyklė

Algoritmo supratimas 3 dalis: vidurio taško taisyklė
Algoritmo supratimas 3 dalis: vidurio taško taisyklė

Ši taisyklė nurodo, kaip stačiakampiai sudaromi ir naudojami apytiksliai. Kiekvienas stačiakampis iš „N“stačiakampių turi būti vienodo pločio, Δx, tačiau kiekvienas n -asis stačiakampis negali būti visiškai vienodas: kintantis veiksnys yra aukštis, kuris kinta priklausomai nuo tam tikrame taške įvertintos funkcijos. Vidurio taško taisyklė gavo savo pavadinimą dėl to, kad kiekvieno stačiakampio aukštį vertinate kaip f (x_n), kur „x_n“yra atitinkamas kiekvieno stačiakampio centras, kaip nurodyta stačiakampio kairėje arba dešinėje. Vidurio taško naudojimas yra tarsi vidurkio nustatymas, kuris padarys apytikslį tikslesnį nei tuo atveju, jei naudotumėte dešinę ar kairę. Pagalbinis šio žingsnio paveikslas apibendrina, kaip matematiškai apibrėžiama vidurio taško taisyklė.

4 veiksmas: programos sukūrimas 1 dalis: „Python“kompiliatoriaus/redaktoriaus atsisiuntimas

Dabar, kai suprantate algoritmą, kurį reikia įgyvendinti, reikia, kad kompiuteris atliktų skaičiavimą už jus. Pirmasis žingsnis norint pasakyti kompiuteriui, ką daryti, yra tam reikalingų įrankių gavimas. Šis algoritmas gali būti užkoduotas bet kuria kalba; paprastumo dėlei ši programa bus užkoduota „Python“kalba. Norėdami įpareigoti kompiuterį atlikti operacijas su „Python“, jums reikės redaktoriaus, kuris imtųsi ta kalba parašytų instrukcijų, kurios vėliau būtų sukompiliuotos į jūsų kompiuteriui suprantamą mašininę kalbą, kad galėtų atlikti užduotis, kurias jam nurodote atlikti. Šiais laikais redaktorius ir kompiliatorius paprastai yra integruoti, tačiau tai ne visada būna. Galite naudoti bet kurį jums patinkantį redaktorių/kompiliatorių, bet aš jums parodysiu, kaip gauti asmeninį mėgstamiausią „Python: Canopy“. Jei jau turite redaktorių/kompiliatorių, galite praleisti šiuos veiksmus.

  1. Eikite į
  2. Spustelėkite Atsisiųsti baldakimą
  3. Spustelėkite atsisiuntimo mygtuką, atitinkantį jūsų operacinę sistemą

    Atsisiuntimas prasidės automatiškai

  4. Pradėję vykdymo failą, vadovaukitės instiliacijos instrukcijomis
  5. Paleiskite programą
  6. Pagrindiniame programos meniu spustelėkite „Redaktorius“
  7. Ekrano centre spustelėkite „sukurti naują failą“

Nuo to laiko turėtumėte pamatyti tuščią baltą langą su žymekliu, panašiu į pagrindinį teksto apdorojimo dokumentą. Dabar esate pasirengęs pradėti koduoti skaitmeninio integravimo algoritmą, kad išspręstumėte konkrečius integralus. Tolesniuose veiksmuose bus kodo fragmentas, kurį nukopijuosite, ir paaiškinimas, ką šis fragmentas daro visai programai.

5 veiksmas: programos kūrimas 2 dalis: funkcijų importavimas ir kintamųjų apibrėžimas

Programos kūrimas 2 dalis: Funkcijų importavimas ir kintamųjų apibrėžimas
Programos kūrimas 2 dalis: Funkcijų importavimas ir kintamųjų apibrėžimas

Nukopijuokite paveikslėlyje esantį kodą.

Bet kuriai programai, kurią galite rasti koduojant, bus kintamųjų. Kintamasis yra pavadinimas, suteiktas vertei, kuri bus naudojama ir kuri gali keistis. Daugelyje programavimo kalbų (jei ne visos) turite inicijuoti kintamąjį, kad programa galėtų jį pakeisti. Šios programos atveju aš pavadinau kintamuosius „N“, „a“ir „b“. Šios vertės reiškia atitinkamai pakartojimų skaičių (AKA stačiakampių skaičius), apatinę ribą ir viršutinę ribą. Šiuos pavadinimus galite pavadinti bet kuo, bet, kad atitiktų formules, pateiktas skyriuje „3 dalies algoritmo supratimas: vidurio taško taisyklė“, geriausia palikti jas tas pačias. Atkreipkite dėmesį, kad jie nėra nustatyti tik tam tikrai vertei. Taip yra todėl, kad jie yra įvestys, kurias paleidus programą, programos vartotojas gali apibrėžti, kokia bus vertė. Kabutėse esantis tekstas po įvesties komandos rodomas paleidus programą, nurodant, kokio tipo vertę įvesti. Taip pat pastebėsite, kad prieš įvesties žymenis naudojami „int“ir „float“. Šie terminai nurodo kompiuteriui, kokio tipo kintamasis bus ši vertė. „Int“yra sveikasis skaičius, o „plūdė“- slankiojo kablelio reikšmė (ty dešimtainė dalis). Turėtų būti aišku, kodėl jie yra tokie.

Bet koks tekstas, esantis po „#“, yra komentaras, leidžiantis programuotojui humanistiniu būdu sekti kodą; Aš pridėjau tam tikrų komentarų savo kode, kuriuos nukopijuosite, bet nedvejodami pridėkite komentarų, kurie jums konkrečiai padeda. Programa nieko neskaitys su „#“prieš komandą.

Kodo dalis, kurioje rašoma „iš matematikos importo *“, liepia programai importuoti matematinių funkcijų masyvą, kurį galima naudoti neužprogramavus jų savyje. „*“Reiškia „viskas“. Perskaitykite šią kodo dalį kaip: iš matematikos bibliotekos importuokite visas funkcijas. Tai leidžia naudoti matematines funkcijas, tokias kaip sinusas, kosinusas, log, exp ir tt. Šios funkcijos gali būti matematiškai integruotos į kodą.

6 žingsnis: Programos kūrimas 3 dalis: Integracijos funkcijos sukūrimas

Programos kūrimas 3 dalis. Integracijos funkcijos sukūrimas
Programos kūrimas 3 dalis. Integracijos funkcijos sukūrimas

Nukopijuokite paveikslėlyje esantį kodą po ankstesniu kodu.

ĮSPĖJIMAS: Šis skyrius yra tankus ir noriu išsiaiškinti kai kuriuos dalykus, kurie gali būti painūs. Kalbant apie programavimą, labai dažnai iškyla žodis „funkcija“. Šis terminas taip pat dažnai pasirodo, kai kalbate apie matematiką. Taigi nuo šio momento, kai kalbu apie funkciją programavimo prasme, parašysiu „Python funkcija“, o kai kalbėsiu apie matematinę funkciją, pasakysiu „matematinė funkcija“. Tam tikru momentu mes naudosime „Python“funkciją kaip atitinkamos matematinės funkcijos vaizdavimą.

Šis kitas kodo fragmentas yra programos esmė. Čia apibrėžiama „Python“funkcija, kuri atlieka skaitmeninio integravimo algoritmą, naudojant vidurio taško taisyklę. „def Integrate (N, a, b)“skamba taip: apibrėžiama funkcija „Integrate“, kuri priima kintamuosius „N“, „a“ir „b“ir grąžina plotą po kreive (matematinė funkcija) kuris taip pat apibrėžtas „Integruoti“„Python“funkcijoje. Koduojant šią „Python“funkciją galite pavadinti bet kuo, tačiau prasminga ją vadinti integruota, nes tai funkcija, kuri iš tikrųjų integruoja matematinę funkciją.

Šioje vietoje verta pakomentuoti, kaip „Python“atskiria kodo blokus. Kodo blokas yra visas skyrius, atliekantis tam tikrą užduotį. Skirtingos programavimo kalbos turės būdus, kaip atskirti šiuos „blokus“. „Python“atveju blokas išsiskiria įterpimais: kiekviena užduotį atliekanti dalis turi savo įtrauką, o kituose įterptuose blokuose gali būti įterptų blokų. Tai reiškia užduotis užduotyse ir iš esmės nurodo kodo vykdymo tvarką. Apibrėžtos „Python“funkcijos „Integrate“atveju viskas toje funkcijoje yra įtraukta į vieną bloką ir taip išskiriamos tos funkcijos atliekamos užduotys. Šioje „Python“funkcijoje yra įtrauktų dalių, kurios taip pat atlieka savo užduotis. Tai vyksta taip: nurodoma komanda (užduotis), dvitaškis seka komandą, o tai, ką komanda daro, yra įtraukta į apačią.

Iškart apibrėžę „integruoti“„Python“funkciją, apibrėšite kitą „Python“funkciją, vadinamą f (x). Tai reiškia matematinę funkciją, kuri bus integruota. Kiekvienai skirtingai matematinei funkcijai, kurią norite integruoti, turėsite pereiti prie šios programos eilutės, kad ją pakeistumėte (skirtingai nuo kintamųjų, kurie yra apibrėžti vykdant programą). Kiekviena „Python“funkcija turės grąžinimo vertę, tai funkcija grąžina, kai ją įvedate. Šiuo atveju įmesta vertė yra „x“, o šis „x“terminas bus vertas to, ką kada nors metėte-tai laikina vertė.

Toliau for-loop veikia kaip apibendrinimas, apibrėžtas formulėse, pateiktose šios pamokos skyriuje „Algoritmo supratimas“. Šiam sumavimui reikia dar poros kintamųjų, iš kurių vienas veiks kaip visos „Integrate“funkcijos „Python“grąžinimo vertė. Prieš „for-loop“šiuos kintamuosius paskyriau kaip „value“ir „value2“. for-loop užduotis yra kartoti nustatyto kintamojo reikšmių diapazoną, kurį galima patogiai apibrėžti komandoje for-loop; šiuo atveju tas kintamasis yra „n“. Diapazonas, kuriame kartojasi, yra nuo 1 iki N+1. Turėtumėte pastebėti, kad sumos, apibrėžtos pirmiau minėtose formulėse, svyruoja tik nuo 1 iki N. Mes tai apibrėžiame taip, nes „Python“kalba skaičiuoja kiekvieną pakartotą vertę, pradedant nuo nulio, todėl iš esmės turime perkelti verčių diapazoną, kad jis atitiktų mūsų norimą diapazonas. Tuomet for-loop leidžia susumuoti visus stačiakampio aukščius ir išsaugoti šią vertę kintamajame, kurį aš pavadinau „value“. Tai matyti iš kodo, kuris rodomas kaip: vertė += f (a +((n- (1/2))*((b-a)/N))).

Kitame kodo fragmente naudojamas kintamasis, vadinamas „value2“, kuris tada priskiriamas kiekvieno stačiakampio aukščių, padaugintų iš standartinio kiekvieno stačiakampio pločio, sumai-tai yra mūsų galutinis atsakymas, kurio norime rodoma mūsų programos, taigi ji yra „Integrate“funkcijos „Python“grąžinimo vertė.

7 veiksmas: programos kūrimas 4 dalis: atsakymo rodymas

Programos kūrimas 4 dalis: Atsakymo rodymas
Programos kūrimas 4 dalis: Atsakymo rodymas

Nukopijuokite paveikslėlyje esantį kodą po ankstesniu kodu.

Dabar, kai atsakymą galima gauti naudojant „Integruoti“„Python“funkciją, norime, kad galėtume jį parodyti. Tai tik vartotojo įvestų reikšmių („N“, „a“ir „b“) įtraukimas į funkciją „Integruoti“„Python“ir spausdinimas ekrane. Ši komanda rodoma 21 eilutėje ir tikrai viskas, ką jums reikia padaryti, kad užbaigtumėte šį veiksmą. 19 ir 20 eilutėse esantis kodas yra skirtas „gražiai padidinti“visos programos išvestį. "print (" ………………………. ")" atskiria programos įvesties skyrių nuo išvesties skyriaus, o "print (" Čia yra jūsų atsakymas: ")" - tai tik nuoroda, kurią atsakys išspausdinti po tos teksto eilutės.

8 veiksmas: programos vykdymas 1 dalis: programos vykdymas tokia, kokia yra

Programos vykdymas 1 dalis: Vykdykite programą tokią, kokia ji yra
Programos vykdymas 1 dalis: Vykdykite programą tokią, kokia ji yra

Jei nenaudojate „Canopy“, greičiausiai jums net nereikia atlikti šio veiksmo ir paleisti programą gali prireikti skirtingų procedūrų. „Canopy“, prieš pradėdami vykdyti programą, turėsite ją išsaugoti. „Python“programos failo tipas yra.py failas-jis automatiškai išsaugomas. Pasirinkite, kur norite išsaugoti failą, tada galėsite paleisti programą.

Programos vykdymas:

  1. Paspauskite žalią mygtuką, kuris atrodo kaip „paleidimo mygtukas“, esantį įrankių juostoje tiesiai virš tos vietos, kur rodomas jūsų failo pavadinimas (žr. Paveikslėlį).
  2. Tada programa veiks apatiniame redaktoriaus ekrane, kuris yra žinomas kaip „Canopy“duomenų analizės aplinka. Darant prielaidą, kad nukopijavote raginimus, kai juos rašiau, „Canopy“duomenų analizės aplinkos apačioje turėtumėte pamatyti raginimą: „Įveskite, kiek kartų norite susumuoti (daugiau kartų = tiksliau):“. (žr. paveikslėlį)
  3. Įveskite vertę, kiek kartų norite kartoti, t. Y. 10000 (kiek stačiakampių norite įstumti į savo sritį), tada paspauskite „Enter“.
  4. Bus rodomi daugiau raginimų su teiginiais, kurie turėtų būti žinomi įvesties nurodymai, kuriuos kodavote programoje 5 veiksme. Tinkamai užpildykite juos, kaip nurodyta aukščiau esančiame 3 numeryje.
  5. Integralas turėtų būti įvertintas ir turėtų būti rodomas rezultatas.

Jei kodavote programą, kaip parodyta ankstesnėse nuotraukose, ką tik integravote f (x) = x^2 per kai kurias ribas. X^2 integralas yra lengvai įvertinamas ranka, todėl turėtumėte patikrinti ir įsitikinti, kad programa labai tiksliai atsakė į teisingą analitinę vertę, nustatytą ranka. Kai paleidžiu programą su reikšmėmis N = 10000, a = 0 ir b = 10, gaunu atsakymą 333.33333249999964. Teisingas analitinis atsakymas yra 333.333. Tai neįtikėtinai tikslu ir greita. Jūs iš esmės suspaudėte 10 000 stačiakampių nuo 0 iki 10 x ašyje ir panaudojote juos apytiksliui plotui po kreive x^2!

9 veiksmas: programos vykdymas 2 dalis: kitų matematinių funkcijų integravimas

Programos vykdymas 2 dalis. Kitų matematinių funkcijų integravimas
Programos vykdymas 2 dalis. Kitų matematinių funkcijų integravimas

Ankstesniame žingsnyje, jei ištikimai sekėte, integravote f (x) = x^2. Tai nėra vienintelė matematinė funkcija, kurią gali integruoti ši programa. Prisiminkite nuo 5 veiksmo, kad į programą importavote „Python“funkcijų matematikos bibliotekos masyvą. Tai leidžia naudoti sudėtingesnes matematines funkcijas, kurias galima integruoti. Išbandykime vieną. Žinoma, galite naudoti bet kokią norimą funkciją, bet aš dar labiau parodysiu šio kodo tikslumą, integruodamas tam tikrą matematinę funkciją, kuri suteikia gerai žinomą vertę, kai yra integruota per tam tikrą diapazoną. Ši funkcija yra f (x) = Sin [x]. Ši matematinė funkcija rodoma pirmame pridedamame paveikslėlyje, pavaizduota nuo 0 iki 2π, o domina sritis yra tamsiai turkio spalvos. Teigiamas plotas yra vienodas, nes šiame intervale yra neigiamas plotas, taigi, jei sudėsite bendrą plotą, turėtumėte gauti nulį. Pažiūrėkime, ar tai iš tikrųjų atsitinka:

Įdėkite į programą matematinę funkciją f (x) = Sin [x]:

  1. Prieš vėl paleisdami programą, į komentarą „#type your function after return“įveskite: sin (x), kur šiuo metu yra x ** 2. (žr. paveikslėlį).
  2. Paleiskite programą dar kartą paspausdami žalią atkūrimo mygtuką.
  3. Įveskite 10000 N reikšmei (kiek kartų norite susumuoti).
  4. įveskite „0“apatinei ribai.
  5. Į viršutinę ribą (maždaug 2π) įveskite 6.2832.
  6. Pažiūrėkite, kokią vertę gaunate.

Kai tai padariau, galiausiai gavau 1,079e-10 vertę: tai prilygsta.0000000001079, kuris iš tikrųjų yra artimas nuliui, todėl atrodo, kad yra tikslus, ir rodo, kad algoritmas tinkamai tvarko neigiamą sritį.

10 veiksmas: programos vykdymas 3 dalis: programos išplėtimas

Šiuo metu jūs baigėte: turite veikiantį integruotą algoritmą, užkoduotą „Python“, kuris veikia sklandžiai ir pateikia labai tikslius atsakymus. Tačiau šią programą galima patobulinti. Nesu programuotojas ir turiu minimalios patirties su „Python“. Tiesą sakant, norėdamas užbaigti šią pamoką turėjau atsinaujinti, naudodamas „Python“, tačiau tai turėtų suteikti jums pasitikėjimo, kad „Python“yra tokia lengva kalba. Turiu omenyje tai, kad galite išplėsti šią programą, padarę ją efektyvesnę, galbūt įdiegti tam tikrą GUI ir padaryti ją patogesnę vartotojui.

Mano mintys apie programos išplėtimą:

  • Įdiekite grafinę vartotojo sąsają, kuri leidžia paleisti programą nenaudojant interaktyvios duomenų analizės aplinkos „Canopy“
  • Padarykite taip, kad integruotoji matematinė funkcija neturėtų būti įvedama programos viduje, bet gali būti įvesta paleidus programą (iš pradžių bandžiau tai padaryti, bet negalėjau to išsiaiškinti).
  • Apibrėžkite „Integruoti“„Python“funkciją, kad f (x) funkcija būtų tokia, kaip nurodyta, kad joje būtų apibrėžta funkcija f (x).

Tai tik keli tobulinimo sričių pavyzdžiai, tačiau garantuoju, kad yra daug kitų sričių, kurias galima patobulinti. Taigi palieku šį žingsnį kaip šios programos trūkumų pavyzdį ir galbūt pratimą visiems, kurie nori toliau tobulinti programą.

Rekomenduojamas: