Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titlekarakterer.m
function retur = karakterer(poengsummer)
    retur = blanks(length(poengsummer));
    for i = 1:length(retur)
        poeng = poengsummer(i);
        if poeng >= 89
            retur(i) = 'A';
        elseif poeng >= 77
            retur(i) = 'B';
        elseif poeng >= 65
            retur(i) = 'C';
        elseif poeng >= 53
            retur(i) = 'D';
        elseif poeng >= 41
            retur(i) = 'E';
        else
            retur(i) = 'F';
        end
    end
end 

Oppgave 5.2.3: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

I en tidligere oppgave lagde du en funksjon som estimerte hva kvadratroten av et tall var, ved å bruke iterasjoner av Newtons metode. Du har nå lyst til å analysere hvordan estimatene utvikler seg. I stedet for å skrive ut estimatene, har du lyst til å returnere dem i en vektor. Oppdater funksjonen til å fungere slik i stedet.

Utdelt kode

Expand
titlekvadratrot.m
Code Block
titlekvadratrot.m
function retur = kvadratrot(tall)
    x = 1;
    er_over_feilgrense = true;
    i = 1;
    while er_over_feilgrense
       ny_x = x + (tall - x^2)/(2*x);
       fprintf('Iterasjon #%d: x_%d = %.10f, x_%d = %.10f\n', i, i-1, x, i, ny_x);
       relativ_endring = abs(ny_x - x)/x;
       er_over_feilgrense = relativ_endring >= 1e-9;
       x = ny_x;
       i = i + 1;
    end
    retur = x;
end 

Videoforklaring (mm:ss)

Del 1 (mm:ss)Del 2 (mm:ss)Del 3 (mm:ss)
   

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titlekvadratrot.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 
Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
 

Oppgave 5.2.4: Tittel

 

Utdelt kode

...