Мазмуну:

Pythonдо сандык интеграция программасын кантип жасаса болот: 10 кадам
Pythonдо сандык интеграция программасын кантип жасаса болот: 10 кадам

Video: Pythonдо сандык интеграция программасын кантип жасаса болот: 10 кадам

Video: Pythonдо сандык интеграция программасын кантип жасаса болот: 10 кадам
Video: Use Cases in UTXO DeFi / 1.10.2024 on Spaces (Chapters in Description) 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. Https://www.enthought.com/product/canopy/ дарегине өтүңүз
  2. Click 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" өзгөрмөлөрүн кабыл алган жана "ийри" астындагы аймакты кайтаруучу "Integrate" деп аталган функцияны аныктайт (математикалык функция) ал ошондой эле "Интеграция" Python функциясынын чегинде аныкталат. Сиз бул Python функциясын коддоодо каалаган нерсеңиз деп атай аласыз, бирок аны интеграция деп атоонун мааниси бар, анткени бул чынында эле математикалык функцияны бириктирген функция.

Бул жерде Python код блокторун кантип бөлүп караганы жөнүндө комментарий берүү керек. Код блогу - бул белгилүү бир тапшырманы аткаруучу бүтүн бөлүм. Ар кандай программалоо тилдеринде бул "блокторду" айырмалоо жолдору болот. Python үчүн блок чегинүү менен айырмаланат: ар бир тапшырманы аткаруучу бөлүмдүн өз чеги бар жана башка чегинген блоктордун ичинде чегинүү блоктору болушу мүмкүн. Бул тапшырмалар ичиндеги милдеттерди билдирет жана негизинен коддун аткарылышы керек болгон тартипти айтат. Белгиленген Python "Интеграция" функциясында, бул функциядагы бардык нерселер бир блоктун чегинүүсүндө болот, ошону менен ал функциянын ичинде аткарыла турган милдеттер айырмаланат. Бул Python функциясында өз милдеттерин аткарган чегинген бөлүктөр бар. Бул төмөнкүдөй: буйрук (тапшырма) коюлган, эки чекиттүү буйрукту ээрчийт жана буйруктун асты чегинген.

Python "интеграциялоо" функциясын аныктагандан кийин, сиз f (x) деп аталган башка Python функциясын аныктайсыз. Бул интегралдык боло турган математикалык функцияны билдирет. Сиз интеграциялоону каалаган ар бир математикалык функция үчүн, аны өзгөртүү үчүн бул программа линиясына өтүшүңүз керек болот (программа иштетилгенде аныкталган өзгөрмөлөрдөн айырмаланып). Ар бир Python функциясы кайтарымдуу мааниге ээ болот, бул функцияны ага ыргытканда кайтарат. Бул учурда, "x" мааниси, жана бул "x" термини аны ыргытканыңыздын маанисин алат-бул убактылуу баалуулук.

Кийинки, for-loop бул окуу куралынын "Алгоритмди түшүнүү" бөлүмүндөгү формулаларда аныкталган сумма катары иштейт. Бул сумма дагы бир нече өзгөрмөлөрдү талап кылат, алардын бири Python "Integrate" функциясынын кайтарымдуу мааниси катары иштейт. For-loop алдында мен бул өзгөрмөлөрдү "value" жана "value2" деп белгилеп койгом. for-loopтун милдети for-loop командасынын ичинде ыңгайлуу түрдө аныкталышы мүмкүн болгон белгиленген өзгөрмөнүн маанилеринин диапазонун кайталоо; бул учурда, бул өзгөрмө "n". Итерациянын диапазону 1ден N+1ге чейин. Сиз жогоруда айтылган формулаларда аныкталган сумма 1ден Nге чейин экенин байкап көрүшүңүз керек. Биз муну мындай аныктайбыз, анткени Python тили ар бир кайталануучу маанини нөлдөн баштап эсептейт, андыктан биз маанилер диапазонун өзүбүз каалагандай ылайыкташтырышыбыз керек. диапазон. For-loop анда тик бурчтуктун бардык бийиктигин чогуу чогултууга мүмкүндүк берет жана ошол маанини мен "баалуулук" деп атаган өзгөрмөгө сактайт. Бул:

Ал жерден, коддун кийинки бөлүгү "value2" деп аталган өзгөрмөнү колдонот, андан кийин ар бир тик бурчтуктун бийиктигинин суммасы ар бир тик бурчтуктун стандартташтырылган туурасына көбөйтүлөт-бул биздин акыркы жооп. биздин программа тарабынан көрсөтүлөт, ошондуктан "Интеграция" Python функциясынын кайтарым мааниси.

7 -кадам: Программаны түзүү 4 -бөлүк: Жоопту көрсөтүү

Программаны түзүү 4 -бөлүк: Жоопту көрсөтүү
Программаны түзүү 4 -бөлүк: Жоопту көрсөтүү

Мурунку коддун астындагы сүрөттөгү кодду көчүрүңүз.

Эми жоопту "Интеграциялоо" Python функциясы аркылуу алууга болот, биз аны көрсөтө алгыбыз келет. Бул колдонуучу киргизген баалуулуктарды ("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" деген комментарийдин астына жаз: sin (x), мында x ** 2 учурда жайгашкан. (сүрөттү караңыз).
  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) функциясына ылайык кабыл алат.

Бул өркүндөтүү багыттарынын кээ бир мисалдары, бирок мен аны өркүндөтүүгө боло турган көптөгөн башка аймактар бар деп кепилдик берем. Ошентип, мен бул кадамды бул программанын кемчиликтеринин мисалы катары калтырам жана, балким, программаны андан ары жакшыртууну каалагандар үчүн көнүгүү.

Сунушталууда: