Skip to end of metadata
Go to start of metadata

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
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

 Hvis du har prøvd selv, trykk her for å se svaret...
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