Как да напиша поредица на Тейлър в Python

Редът на Тейлър е представяне на функция, използваща безкрайна сума. Компютрите често правят приближения на стойностите на тригонометрични, експоненциални или други трансцендентални функция чрез сумиране на краен брой членове на нейния ред на Тейлър и можете да пресъздадете този процес в Python. Членовете на сумата се основават на последователни производни на функцията, така че ще трябва да идентифицирате модел в стойностите на тези производни, за да напишете формула за всеки член от поредицата. След това използвайте цикъл, за да натрупате сумата, като контролирате точността на вашето приближение с броя на повторенията на цикъла.

Етап 1

Направете справка с определението на серията на Тейлър, за да разберете как може да бъде изчислен всеки термин. Всеки член от поредицата е индексиран, обикновено с "n" и неговата стойност е свързана с n-то производно на представената функция. За простота, използвайте 0 за стойността на "a" при първия си опит. Тази специална версия на серията Taylor се нарича серия Maclaurin. Опитайте функцията синус, тъй като нейните последователни производни са лесни за определяне.

Видео на деня

Стъпка 2

Запишете няколко стойности на n-то производно на функцията синус, оценена на 0. Ако n е 0, стойността е 0. Ако n е 1, стойността е 1. Ако n е 2, стойността е 0. Ако n е 3, стойността е -1. Оттук нататък моделът се повтаря, така че пренебрегвайте всеки четно индексиран член от серията Тейлър, тъй като е умножен по 0. Формула за всеки член от получената серия е:

(-1)^n/(2n+1)!*x^(2n+1)

"2n+1" се използва вместо "n" за повторно индексиране на серията, като ефективно се отхвърлят четно индексираните термини, без да се променя самият индекс. Коефициентът (-1)^n отчита редуването между положителни и отрицателни на последователни членове. Тази предварителна математическа работа може да изглежда излишна, но кодът на Python ще бъде много по-лесен за писане и повторно използване в други серии на Тейлър, ако индексът винаги започва от 0 и се брои нагоре на стъпки от 1.

Стъпка 3

Отворете интерпретатора на Python. Започнете, като въведете следните команди, за да дефинирате няколко променливи:

сума = 0 x = .5236

Променливата "сума" ще се използва за натрупване на сумата от серията на Тейлър, когато се изчислява всеки член. Променливата "x" е ъгълът (в радиани), за който искате да аппроксимирате функцията синус. Настройте го на каквото искате.

Стъпка 4

Импортирайте модула "math" със следната команда, за да имате достъп до функциите "pow" и "factorial":

импортиране на математика

Стъпка 5

Започнете цикъл "for", като зададете броя на повторенията с функцията "range":

за n в диапазон (4):

Това ще накара индексната променлива, n, да започне от нула и да брои до 4. Дори този малък брой повторения ще даде изненадващо точен резултат. Цикълът не се изпълнява веднага и няма да започне, докато не посочите целия блок код за повторение.

Стъпка 6

Въведете следната команда, за да добавите стойността на всеки следващ термин към "сума:"

сума += math.pow(-1,n)/math.factorial (2*n+1)*math.pow (x, 2*n+1)

Забележете, че командата е с отстъп с табулатор, което показва на Python, че е част от цикъла „for“. Също така имайте предвид как "pow" и "factorial" се използват вместо "^" и "!" нотация. Формулата вдясно от оператора за присвояване "+=" е идентична с тази в стъпка 2, но е написана в синтаксис на Python.

Стъпка 7

Натиснете "Enter", за да добавите празен ред. За Python това показва прекратяване на цикъла "for", така че изчислението се изпълнява. Въведете командата "sum", за да разкриете резултата. Ако сте използвали стойността на x, дадена в стъпка 3, резултатът е много близък до .5, синусът на pi/6. Опитайте процеса отново за различни стойности на x и за различен брой итерации на цикъла, като проверите резултатите си с функцията "math.sin (x)". Вие сте внедрили в Python самия процес, който много компютри използват за изчисляване на стойности за синус и други трансцендентални функции.

Бакшиш

Отстъп и въведете командата "sum" на втория ред на цикъла "for", за да получите текуща сума от сумата, докато кодът се изпълнява. Това разкрива как всеки следващ член от поредицата приближава сумата все по-близо до действителната стойност на функцията.