Hvordan skrive en Taylor-serie i Python

En Taylor-serie er en representasjon av en funksjon som bruker en uendelig sum. Datamaskiner gjør ofte tilnærminger av verdiene til en trigonometrisk, eksponentiell eller annen transcendental funksjon ved å summere et endelig antall av vilkårene i Taylor-serien, og du kan gjenskape denne prosessen i Python. Vilkårene for summen er basert på påfølgende deriverte av funksjonen, så du må identifisere et mønster i verdiene til disse derivertene for å skrive en formel for hvert ledd i serien. Deretter bruker du en løkke for å akkumulere summen, og kontroller nøyaktigheten av tilnærmingen din med antall iterasjoner av løkken.

Trinn 1

Se definisjonen av Taylor-serien for å forstå hvordan hvert begrep kan beregnes. Hvert ledd i serien er indeksert, typisk med "n", og verdien er relatert til den n'te deriverte av funksjonen som representeres. For enkelhets skyld, bruk 0 for verdien av "a" på ditt første forsøk. Denne spesielle versjonen av Taylor-serien kalles Maclaurin-serien. Prøv sinusfunksjonen, siden dens påfølgende deriverte er enkle å bestemme.

Dagens video

Steg 2

Skriv ned flere verdier av den n-te deriverte av sinusfunksjonen evaluert til 0. Hvis n er 0, er verdien 0. Hvis n er 1, er verdien 1. Hvis n er 2, er verdien 0. Hvis n er 3, er verdien -1. Herfra gjentas mønsteret, så se bort fra alle jevnindekserte ledd i Taylor-serien siden det multipliseres med 0. En formel for hvert ledd i den resulterende serien er:

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

"2n+1" brukes i stedet for "n" for å indeksere serien på nytt, og effektivt forkaste de jevnindekserte termene uten å endre selve indeksen. (-1)^n faktoren står for vekslingen mellom positive og negative av påfølgende ledd. Dette foreløpige matematikkarbeidet kan virke overflødig, men Python-koden vil være mye lettere å skrive og gjenbruke på andre Taylor-serier hvis indeksen alltid starter på 0 og teller oppover i trinn på 1.

Trinn 3

Åpne Python-tolken. Start med å skrive følgende kommandoer for å definere flere variabler:

sum = 0 x = 0,5236

"Sum"-variabelen vil bli brukt til å akkumulere summen av Taylor-serien når hvert ledd beregnes. Variabelen "x" er vinkelen (i radianer) som du vil tilnærme sinusfunksjonen for. Still den til hva du vil.

Trinn 4

Importer "matematikk"-modulen med følgende kommando slik at du har tilgang til funksjonene "pow" og "faktoriell":

importere matematikk

Trinn 5

Start en "for"-løkke, og still inn antall iterasjoner med "range"-funksjonen:

for n i området (4):

Dette vil føre til at indeksvariabelen, n, starter på null og teller opp til 4. Selv dette lille antallet iterasjoner vil gi et overraskende nøyaktig resultat. Sløyfen kjøres ikke umiddelbart og vil ikke begynne før du har spesifisert hele kodeblokken som skal gjentas.

Trinn 6

Skriv inn følgende kommando for å legge til verdien av hvert påfølgende begrep til "sum:"

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

Legg merke til at kommandoen er rykket inn med en tabulator, som indikerer for Python at den er en del av "for"-løkken. Legg også merke til hvordan "pow" og "faktoriell" brukes i stedet for "^" og "!" notasjon. Formelen til høyre for "+=" tildelingsoperatoren er identisk med den i trinn 2, men skrevet i Python-syntaks.

Trinn 7

Trykk "Enter" for å legge til en tom linje. For Python indikerer dette avslutning av "for"-løkken, så beregningen utføres. Skriv inn kommandoen "sum" for å avsløre resultatet. Hvis du brukte verdien av x gitt i trinn 3, er resultatet veldig nær 0,5, sinusen til pi/6. Prøv prosessen på nytt for forskjellige verdier av x og for forskjellige antall iterasjoner av løkken, og kontroller resultatene dine mot "math.sin (x)"-funksjonen. Du har implementert i Python selve prosessen mange datamaskiner bruker for å beregne verdier for sinus og andre transcendentale funksjoner.

Tips

Innrykk og skriv kommandoen "sum" på den andre linjen i "for"-løkken for å få en løpende sum av summen etter hvert som koden kjøres. Dette avslører hvordan hvert påfølgende ledd i serien bringer summen nærmere og nærmere den faktiske verdien av funksjonen.