Съдържание:

Как да направите програма за числена интеграция в Python: 10 стъпки
Как да направите програма за числена интеграция в Python: 10 стъпки

Видео: Как да направите програма за числена интеграция в Python: 10 стъпки

Видео: Как да направите програма за числена интеграция в Python: 10 стъпки
Видео: Владислав Лаухин. Построение мониторинга python-приложений с использованием opentelemetry 2024, Юли
Anonim
Как да направите програма за числена интеграция в Python
Как да направите програма за числена интеграция в Python

Това е урок за това как да създадете и стартирате програма, която ще оценява определени интеграли, използвайки алгоритъм за числена интеграция. Разделих стъпките в 3 раздела: разбиране на алгоритъма, който ще се използва за създаване на програмата, кодиране на програмата с помощта на езика за програмиране на Python и стартиране на програмата. Този урок е предназначен за някой, който може да се наложи бързо да направи калкулатор, за да оцени определени интеграли, или може би се нуждае от алгоритъма за използване в по -мащабна програма. Очакват се основни знания за смятане, но се преглежда съответната математическа информация. Познаването на програмирането не се очаква, но е полезно, тъй като само накратко описвам как всъщност работи програмирането.

Какво ще ви трябва:

Персонален компютър с достъп до интернет

Стъпка 1: Разбиране на алгоритъма Част 1: Определеният интеграл и неговото използване

Разбиране на алгоритъма Част 1: Определеният интеграл и неговото използване
Разбиране на алгоритъма Част 1: Определеният интеграл и неговото използване

Предполагам, че знаете малко за това какво представлява интегралът в контекста на основното смятане. Интегралите са важни, защото ви позволяват да сумирате масив от стойности, умножени по безкрайно малка дължина; това е полезно в много области на финансите, теорията на числата, физиката, химията, както и в много други области. Тази програма обаче ще ви позволи само да изчислите площта под крива за краен интервал, или с други думи, тя не оценява анти-производни-за това е необходим много по-мощен алгоритъм. Този алгоритъм е полезен, ако трябва да оцените определен интеграл в по -голяма програма, посочена към нещо друго, или ако искате да проверите отговора си за някакви определени интеграли, направени на ръка.

Основен определен интеграл представлява площта под крива, дефинирана от функция, напр. f (x). За определен интеграл търсим областта между две точки (обозначени съответно с a и b). На снимката, тюркоазената област е областта, за която визирам, и уравнението за определяне на това също е показано в тази област. Показаната на снимката функция е произволна.

Стъпка 2: Разбиране на алгоритъма Част 2: Числово приближение

Разбиране на алгоритъма Част 2: Числово приближение
Разбиране на алгоритъма Част 2: Числово приближение

Компютърът се нуждае от широк набор от инструкции за изчисляване на тази област под произволна функция, която ще работи за всяка функция, така че аналитичните методи, които може да сте запознати, не са от полза, тъй като са твърде специфични. Един метод за приблизително изчисляване на интеграли, с който компютърът всъщност може да се справи, се извършва чрез запълване на интересуващата област с определено от потребителя количество правоъгълници с еднаква ширина и променлива височина, след което се сумират всички области на правоъгълника. Твърдите свойства на правоъгълниците ще оставят част от общата площ недокосната, поради което това се счита за приближение; обаче колкото повече правоъгълници можете да натъпчете между границите (a и b), толкова по -точно ще бъде приближението, тъй като недокоснатите области стават по -редки. Тъй като компютърът ще изпълнява задачата, можете да зададете броя на правоъгълниците в желаната област да бъде много голям брой, което прави приближението изключително точно. В поддържащата картина си представете, че всеки правоъгълник в определената зона е с еднаква ширина. Направих всичко възможно да ги направя с еднаква ширина в Microsoft Paint, но не свърших най -добрата работа.

Стъпка 3: Разбиране на алгоритъма Част 3: Правилото за средната точка

