7 svar
192 visningar
Moni1 721
Postad: 13 mar 2021 18:09

Iterationsformel

Hej, jag undrar på hur ska jag definiera xk+1 i matlab, sedan undrar jag på om min while loop är riktigt eller inte 

x0=5; xk=1/2*(xk-1+(5/(xk-1)); xk+1=

While abs(xk+1 - xk) > 10^(-10)
     
       xk+1 = xk+1 +1
end 
Dr. G 9316
Postad: 13 mar 2021 21:14

En variant som sparar de itererade värdena och skriver ut dem på slutet. Om du inte skriver "format long" så får du inte tillräckligt med decimaler för att se att det verkligen konvergerar. 

format long;
x0 = 2.5;
x1 = .5*(x0 + 5/x0);
x = [x0; x1];
while abs(x1 - x0) > 1e-10
    x0 = x1;
    x1 = .5*(x0 + 5/x0);
    x = [x; x1];
end
disp(x)
disp(x.^2)
Moni1 721
Postad: 14 mar 2021 08:47

hej, igen, men skulle inte x0 vara lik 5

Moni1 721
Postad: 14 mar 2021 08:56
  x = [x; x1];

och betyder denna rad, att vi ska sätte resultatet vi får i en matris. 

Dr. G 9316
Postad: 14 mar 2021 09:12
x1 = .5*(x0 + C/x0);

Med ovanstående i iterationen så fås ett närmevärde till √C. Sätt C = 5. 

Det första värdet på x0 är en startgissning. Prova några olika. 

x = [x; x1];

Jag lägger till det senaste värdet på x1 till kolumnvektorn x.  Det är inte nödvändigt, men efter while-loopen så innehåller x alla framitererade värden.

Moni1 721
Postad: 14 mar 2021 10:07

tack så mycket, nu förstår jag bättre.

Laguna 28443
Postad: 14 mar 2021 12:07

En kommentar om din ursprungliga kod.

Du hade t.ex.
    xk+1 - xk

Det var tänkt att betyda xk+1 - xk, men matlab kan inte veta vad som är tänkt att vara index. I stället tolkas xk som en enda variabel. +1 sedan hör däremot inte till variabeln utan är en vanlig addition. Det hela blir därför 1.

Om man har en vektor x och vill ta fram xk så skriver man x(k) i matlab. Man skriver på andra sätt i andra programmeringsspråk. Om du hade en vektor x så hade x(k+1)-x(k) varit rätt.

Här behöver vi inte hålla reda på alla x-värden utan det räcker med det just beräknade och det förra, och då behövs ingen vektor utan bara två variabler, som vi kan kalla vad vi vill. Dr. G. har valt att kalla dem x1 och x0. Det kan ingå siffror i ett variabelnamn.

Moni1 721
Postad: 14 mar 2021 12:14

tack så mycket, det var till stor hjälp

Svara Avbryt
Close