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
Expand |
---|
|
Code Block |
---|
| 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) |
---|
Widget Connector |
---|
url | https://www.youtube.com/watch?v=CWZtCGKaVrc |
---|
|
| Widget Connector |
---|
url | https://www.youtube.com/watch?v=lBZZmUUXu0w |
---|
|
|
Introduksjon og forklaring av oppgaven, og start på løsningsfunksjon (ingen plotting). | Matlab-kode for å konstruere figuren. |
Løsningsforslag
Expand |
---|
title | Hvis du har prøvd selv, trykk her for å se svaret... |
---|
|
Code Block |
---|
title | 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 |
|