Мазмұны:

Python -да сандық интеграция бағдарламасын қалай жасауға болады: 10 қадам
Python -да сандық интеграция бағдарламасын қалай жасауға болады: 10 қадам

Бейне: Python -да сандық интеграция бағдарламасын қалай жасауға болады: 10 қадам

Бейне: Python -да сандық интеграция бағдарламасын қалай жасауға болады: 10 қадам
Бейне: Python тілі: Тізімдер List 2024, Шілде
Anonim
Python -да сандық интеграция бағдарламасын қалай жасауға болады
Python -да сандық интеграция бағдарламасын қалай жасауға болады

Бұл сандық интеграция алгоритмін қолдана отырып, нақты интегралдарды бағалайтын бағдарламаны құруға және іске қосуға арналған оқулық. Мен қадамдарды 3 бөлімге бөлдім: бағдарламаны жасау үшін қолданылатын алгоритмді түсіну, Python бағдарламалау тілінің көмегімен бағдарламаны кодтау және бағдарламаны іске қосу. Бұл оқулық белгілі бір интегралдарды бағалау үшін калькуляторды тез жасау қажет болуы мүмкін немесе үлкенірек бағдарламада қолдану алгоритмін қажет ететіндерге арналған. Есептеудің негізгі білімі күтіледі, бірақ сәйкес математикалық ақпарат қаралады. Бағдарламалау туралы білім күтілмейді, бірақ пайдалы, өйткені мен бағдарламалаудың нақты қалай жұмыс істейтінін қысқаша сипаттаймын.

Сізге не қажет болады:

Интернетке кіруге болатын дербес компьютер

1 -қадам: Алгоритмді түсіну 1 -бөлім: Анықталған интеграл және оны қолдану

Алгоритмді түсіну 1 -бөлім: Анықталған интеграл және оны қолдану
Алгоритмді түсіну 1 -бөлім: Анықталған интеграл және оны қолдану

Менің ойымша, сіз негізгі есептер контексінде интегралдың не екенін аздап білесіз деп ойлаймын. Интегралдар маңызды, себебі олар мәндер жиынын шексіз кіші ұзындыққа көбейтуге мүмкіндік береді; бұл қаржы, сандар теориясы, физика, химия және басқа да көптеген салаларда пайдалы. Бұл бағдарлама қисық астындағы ауданды ақырғы интервал үшін есептеуге мүмкіндік береді, немесе басқаша айтқанда, ол туындыға қарсы құралдарды бағаламайды-бұл үшін әлдеқайда күшті алгоритм қажет. Бұл алгоритм басқа бір нәрсеге қатысты үлкенірек бағдарламада нақты интегралды бағалау қажет болса немесе қолмен орындалған кез келген нақты интегралға жауапыңызды тексергіңіз келсе пайдалы болады.

