Hur man skriver en Taylor-serie i Python

En Taylor-serie är en representation av en funktion som använder en oändlig summa. Datorer gör ofta approximationer av värdena för en trigonometrisk, exponentiell eller annan transcendental funktion genom att summera ett ändligt antal termer i dess Taylor-serie, och du kan återskapa denna process i Pytonorm. Termerna för summan är baserade på successiva derivator av funktionen, så du måste identifiera ett mönster i värdena för dessa derivator för att skriva en formel för varje term i serien. Använd sedan en slinga för att ackumulera summan, kontrollera noggrannheten för din approximation med antalet iterationer av slingan.

Steg 1

Se definitionen av Taylor-serien för att förstå hur varje term kan beräknas. Varje term i serien indexeras, vanligtvis med "n", och dess värde är relaterat till den n: te derivatan av den funktion som representeras. För enkelhetens skull, använd 0 för värdet av "a" på ditt första försök. Denna specialversion av Taylor-serien kallas Maclaurin-serien. Prova sinusfunktionen, eftersom dess successiva derivator är lätta att bestämma.

Dagens video

Steg 2

Skriv ner flera värden på den n: e derivatan av sinusfunktionen utvärderade till 0. Om n är 0 är värdet 0. Om n är 1 är värdet 1. Om n är 2 är värdet 0. Om n är 3 är värdet -1. Härifrån upprepas mönstret, så bortse från varje jämnindexerad term i Taylor-serien eftersom den multipliceras med 0. En formel för varje term i den resulterande serien är:

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

"2n+1" används istället för "n" för att återindexera serien, vilket effektivt kasserar de jämnindexerade termerna utan att ändra själva indexet. Faktorn (-1)^n står för växlingen mellan positiva och negativa på varandra följande termer. Detta preliminära matematikarbete kan tyckas främmande, men Python-koden kommer att vara mycket lättare att skriva och återanvända på andra Taylor-serier om indexet alltid börjar på 0 och räknas uppåt i steg om 1.

Steg 3

Öppna Python-tolken. Börja med att skriva följande kommandon för att definiera flera variabler:

summa = 0 x = 0,5236

Variabeln "summa" kommer att användas för att ackumulera summan av Taylor-serien när varje term beräknas. Variabeln "x" är vinkeln (i radianer) för vilken du vill approximera sinusfunktionen. Ställ in det till vad du vill.

Steg 4

Importera "matematik"-modulen med följande kommando så att du har tillgång till funktionerna "pow" och "faktoriell":

importera matematik

Steg 5

Initiera en "för"-loop, ställ in antalet iterationer med funktionen "intervall":

för n i intervallet (4):

Detta gör att indexvariabeln n börjar på noll och räknas upp till 4. Även detta lilla antal iterationer kommer att ge ett överraskande exakt resultat. Slingan körs inte omedelbart och kommer inte att börja förrän du har specificerat hela kodblocket att iterera över.

Steg 6

Skriv följande kommando för att lägga till värdet av varje på varandra följande term till "summa:"

summa += math.pow(-1,n)/math.factorial (2*n+1)*math.pow (x, 2*n+1)

Lägg märke till att kommandot är indraget med en tabb, vilket indikerar för Python att det är en del av "för"-loopen. Notera också hur "pow" och "faktoriell" används i stället för "^" och "!" notation. Formeln till höger om tilldelningsoperatorn "+=" är identisk med den i steg 2, men skriven i Python-syntax.

Steg 7

Tryck på "Enter" för att lägga till en tom rad. För Python indikerar detta avslutande av "för"-loopen, så beräkningen exekveras. Skriv kommandot "summa" för att visa resultatet. Om du använde värdet på x som ges i steg 3 är resultatet mycket nära 0,5, sinus för pi/6. Prova processen igen för olika värden på x och för olika antal iterationer av loopen, kontrollera dina resultat mot funktionen "math.sin (x)". Du har implementerat i Python själva processen som många datorer använder för att beräkna värden för sinus och andra transcendentala funktioner.

Dricks

Dra in och skriv kommandot "summa" på den andra raden i "för"-slingan för att få en löpande summa av summan när koden körs. Detta avslöjar hur varje efterföljande term i serien för summan närmare och närmare det faktiska värdet av funktionen.