Du har tidligere laget en funksjon som estimerer kvadratroten til et tall, og som returnerer en liste av alle estimatene. Du vil nå visualisere hvordan estimatene utvikler seg ved plotte dem i en figur.

Lag en funksjon som tar et tall som parameter, og som lager en figur som viser:

  • Verdien av tallet vi vil finne kvadratroten av som en horisontal linje.
  • En linje med de forskjellige kvadratrotestimatene vi får fra vår kvadratrotsfunksjon, med punkt (0, x0), (1, x1), …, (n, xn)

La x-aksen gå fra 0 til n, og y-aksen gå fra 0 til ti prosent mer enn den største y-verdien til linjene.

Utdelt kode

kvadratrot.m
function retur = kvadratrot(tall)
    x = 1;
    er_over_feilgrense = true;
    i = 1;
    N = 4;
    retur = zeros(1, N);
    retur(1) = x;
    while er_over_feilgrense
       ny_x = x + (tall - x^2)/(2*x);
       relativ_endring = abs(ny_x - x)/x;
       er_over_feilgrense = relativ_endring >= 1e-9;
       x = ny_x;
       i = i + 1;
       if i > N
           N = 2*N;
           retur(N) = 0;
       end
       retur(i) = x;
    end
    retur = retur(1:i);
end 

Videoforklaring (17:02) 

Del 1 (6:04)Del 2 (10:58)
Introduksjon og forklaring av oppgaven, og start på løsningsfunksjon (ingen plotting).Matlab-kode for å konstruere figuren.


Løsningsforslag

plott_kvadratrotestimat.m
function plott_kvadratrotestimat(tall)
    estimat = kvadratrot(tall);
    n = length(estimat) - 1;
    plot([0, n], [tall, tall], 0:n, estimat);
    y_max_1 = tall;
    y_max_2 = max(estimat);
    y_max = max(y_max_1, y_max_2);
    axis([0, n, 0, 1.1*y_max]);
end 
  • No labels