Негізгі анықталған интеграл функциямен анықталатын қисық астындағы ауданды білдіреді. f (x). Анықталған интеграл үшін біз екі нүктенің арасындағы ауданды іздейміз (сәйкесінше а және 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. Https://www.enthought.com/product/canopy/ сайтына өтіңіз
  2. Download Canopy түймесін басыңыз
  3. Операциялық жүйеге сәйкес келетін жүктеу түймесін басыңыз

    Жүктеу автоматты түрде басталады

  4. Орындау файлын бастағаннан кейін инстилляция нұсқауларын орындаңыз
  5. Бағдарламаны іске қосыңыз
  6. Бағдарламаның негізгі мәзірінен «Редактор» түймесін басыңыз
  7. Экранның ортасында «жаңа файл жасау» түймесін басыңыз

Осы сәттен бастап сіз мәтінді өңдеуге арналған негізгі құжатқа ұқсас курсоры бар бос ақ терезені көресіз. Сіз енді нақты интегралдарды шешудің сандық интегралдауын кодтауға кірісуге дайынсыз. Келесі қадамдарда сіз көшіретін код үзіндісі болады және бұл үзінді тұтастай бағдарлама үшін не істейтіні түсіндіріледі.

5 -қадам: Бағдарламаны құру 2 -бөлім: Функцияларды импорттау және айнымалыларды анықтау

Бағдарламаны құру 2 -бөлім: Функцияларды импорттау және айнымалыларды анықтау
Бағдарламаны құру 2 -бөлім: Функцияларды импорттау және айнымалыларды анықтау

Суреттегі кодты көшіріңіз.

Кез келген бағдарлама үшін сіз кодтай аласыз, айнымалылар болады. Айнымалы - бұл жұмыс істейтін және өзгеретін мәнге берілген атау. Бағдарламалау тілдерінің көпшілігінде (егер бәрі болмаса), бағдарлама өзгеріс енгізер алдында айнымалы мәнді инициализациялау қажет. Бұл бағдарлама жағдайында мен «N», «a» және «b» айнымалыларын атадым. Бұл мәндер сәйкесінше қайталанулар санын (тіктөртбұрыштардың АКА саны), төменгі шекараны және жоғарғы шекараны білдіреді. Сіз қалаған нәрсені атауға болады, бірақ «Алгоритмді түсіну 3 -бөлім: Орта нүкте ережесі» берілген формулаларға сәйкес келу үшін оларды сол күйінде сақтаған дұрыс. Назар аударыңыз, олар белгілі бір мәнге орнатылмаған. Себебі, олар бағдарлама енгізілген кезде, бағдарлама пайдаланушысы мәннің қандай болатынын анықтай алады. Кірістіру пәрменінен кейін тырнақшалардағы мәтін бағдарламаны іске қосқанда пайда болады, ол сізге қандай мәнді теру керектігін айтады. Сондай -ақ, «int» және «float» енгізу белгілерінің алдында қолданылғанын байқайсыз. Бұл терминдер компьютерге бұл мән қандай айнымалы болатынын айтады. «Int» - бүтін сан, ал «өзгермелі» - өзгермелі нүкте мәні (яғни ондық бөлшек). Неліктен олар осылай тағайындалғаны түсінікті болуы керек.

«#» Белгісінен кейінгі кез келген мәтін - бұл бағдарламашыға кодты гуманистік түрде орындауға мүмкіндік беретін түсініктеме; Мен кодта сіз көшіретін кейбір түсініктемелерді жаздым, бірақ сізге көмектесетін кез келген түсініктемелерді енгізуге болады. Бағдарлама бұның алдында «#» белгісімен ештеңені оқымайды.

«Математикадан импорттау *дегенді оқитын код бөлігі бағдарламаға математикалық функциялардың жиынтығын импорттауды айтады, оларды өздігінен бағдарламалаудың қажеті жоқ. «*» «Барлығы» дегенді білдіреді. Кодтың осы бөлігін келесідей оқыңыз: математикалық кітапханадан барлық функцияларды импорттаңыз. Бұл синус, косинус, журнал, эксп және т.

6 -қадам: Бағдарламаны құру 3 -бөлім: Интеграция функциясын құру

Бағдарламаны құру 3 -бөлім: Интеграция функциясын құру
Бағдарламаны құру 3 -бөлім: Интеграция функциясын құру

Алдыңғы кодтың астындағы суреттегі кодты көшіріңіз.

ЕСКЕРТУ: Бұл бөлім тығыз, мен түсініксіз болуы мүмкін кейбір нәрселерді тазартқым келеді. Бағдарламалау туралы айтатын болсақ, «функция» сөзі көп пайда болады. Бұл термин математика туралы айтқан кезде де пайда болады. Сонымен, осы сәттен бастап мен бағдарламалау мағынасындағы функция туралы айтатын болсам, мен «Python функциясын» жазамын, ал математикалық функция туралы айтатын болсам, «математикалық функция» деп айтамын. Белгілі бір уақытта біз қарастырылатын математикалық функцияның бейнесі ретінде Python функциясын қолданамыз.

Бұл кодтың келесі үзіндісі - бұл бағдарламаның жүрегі. Мұнда орта нүкте ережесін қолдана отырып, сандық интеграция алгоритмін жүзеге асыратын Python функциясы анықталған. «def Integrate (N, a, b)» келесідей: «N,» «a» және «b» айнымалысын қабылдайтын және қисық астындағы аймақты қайтаратын «интеграция» деп аталатын функцияны анықтаңыз (математикалық функция) ол сондай -ақ Python «Integrate» функциясында анықталады. Сіз бұл Python функциясын кодтау кезінде кез келген нәрсе деп атай аласыз, бірақ оны интеграция деп атауға болады, себебі бұл шын мәнінде математикалық функцияны біріктіретін функция.

Бұл кезде Python код блоктарын қалай бөлетіні туралы түсініктеме беру керек. Код блогы - бұл белгілі бір тапсырманы орындайтын бүтін бөлім. Әр түрлі бағдарламалау тілдерінде бұл «блоктарды» ажыратудың арнайы әдістері болады. Python үшін блок шегініспен ерекшеленеді: әр тапсырманы орындаудың өзіндік шегінісі бар және басқа шегініс блоктардың ішінде шегініс блоктары болуы мүмкін. Бұл тапсырмалар ішіндегі міндеттерді білдіреді және кодтың орындалу ретін көрсетеді. Анықталған Python функциясының «Интеграциялау» жағдайында, бұл функцияның ішіндегі барлық нәрсе бір блоктан шегініспен ажыратылады, осылайша осы функцияның ішінде орындалатын міндеттер ажыратылады. Бұл Python функциясында өз міндеттерін орындайтын шегініс бөліктері бар. Ол келесідей болады: пәрмен (тапсырма) қойылады, пәрменге қос нүкте қойылады, ал команданың әрекеті астына шегініс қойылады.

Python «интегралдау» функциясын анықтағаннан кейін сіз f (x) деп аталатын басқа Python функциясын анықтайсыз. Бұл интеграцияланатын математикалық функцияны білдіреді. Сіз біріктіргіңіз келетін әр түрлі математикалық функция үшін оны өзгерту үшін осы бағдарлама жолына өтуге тура келеді (бағдарлама іске қосылған кезде анықталатын айнымалылардан айырмашылығы). Әрбір Python функциясының қайтару мәні болады, егер сіз оны мәнге шығарсаңыз, функция қайтарады. Бұл жағдайда енгізілген мән «x» болады, және бұл «x» термині сіз лақтырған нәрсенің мәнін қабылдайды-бұл уақытша мән.

Әрі қарай, цикл осы оқулықтың «Алгоритмді түсіну» бөліміндегі формулаларда анықталған жиынтық ретінде әрекет етеді. Бұл жиынтыққа тағы бірнеше айнымалылар қажет, олардың бірі Python «Integrate» функциясының қайтару мәні ретінде әрекет етеді. Алдын ала цикл алдында мен бұл айнымалыларды «мән» және «мән2» деп белгіледім. for-loop-тың міндеті-цикл үшін for командасында ыңғайлы түрде анықталатын тағайындалған айнымалы мәндер диапазонында қайталау; бұл жағдайда бұл айнымалы «n» болады. Итерация болатын диапазон 1 -ден N+1 -ге дейін. Жоғарыда айтылған формулаларда анықталған жиынтықтың мәні тек 1 -ден N -ге дейін болатынын байқауыңыз керек. Біз оны осылай анықтаймыз, себебі Python тілі әрбір қайталанатын мәнді нөлден бастап есептейді, сондықтан мәндердің ауқымын өз қалауымызға сәйкес өзгертуге тура келеді. ауқымы. Фор-цикл тіктөртбұрыштың барлық биіктігін бірге қосуға мүмкіндік береді және сол мәнді мен «мән» деп атаған айнымалыға сақтайды. Бұл келесідей көрінетін код бөлігінде көрінеді: мән += f (a +((n- (1/2))*((b-a)/N))).

Сол жерден кодтың келесі бөлігі «value2» деп аталатын айнымалы мәнді қолданады, ол әр тіктөртбұрыштың барлық биіктіктерінің қосындысы ретінде әр төртбұрыштың стандартты еніне көбейтіледі-бұл біздің соңғы жауап. біздің бағдарламада көрсетілген және осылайша Python «Integrate» функциясының қайтару мәні болып табылады.

7 -қадам: Бағдарламаны құру 4 -бөлім: Жауапты көрсету

Бағдарламаны құру 4 -бөлім: Жауапты көрсету
Бағдарламаны құру 4 -бөлім: Жауапты көрсету

Алдыңғы кодтың астындағы суреттегі кодты көшіріңіз.

Енді жауапты Python «Integrate» функциясы арқылы алуға болатындықтан, біз оны көрсете алғымыз келеді. Бұл пайдаланушы енгізген мәндерді («N», «a» және «b») «Интеграциялау» Python функциясына енгізу және оны экранға басып шығару туралы ғана. Бұл пәрмен 21 -жолда көрсетілген және бұл қадамды аяқтау үшін сізге қажет. 19 және 20 -жолдардағы код барлық бағдарламаның шығуын «жақсарту» үшін ғана бар. «print (» ……………………. «)» бағдарламаның кіріс бөлігін шығыс бөлімінен бөледі, ал «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. Бұл керемет дәл және жылдам. Сіз x осінде 0 мен 10 арасындағы 10 000 тіктөртбұрышты сығып алдыңыз және оларды x^2 қисығының астындағы аймақты жақындату үшін қолдандыңыз!

9 -қадам: Бағдарламаны іске қосу 2 -бөлім: Басқа математикалық функцияларды біріктіру

Бағдарламаны іске қосу 2 -бөлім: Басқа математикалық функцияларды біріктіру
Бағдарламаны іске қосу 2 -бөлім: Басқа математикалық функцияларды біріктіру

Алдыңғы қадамда, егер сіз адал жүрсеңіз, сіз f (x) = x^2 біріктірдіңіз. Бұл бағдарлама біріктіре алатын жалғыз математикалық функция емес. Еске салайық, 5 -қадамда сіз бағдарламаға Python функцияларының математикалық кітапханалық жиынын импорттадыңыз. Бұл біріктіруге болатын күрделі математикалық функцияларды қолдануға мүмкіндік береді. Бірге ату жіберейік. Әрине, сіз кез келген функцияны қолдана аласыз, бірақ мен белгілі бір диапазонда интеграцияланған кезде белгілі мән беретін белгілі бір математикалық функцияны біріктіру арқылы осы кодтың дәлдігін көрсетемін. Бұл функция f (x) = Sin [x]. Бұл математикалық функция 0 -ден 2π -ге дейін салынған бірінші ілеспе суретте көрсетіледі және қызығушылық аймағы көгілдір түске боялған. Позитивті облыстың тең саны бар, өйткені бұл аралықта теріс аймақ бар, сондықтан егер сіз жалпы ауданды қоссаңыз, онда сіз нөлге тең болуыңыз керек. Бұл шынымен де орын алатынын көрейік:

Бағдарламаға f (x) = Sin [x] математикалық функциясын енгізу:

  1. Бағдарламаны қайта іске қоспас бұрын, «қайтарылғаннан кейін өз функцияңызды #type» түсініктемесінің астына x ** 2 қазіргі уақытта орналасқан sin (x) деп теріңіз. (суретке қараңыз).
  2. Жасыл ойнату түймесін қайта басу арқылы бағдарламаны іске қосыңыз.
  3. N мәні үшін 10000 теріңіз (қанша рет қосқыңыз келеді).
  4. төменгі шекара үшін «0» қойыңыз.
  5. Жоғарғы шекара үшін 6.2832 қойыңыз (шамамен 2π).
  6. Сіз қандай құндылыққа ие екеніңізді қараңыз.

Мен мұны істегенде, мен 1.079e-10 мәнін алуды аяқтадым: бұл.0000000001079-ға тең, бұл шынымен нөлге жақын, сондықтан ол дәл болып көрінеді және алгоритм теріс аймақты тиісті түрде өңдейтінін көрсетеді.

10 -қадам: Бағдарламаны іске қосу 3 -бөлім: Бағдарламаны кеңейту

Бұл жерде сіз жасай аласыз: сізде Python -да кодталған жұмыс істейтін нақты интегралды алгоритм бар, ол біркелкі жұмыс істейді және өте дәл жауап береді. Дегенмен, бұл бағдарламаны жақсартуға болады. Мен бағдарламашы емеспін және Python -мен тәжірибем аз. Шын мәнінде, мен бұл оқулықты аяқтау үшін Python -ды қолдануды жаңартуға тура келді, бірақ бұл сізге Python -ды үйренуге оңай тіл екеніне сенімділік береді. Менің ойымша, сіз бұл бағдарламаны тиімдірек ету арқылы кеңейте аласыз, мүмкін кейбір GUI -ді қолдана аласыз және оны қолданушыға ыңғайлы ете аласыз.

Бағдарламаны кеңейту туралы менің ойларым:

  • Canopy интерактивті деректерді талдау ортасын пайдаланбай бағдарламаны іске қосуға мүмкіндік беретін графикалық пайдаланушы интерфейсін енгізіңіз
  • Интеграцияланатын математикалық функцияны бағдарламаның ішіне енгізу қажет емес, бірақ оны бағдарлама іске қосылғаннан кейін енгізуге болатындай етіп жасаңыз (бастапқыда мен мұны істеуге тырыстым, бірақ түсінбедім).
  • «Интеграциялау» Python функциясын анықтаңыз, осылайша f (x) функциясын f (x) функциясының ішінде анықталуына сәйкес қабылдайды.

Бұл жақсарту бағыттарының кейбір мысалдары, бірақ мен оны жақсартуға болатын басқа да көптеген салалар бар екеніне кепілдік беремін. Сондықтан мен бұл қадамды осы бағдарламаның кемшіліктеріне мысал ретінде қалдырамын және мүмкін бағдарламаны одан әрі жетілдіргісі келетіндерге жаттығу.

Ұсынылған: