Skip to end of metadata
Go to start of metadata

Du stoler ikke på at Matlabs innebygde funksjon sqrt er effektiv nok, og har funnet ut at du vil lage din egen. Du har innsett at siden \( rot^2 = tall \Rightarrow tall - rot^2 = 0 \) , blir det å finne kvadratroten til et tall det samme som å finne nullpunktet til funksjonen \( f(rot) = tall - rot^2 \)  . Du har lært en metode for å finne nullpunkt, kalt Newtons metode, som fungerer slik:

  1.  Velg et første estimat for nullpunkt, \( x_0 \) , for funksjonen \( f(x) \) .

  2. Regn ut videre estimat for nullpunkt med formelen \( x_{i+1} = x_i - \frac{f(x_i)}{f'(x_i)} \)

(I vårt tilfelle er \( f'(x) = 2x \) ).

Lag en funksjon som estimerer roten til et tall. Bruk 20 iterasjoner av Newtons metode, og \( x_0 = 1 \) . Sammenlign estimatene for kvadratroten av 4, 97 og 1e18 med estimatene fra sqrt.

Videoforklaring (9:02)

Løsningsforslag

 Hvis du har prøvd selv, trykk her for å se svaret...
kvadratrot.m
function retur = kvadratrot(tall)
    x = 1;
    for i = 1:20
       x = x + (tall - x^2)/(2*x);
    end
    retur = x;
end
  • No labels