You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Kodeforståelsesoppgaver

Oppgave 4.1.1: Fprintf datatyper

Hva skrives ut hvis vi kjører dette scriptet?

oppgave_1.m
fprintf('Heltallet er %d\n', 1);
fprintf('Desimaltallet er %f\n', 2.5);
fprintf('Bokstaven er %c\n', 'a');
fprintf('Strengen er %s\n', 'hei');
fprintf('%d\n', 'a');
fprintf('%c\n', 97);
fprintf('\nHan sa:\n\t''Vi må gi 100 %%!''\n');

Videoforklaring (mm:ss)

 

Svar

Heltallet er 1
Desimaltallet er 2.500000
Bokstaven er a
Strengen er hei
97
a
Han sa:
	'Vi må gi 100 %!'

Oppgave 4.1.2: Fprintf utskriftsformattering

Hva skrives ut hvis vi kjører dette scriptet?

oppgave_2
fprintf('%3d,', 1);
fprintf('%03d,', 1);
fprintf('%-3d,', 1);
fprintf('%-03d!\n', 1);
fprintf('%.2f,', 2.524);
fprintf('%6.2f,', 2.524);
fprintf('%06.2f,', 2.524);
fprintf('%-6.2f,', 2.524);
fprintf('%-06.2f!\n', 2.524);
fprintf('%5s,', 'hei');
fprintf('%05s,', 'hei');
fprintf('%-5s,', 'hei');
fprintf('%-05s!\n', 'hei');

Videoforklaring (mm:ss)

Svar

  1,001,1  ,1  !
2.52,  2.52,002.52,2.52  ,2.52  !
  hei,00hei,hei  ,hei00!

Oppgave 4.1.3: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Oppgave 4.1.4: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Oppgave 4.1.5: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Oppgave 4.1.6: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Oppgave x.y.z: Tittel

Oppgavetekst

 

Videoforklaring (mm:ss)

Svar

 

Kodeoppgaver

Oppgave 4.2.1: Penere Fahrenheit-utskrift

Fahrenheit-oversikten forteller oss ikke hvilken Celsius verdi de utskrevne Fahrenheit-verdiene tilsvarer. Utvid scriptet til å skrive ut en mer informativ linje som forklarer hvilken Celsius-verdi Fahrenheit-verdien tilsvarer.

Utdelt kode

fahrenheit.m

Videoforklaring (mm:ss)

Løsningsforslag

fahrenheit.m
svar = input('Ønsker du å skrive inn egne Celsius-verdier? (ja/nei) ', 's');
if strcmp(svar, 'ja')
    antall = input('Hvor mange verdier? ');
    for i = 1:antall
        celsius = input('Skriv inn Celsius-verdi: ');
        skriv_ut_fahr(celsius);
    end
else
    skriv_ut_fahr(-20);
    skriv_ut_fahr(0);
    skriv_ut_fahr(18);
    skriv_ut_fahr(37);
    skriv_ut_fahr(100);
end
skriv_ut_fahr
function skriv_ut_fahr(celsius)
    fahr = cels2fahr(celsius);
    fprintf('Celsiusverdi %.2f tilsvarer Fahrenheitverdi %.2f\n', celsius, fahr);
end

 

 

Oppgave 4.2.2: Kvadratrotestimat

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 , blir det å finne kvadratroten til et tall det samme som å finne nullpunktet til funksjonen  . Du har lært en metode for å finne nullpunkt, kalt Newtons metode, som fungerer slik:

  1.  Velg et første estimat for nullpunkt, , for funksjonen .

  2. Regn ut videre estimat for nullpunkt med formelen

(I vårt tilfelle er ).

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

Videoforklaring (mm:ss)

Løsningsforslag

kvadratrot.m
function retur = kvadratrot(tall)
    x = 1;
    for i = 1:20
       x = x + (tall - x^2)/(2*x);
    end
    retur = x;
end

Oppgave 4.2.3: Utskrift av progresjon i kvadratrotestimat

Du har nettopp laget en funksjon som estimerer kvadratroten til et tall, ved hjelp av 20 iterasjoner av Newtons metode. Du ønsker nå å vite hvordan utviklingen av estimatene er i hver iterasjon. Utvid funksjonen til å produsere utskrift som det følgende i hver iterasjon:

Utdelt kode

kvadratrot.m

Videoforklaring (mm:ss)

Løsningsforslag

kvadratrot.m
function retur = kvadratrot(tall)
    x = 1;
    for i = 1:20
       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);
       x = ny_x;
    end
    retur = x;
end

Oppgave 4.2.4: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 4.2.5: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave 4.2.6: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

Oppgave x.y.z: Tittel

 

Utdelt kode

Videoforklaring (mm:ss)

Løsningsforslag

 

  • No labels