Hvordan skrive en Taylor-serien i Python

En Taylor-serien er en representasjon av en funksjon ved hjelp av en uendelig sum. Datamaskiner ofte gjør tilnærmelser av verdier på et trigonometrisk, eksponentiell eller annen transcendent funksjon ved å summere et endelig antall av vilkårene i sin Taylor-serien, og du kan gjenskape denne prosessen i Python. Vilkårene for summen er basert på suksessive derivater av funksjonen, slik at du må identifisere et mønster i verdiene av disse derivater for å skrive en formel for hvert ledd i serien. Deretter bruker du en løkke til å akkumulere summen, kontrollere nøyaktigheten av tilnærming med antall gjentakelser av loopen.

Bruksanvisning

1 Rådfør definisjonen av Taylor serien for å forstå hvordan hvert semester kan beregnes. Hver term av serien er indeksert, vanligvis ved "n", og dens verdi er knyttet til n-te deriverte av funksjonen er representert. For enkelhets skyld, bruker du 0 for verdien av "a" på første forsøk. Denne spesielle versjonen av Taylor-rekke kalles Maclaurin serien. Prøv sinusfunksjonen, siden den påfølgende derivater er lett å avgjøre.

2 Skrive ned flere verdier av n-te deriverte av sinusfunksjonen evalueres på 0. Hvis n er 0, er den verdien 0. Hvis n er 1, verdien er 1. Hvis n er 2, er verdien 0. Hvis n er 3 er verdien -1. Herfra mønsteret gjentar seg, så se bort fra alle selv-indekserte begrepet av Taylor-serien siden det er multiplisert med 0. En formel for hvert ledd i den resulterende serien er:

(-1) ^ N / (2n + 1)! * X ^ (2n + 1)

"2n + 1" blir brukt i stedet for "n" til å re-indeks serien, effektivt å forkaste de selv-indekserte betingelser uten å endre indeks selv. The (-1) ^ n faktor regnskap for veksling mellom positive og negative påfølgende vilkår. Denne foreløpige matte arbeid kan virke overflødig, men Python koden vil være langt enklere å skrive og bruke på andre Taylor-serien hvis indeksen alltid starter på 0 og teller oppover i trinn på 1.

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

sum = 0

x = 0,5236

Den "sum" variable blir benyttet for å akkumulere summen av Taylor-rekken som hver term blir beregnet. Variabelen "x" er vinkelen (i radianer) som du ønsker å tilnærme sinusfunksjonen. Sett den til hva du vil.

4 Importer "matematikk" modul med følgende kommando slik at du har tilgang til "pow" og "faktorielle" funksjoner:

import math

5 Start en "for" loop, sette antall gjentakelser med "range" funksjon:

for n innenfor rekkevidde (4):

Dette vil føre til at indeksen variabel, n, til å begynne ved null og teller opp til 4. Selv denne lille antall iterasjoner vil gi en overraskende nøyaktig resultat. Sløyfen utføres ikke umiddelbart, og vil ikke begynne før du har angitt hele blokken med kode for å iterere over.

6 Skriv inn følgende kommando for å legge verdien av hver påfølgende begrepet til «sum:"

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

Legg merke til at kommandoen er innskåret med en fane, som viser til Python at det er en del av "for" loop. Legg også merke til hvordan "pulver" og "faktoriell" brukes i stedet for "^" og "!" notasjon. Formelen til høyre for «+ =" tildeling operatoren er identisk med den i trinn 2, men skrevet i Python syntaks.

7 Trykk "Enter" for å legge til en tom linje. For å Python, indikerer dette oppsigelse av "for" loop, slik at beregningen blir utført. Skriv inn kommandoen "sum" for å avsløre resultatet. Hvis man brukte verdien av x som er gitt i trinn 3, er resultatet meget nær 0,5, sinus av pi / 6. Prøv prosessen på nytt for ulike verdier av x og for forskjellige antall gjentakelser av løkken, sjekke dine resultater mot de "tak i Math.sin (x)" -funksjonen. Du har implementert i Python selve prosessen mange datamaskiner bruker til å beregne verdier for sinus og andre transcendentale funksjoner.

Hint

  • Innrykk og skriv kommandoen "sum" på den andre linjen av "for" loop for å få en løpende total av summen som koden utfører. Dette avslører hvordan hver påfølgende sikt av serien bringer summen nærmere og nærmere den faktiske verdien av funksjonen.