Разбиране на алгоритъма Част 3: Правилото за средната точка
Разбиране на алгоритъма Част 3: Правилото за средната точка

Това правило определя как се правят и използват правоъгълниците в приближението. Всеки правоъгълник от "N" правоъгълниците трябва да има еднаква ширина, Δx, но всеки n -ти правоъгълник не може да бъде абсолютно същият: променливият фактор е височината, която варира според функцията, оценена в определена точка. Правилото за средната точка получава името си от факта, че оценявате височината на всеки правоъгълник като f (x_n), където "x_n" е съответната централна точка на всеки правоъгълник, разположена вляво или вдясно от правоъгълника. Използването на средната точка е като прилагане на средна стойност, която ще направи приближението по -точно, отколкото ако използвате дясната или лявата страна. Поддържащата картина за тази стъпка обобщава как правилото за средната точка е дефинирано математически.

Стъпка 4: Създаване на програмата Част 1: Изтегляне на Python компилатор/редактор

Сега, когато разбирате алгоритъма, който трябва да бъде приложен, е въпрос да накарате компютър да извърши изчислението вместо вас. Първата стъпка да кажете на компютъра какво да прави е да получите инструментите за това. Този алгоритъм може да бъде кодиран на всеки език; за простота, тази програма ще бъде кодирана на езика Python. За да командвате компютъра си да изпълнява операции с Python, ще ви е необходим редактор, който приема инструкции, написани на този език, които след това ще бъдат компилирани на машинен език, който компютърът ви може да разбере, за да може да изпълнява задачите, които му кажете да прави. В наши дни редактор и компилатор обикновено са интегрирани, но това не винаги е така. Можете да използвате всеки редактор/компилатор, който ви харесва, но аз ще ви покажа как да се сдобия с моя личен фаворит за Python: Canopy. Ако вече имате редактор/компилатор, можете да пропуснете тези стъпки.

  1. Отидете на
  2. Щракнете върху Download Canopy
  3. Щракнете върху бутона за изтегляне, съответстващ на вашата операционна система

    Изтеглянето ще започне автоматично

  4. Следвайте инструкциите за вливане след стартиране на файла за изпълнение
  5. Стартирайте програмата
  6. Щракнете върху „Редактор“от главното меню на програмата
  7. Кликнете върху „създаване на нов файл“в центъра на екрана

От този момент трябва да видите празен бял прозорец с курсор, наподобяващ основен документ за текстообработка. Вече сте готови да започнете да кодирате алгоритъма за числено интегриране за решаване на определени интеграли. Продължаващите стъпки ще имат фрагмент от код, който ще копирате, и обяснение за това какво прави този фрагмент за програмата като цяло.

Стъпка 5: Създаване на програмата Част 2: Импортиране на функции и дефиниране на променливи

Създаване на програмата Част 2: Импортиране на функции и определяне на променливи
Създаване на програмата Част 2: Импортиране на функции и определяне на променливи

Копирайте кода от снимката.

За всяка програма, която може да се окажете кодираща, ще има променливи. Променливата е име, дадено на стойност, върху която ще се работи и която може да се промени. В повечето езици за програмиране (ако не всички) трябва да инициализирате променлива, преди програмата да може да я промени. В случая с тази програма съм кръстил променливите "N", "a" и "b." Тези стойности представляват съответно броя на итерациите (AKA брой правоъгълници), долната граница и горната граница. Можете да наименувате тези, които искате, но за да съответстват на формулите, дадени в „Разбиране на алгоритъма, част 3: Правилото за средната точка“, най -добре е да ги запазите еднакви. Забележете, че те не са зададени само на определена стойност. Това е така, защото те са въведени, че когато програмата се изпълнява, потребителят на програмата може да определи каква ще бъде стойността. Текстът в кавички, след командата за въвеждане, се показва, когато стартирате програмата, като ви казва какъв тип стойност да въведете. Също така ще забележите, че "int" и "float" се използват преди обозначенията на входа. Тези термини указват на компютъра какъв тип променлива ще бъде тази стойност. "Int" е цяло число, а "float" е стойност с плаваща запетая (т.е. десетичен знак). Трябва да е ясно защо те са определени като такива.

