Sådan skriver du en Taylor-serie i Python

En Taylor-række er en repræsentation af en funktion ved hjælp af en uendelig sum. Computere foretager ofte tilnærmelser af værdierne af en trigonometrisk, eksponentiel eller anden transcendental funktion ved at summere et endeligt antal af vilkårene i dens Taylor-serie, og du kan genskabe denne proces i Python. Betingelserne for summen er baseret på successive afledninger af funktionen, så du bliver nødt til at identificere et mønster i værdierne af disse afledte for at skrive en formel for hvert led i serien. Brug derefter en løkke til at akkumulere summen, og kontroller nøjagtigheden af ​​din tilnærmelse med antallet af iterationer af løkken.

Trin 1

Se definitionen af ​​Taylor-serien for at forstå, hvordan hvert udtryk kan beregnes. Hvert led i serien er indekseret, typisk med "n", og dets værdi er relateret til den n'te afledede af den funktion, der repræsenteres. For nemheds skyld, brug 0 for værdien af ​​"a" på dit første forsøg. Denne specielle version af Taylor-serien kaldes Maclaurin-serien. Prøv sinusfunktionen, da dens på hinanden følgende afledede er nemme at bestemme.

Dagens video

Trin 2

Skriv flere værdier af den n'te afledede af sinusfunktionen vurderet til 0. Hvis n er 0, er værdien 0. Hvis n er 1, er værdien 1. Hvis n er 2, er værdien 0. Hvis n er 3, er værdien -1. Herfra gentages mønsteret, så se bort fra hvert lige-indekseret led i Taylor-serien, da det er ganget med 0. En formel for hvert led i den resulterende serie er:

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

"2n+1" bruges i stedet for "n" til at genindeksere serien, hvilket effektivt kasserer de lige indekserede termer uden at ændre selve indekset. (-1)^n faktoren tegner sig for vekslen mellem positive og negative af på hinanden følgende led. Dette foreløbige matematikarbejde kan virke fremmed, men Python-koden vil være langt nemmere at skrive og genbruge på andre Taylor-serier, hvis indekset altid starter ved 0 og tæller opad i intervaller på 1.

Trin 3

Åbn Python-fortolkeren. Start med at skrive følgende kommandoer for at definere flere variable:

sum = 0 x = 0,5236

"Sum"-variablen vil blive brugt til at akkumulere summen af ​​Taylor-serien, når hvert led beregnes. Variablen "x" er den vinkel (i radianer), som du vil tilnærme sinusfunktionen for. Indstil det til hvad du kan lide.

Trin 4

Importer "matematik"-modulet med følgende kommando, så du har adgang til funktionerne "pow" og "faktorielle":

importere matematik

Trin 5

Start en "for" loop, indstil antallet af iterationer med "range"-funktionen:

for n i området (4):

Dette vil få indeksvariablen, n, til at starte ved nul og tælle op til 4. Selv dette lille antal iterationer vil give et overraskende nøjagtigt resultat. Sløjfen udføres ikke med det samme og vil ikke begynde, før du har specificeret hele kodeblokken, der skal gentages.

Trin 6

Indtast følgende kommando for at tilføje værdien af ​​hvert efterfølgende udtryk til "sum:"

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

Bemærk, at kommandoen er indrykket med en fane, som indikerer for Python, at den er en del af "for"-løkken. Bemærk også, hvordan "pow" og "faktoriel" bruges i stedet for "^" og "!" notation. Formlen til højre for "+="-tildelingsoperatoren er identisk med den i trin 2, men skrevet i Python-syntaks.

Trin 7

Tryk på "Enter" for at tilføje en tom linje. For Python indikerer dette afslutning af "for"-løkken, så beregningen udføres. Skriv kommandoen "sum" for at afsløre resultatet. Hvis du brugte værdien af ​​x givet i trin 3, er resultatet meget tæt på 0,5, sinus af pi/6. Prøv processen igen for forskellige værdier af x og for forskellige antal iterationer af løkken, og kontroller dine resultater mod funktionen "math.sin (x)". Du har implementeret i Python den proces, som mange computere bruger til at beregne værdier for sinus og andre transcendentale funktioner.

Tip

Indryk og skriv kommandoen "sum" på den anden linje i "for"-løkken for at få en løbende sum af summen, mens koden udføres. Dette afslører, hvordan hvert efterfølgende led i serien bringer summen tættere og tættere på den faktiske værdi af funktionen.