11 svar
111 visningar
Bnim 12
Postad: 17 dec 2020

While-loop taylorpolynom

Jag ska beräkna ett approximativt värde på ln3 genom taylorserien av ln x kring x = 1 och addera alla termer vars absolutbelopp är större än 10^-8

 

ln x =  (x-1) - (x-1)^2 /2 + (x-1)^3/3....

Det jag har till hjälp är denna kod: 

tol=1e-8; s=0; i=0;
term=;
while abs(term) > tol
s=s+term;
i=i+1;
term=...;
end

Jag förstår mig inte riktigt på hur jag ska gå vidare, har googlat runt efter liknande problem utan lycka då alla använder syms. Skulle uppskatta lite vägledning

Hondel 344 – Mattecentrum-volontär
Postad: 17 dec 2020 Redigerad: 17 dec 2020

Vi kan se ett mönster i varje term. Taylorserien är:

i=0(x-1)ii\sum_{i=0}^\infty \frac{(x-1)^i}{i}

I ditt fall är x=3. Kan du se hur detta kan stoppas in i koden?

Bnim 12
Postad: 18 dec 2020
Hondel skrev:

Vi kan se ett mönster i varje term. Taylorserien är:

i=0(x-1)ii\sum_{i=0}^\infty \frac{(x-1)^i}{i}

I ditt fall är x=3. Kan du se hur detta kan stoppas in i koden?

Jag tänkte mig att sätta term = (x-1)^i/i men får inte ut något resultat

Albiki 5320
Postad: 18 dec 2020 Redigerad: 18 dec 2020

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Laguna Online 12476
Postad: 18 dec 2020

Betyder term=; att term blir 1?

Albiki 5320
Postad: 18 dec 2020 Redigerad: 18 dec 2020
Laguna skrev:

Betyder term=; att term blir 1?

Det betyder att studenten ska fylla i den kod som fattas efter = tecknet. Koden avslutas med semikolon för att undvika visning.

Bnim 12
Postad: 18 dec 2020
Albiki skrev:

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Så  innan while-loopen ska term=1? 

Bnim skrev:
Albiki skrev:

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Så  innan while-loopen ska term=1? 

Nej, eftersom första raden i loopen är s+term så måste du ha term=första termen i summan utanför loopen. 

Bnim 12
Postad: 18 dec 2020 Redigerad: 18 dec 2020
Hondel skrev:
Bnim skrev:
Albiki skrev:

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Så  innan while-loopen ska term=1? 

Nej, eftersom första raden i loopen är s+term så måste du ha term=första termen i summan utanför loopen. 

Så innan loopen är term= (x-1) och inom loopen ska term=serien? Kan vara värt att tillägga att x = 1/3

Albiki 5320
Postad: 18 dec 2020 Redigerad: 18 dec 2020
Bnim skrev:
Albiki skrev:

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Så  innan while-loopen ska term=1? 

Korrigering: Innan snurran ska term vara 2 och inte 1 som jag skrev tidigare.

Bnim 12
Postad: 18 dec 2020
Albiki skrev:
Bnim skrev:
Albiki skrev:

Hej,

Det som i koden betecknas ss är partialsummor till ln3\ln 3.

    Si=Si-1+2ii.\displaystyle S_i = S_{i-1}+\frac{2^i}{i}.

och det som betecknas termterm är

    2ii\displaystyle\frac{2^{i}}{i}

och denna term uppdateras för varje steg hos while-snurran.

Innan snurran startar är term lika med 11 och eftersom abs(1)>10-8\text{abs}(1) > 10^{-8} kommer snurran att starta.

Så  innan while-loopen ska term=1? 

Korrigering: Innan snurran ska term vara 2 och inte 1 som jag skrev tidigare.

Det som ska sättas in är x = 1/3 så term = (1/3-1). Men då är problemet i loopen, har prövat sätta term=serien men utan någon lycka. Term = 2^i / i ger ingenting. 

Albiki 5320
Postad: 18 dec 2020

Om x=3 så kommer snurran aldrig att stanna eftersom (-2)i/i(-2)^{i}/i divergerar. Det är därför man sätter x=1/3x=1/3 istället och i slutsteget använder att ln1/3=-ln3\ln 1/3 = -\ln 3 för att få den sökta approximationen till ln3\ln 3.

Sätt i=1 istället för i=0 och term till 1/3-1 utanför snurran och term till (-1)i+1·(1/3-1)i/i(-1)^{i+1}\cdot(1/3-1)^{i}/i innanför snurran så går det nog bra.

Svara Avbryt
Close