Всеки текст, присъстващ след "#", е коментар, който позволява на програмиста да следва кода по хуманистичен начин; Направих някои коментари в кода си, които ще копирате, но не се колебайте да добавите коментари, които да ви помогнат конкретно. Програмата няма да чете нищо с "#" преди това като команда.

Частта от кода, която гласи "от математически импорт *", казва на програмата да импортира масив от математически функции, които могат да се използват, без да се налага да ги програмирате в себе си. "*" Означава само "всички". Прочетете тази част от кода като: от математическата библиотека импортирайте всички функции. Това ви позволява да използвате математически функции като синус, косинус, log, exp и т.н. Тези функции могат да бъдат интегрирани математически в кода.

Стъпка 6: Създаване на програмата Част 3: Създаване на функция за интеграция

Създаване на програмата Част 3: Създаване на функция за интеграция
Създаване на програмата Част 3: Създаване на функция за интеграция

Копирайте кода на снимката под предишния код.

ВНИМАНИЕ: Този раздел е плътен и искам да изясня някои неща, които потенциално биха могли да бъдат объркващи. Когато говорим за програмиране, думата „функция“изскача много. Този термин също се появява много, когато говорите за математика. Така че от този момент нататък, когато говоря за функция в програмния смисъл, ще напиша "Python функция", а когато говоря за математическата функция, ще кажа "математическа функция". В един момент ще използваме функция Python като представяне на въпросната математическа функция.

Следващият фрагмент от код е сърцето на програмата. Тук е определена функция на Python, която изпълнява алгоритъма за числена интеграция, използвайки правилото за средната точка. "def Integrate (N, a, b)" се чете като: дефинирайте функция, наречена "Integrate", която приема променливите "N", "a," и "b" и връща площта под кривата (математическата функция) която също е дефинирана в рамките на функцията "Интегриране" на Python. Можете да наричате тази функция на Python всичко, когато правите кодиране, но има смисъл да я наричате интегрирана, тъй като тя е функция, която наистина интегрира математическа функция.

На този етап си струва да коментираме как Python разделя блокове код. Блок код е цял раздел, който изпълнява определена задача. Различните езици за програмиране ще имат определени начини за разграничаване на тези „блокове“. За Python един блок се отличава с отстъпи: всеки раздел, изпълняващ задача, има свое собствено отстъпление и в други отстъпени блокове може да има отстъпени блокове. Това представлява задачи в рамките на задачите и по същество казва реда, в който кодът трябва да бъде изпълнен. В случая на дефинираната функция на Python „Интегриране“, всичко в тази функция е вдлъбнато в един блок, като по този начин се разграничават задачите, които ще бъдат изпълнени в рамките на тази функция. В тази функция на Python има вдлъбнати части, които също изпълняват свои собствени задачи. Той върви по следния начин: излага се команда (задача), след двоеточие следва командата и това, което прави командата, е с отстъп отдолу.

Веднага след дефинирането на функцията "интегриране" на Python ще дефинирате друга функция на Python, наречена f (x). Това представлява математическата функция, която ще бъде интегрирана. За всяка различна математическа функция, която искате да интегрирате, ще трябва да отидете в този ред на програмата, за да я промените (за разлика от променливите, които са дефинирани, когато програмата се изпълнява). Всяка функция на Python ще има връщаща стойност, това е, което функцията връща, когато й хвърлите стойност. В този случай въведената стойност е "x", а този "x" термин ще вземе стойността на това, което някога я хвърлите-това е временна стойност.

След това for-цикълът действа като сумиране, определено във формулите в раздела "Разбиране на алгоритъма" на този урок. Това сумиране изисква още няколко променливи, една от които ще действа като връщаща стойност за цялата функция "Интегриране" на Python. Преди цикъла for съм определил тези променливи като "стойност" и "стойност2". задачата на цикъла for е да итерира през диапазон от стойности за определена променлива, която удобно може да бъде определена в рамките на командата for-loop; в този случай тази променлива е "n". Обхватът, за който се случва итерацията, е от 1 до N+1. Трябва да забележите, че сумирането, дефинирано в гореспоменатите формули, варира само от 1 до N. Ние го дефинираме по този начин, защото езикът на Python брои всяка повторена стойност, започвайки от нула, така че по същество трябва да изместим диапазона от стойностите, така че да съответства на желаното от нас диапазон. След това цикълът for дава възможност за сумиране на всички височини на правоъгълника заедно и съхранява тази стойност в променливата, която нарекох "стойност". Това се вижда в парчето код, което се показва като: стойност += f (a +((n- (1/2))*((b-a)/N))).

След това следващото парче от кода използва променливата, наречена "value2", която след това се определя като сумата от всички височини на всеки правоъгълник, умножена по стандартизираната ширина на всеки правоъгълник-това е нашият краен отговор, който искаме показва се от нашата програма и по този начин е връщаната стойност на функцията "Интегриране" на Python.

Стъпка 7: Създаване на програмата Част 4: Показване на отговора

Създаване на програмата Част 4: Показване на отговора
Създаване на програмата Част 4: Показване на отговора

Копирайте кода на снимката под предишния код.

Сега, когато отговорът може да бъде получен чрез функцията "Интегриране" на Python, искаме да можем да го покажем. Това е само въпрос на поставяне на стойностите, въведени от потребителя ("N", "a," и "b") във функцията "Интегриране" на Python и отпечатването му на екрана. Тази команда е показана на ред 21 и наистина е всичко, което трябва да направите, за да завършите тази стъпка. Кодът на редове 19 и 20 е точно там, за да "подобри" резултатите от цялата програма. "print (" …………… да се отпечата след този ред текст.

Стъпка 8: Изпълнение на програмата Част 1: Стартиране на програмата такава, каквато е

Изпълнение на програмата Част 1: Стартиране на програмата такава, каквато е
Изпълнение на програмата Част 1: Стартиране на програмата такава, каквато е

Ако не използвате Canopy, вероятно дори не е нужно изобщо да следвате тази стъпка и стартирането на програмата може да изисква различни процедури. В Canopy, преди да можете да стартирате програмата, ще трябва да я запазите. Типът на файла за програма на Python е.py файл-той автоматично се записва така. Изберете къде искате да бъде записан файлът, след което ще можете да стартирате програмата.

Изпълнение на програмата:

  1. Натиснете зеления бутон, който прилича на „бутон за възпроизвеждане“, разположен на лентата с инструменти точно над мястото, където се показва името на файла ви (вижте снимката).
  2. След това програмата ще работи в долния екран на редактора, известен като среда за анализ на данни Canopy. Ако приемем, че сте копирали подканите, както ги написах, трябва да видите в долната част на средата за анализ на данни Canopy подканата: „Въведете колко пъти искате да сумирате (повече пъти = по-точно):“. (вижте снимката)
  3. Въведете стойност за колко пъти искате да направите итерацията, т.е. 10000 (колко правоъгълника искате да избутате във вашата област), след което натиснете enter.
  4. Ще се покажат още подкани с изявления, които трябва да са познатите подкани за въвеждане, които сте кодирали в програмата в стъпка 5. Попълнете ги по подходящ начин, както в номер 3 по -горе.
  5. Интегралът трябва да бъде оценен и трябва да се появи резултат.

Ако сте кодирали програмата, както е показано на предходните снимки, току -що сте интегрирали f (x) = x^2 в някои граници. Интегралът на x^2 е лесен за оценка на ръка, затова трябва да проверите и да се уверите, че програмата е дала много близък отговор на правилната аналитична стойност, определена на ръка. Когато стартирам програмата със стойности N = 10000, a = 0 и b = 10, получавам отговора 333.33333249999964. Правилният аналитичен отговор е 333.333. Това е невероятно точно и бързо. По същество сте стиснали 10 000 правоъгълника между 0 и 10 по оста x и сте ги използвали за приближаване на площта под кривата x^2!

Стъпка 9: Изпълнение на програмата Част 2: Интегриране на други математически функции

Изпълнение на програмата Част 2: Интегриране на други математически функции
Изпълнение на програмата Част 2: Интегриране на други математически функции

В предишната стъпка, ако сте следвали верно, интегрирахте f (x) = x^2. Това не е единствената математическа функция, която тази програма може да интегрира. Припомнете си, че от стъпка 5 импортирахте в програмата масива от математическа библиотека на функциите на Python. Това ви позволява да използвате по -сложни математически функции, които могат да бъдат интегрирани. Нека да направим един изстрел. Разбира се, можете да използвате всяка функция, която искате, но аз допълнително ще демонстрирам точността на този код, като интегрирам определена математическа функция, която дава добре известна стойност, когато се интегрира в определен диапазон. Тази функция е f (x) = Sin [x]. Тази математическа функция се показва в първата придружаваща картина, нанесена от 0 до 2π, а интересуващата област е засенчена в тюркоаз. Има равно количество положителна площ, тъй като в този интервал има отрицателна област, така че ако добавите общата площ, трябва да получите нула. Нека видим дали това наистина се случва:

Поставянето на математическата функция f (x) = Sin [x] в програмата:

  1. Преди да стартирате програмата отново, под коментар "#type your function after return", въведете: sin (x), където x ** 2 се намира в момента. (вижте снимката).
  2. Стартирайте програмата, като натиснете отново зеления бутон за възпроизвеждане.
  3. Въведете 10000 за стойността N (колко пъти искате да сумирате).
  4. поставете "0" за долната граница.
  5. Поставете 6.2832 в за горната граница (приблизително 2π).
  6. Вижте каква стойност получавате.

Когато направих това, в крайна сметка получих стойност 1.079e-10: това се равнява на.0000000001079, което е наистина близо до нула, така че изглежда точна и показва, че алгоритъмът адекватно борави с отрицателната област.

Стъпка 10: Изпълнение на програмата Част 3: Разширяване на програмата

На този етап сте готови: имате работещ определен интегрален алгоритъм, кодиран в Python, който работи гладко и дава много точни отговори. Тази програма обаче може да бъде подобрена. Не съм програмист и имам минимален опит с Python. Всъщност трябваше да се освежа с използването на Python, за да завърша този урок, но това трябва да ви даде увереност, че Python е толкова лесен за изучаване език. Моят извод е, че можете да разширите тази програма, като я направите по -ефективна, може би внедрите някакъв графичен интерфейс и я направите по -лесна за употреба.

Моите мисли за разширяване на програмата:

  • Внедрете графичен потребителски интерфейс, който ви позволява да стартирате програмата, без да използвате интерактивната среда за анализ на данни Canopy
  • Направете така, че математическата функция, която трябва да бъде интегрирана, не трябва да се въвежда вътре в програмата, но може да бъде въведена след стартирането на програмата (първоначално се опитвах да направя това, но не можах да го разбера).
  • Определете функция „Интегриране“на Python, така че да приеме функцията f (x), както се предполага, че функцията f (x) е дефинирана в нея.

Това са само някои примери за области на подобрение, но гарантирам, че има много други области, които могат да бъдат подобрени. Затова оставям тази стъпка като пример за недостатъците, които тази програма има, и може би упражнение за всеки, който иска да подобри програмата допълнително.

Препоръчано: