Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Lag et script som genererer 10000 tilfeldige tippekuponger og resultat, for hver av dem regner ut hvor mange korrekte gjetninger det var i kupongen, og som til slutt lager et histogram som viser fordelingen av antall korrekte resultat i tippekupongene.

Utdelt kode

Expand
titlekvadratrot.m
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 

 

Videoforklaring (

...

12:

...

06)

Del 1 (57:3418)Del 2 (54:20)48)
Widget Connector
urlhttps://www.youtube.com/watch?v=LH_z3A7_gyI
Widget Connector
urlhttps://www.youtube.com/watch?v=d3vJlh5Cx9Y
  
Oppgaveintroduksjon, og problemoppdeling.skriving av funksjon som bruker funksjonsvariabler.Bruk av generisk funksjon vha anonyme funksjoner og andre funksjonsvariabler.Hvordan generere en tilfeldig kupong.

 

Løsningsforslag

Expand
titleHvis du har prøvd selv, trykk her for å se svaret...
Code Block
titlelagfinn_tilfeldig_kupongnullpunkt.m
function retur = lagfinn_tilfeldig_kupong(nullpunkt(f, df)
    returx = false(12, 3) 1;
    er_over_feilgrense = true;
    for i = 1:12;
    N = 4;
    tilfeldig_kolonneretur = randi(3)zeros(1, N);
    retur(1) = x;
    while er_over_feilgrense
      retur(i, tilfeldigny_kolonne)x = truex - f(x)/df(x);
    end
end
Code Block
titlelag_kupong_histogram.m
treff   relativ_endring = zeros(1, 10000);
for i = 1:10000abs(ny_x - x)/abs(x);
       er_over_feilgrense = relativ_endring >= 1e-9;
    kupong   x = lag_tilfeldig_kupong()ny_x;
       fasiti = lag_tilfeldig_kupong();
 i + 1;
       if i > N
         [~, ~, antall_treff] N = analyser_tippekupong(kupong, fasit)2*N;
           retur(N) = 0;
    treff   end
       retur(i) = antall_treffx;
    end
    retur = retur(1:i);
end
Code Block
titlekvadratrot.m
function retur = kvadratrot(tall)
    f = @(x) tall - x^2;
    df = @(x) -2*x;
    estimat = finn_nullpunkt(f, df);
    retur = estimat(end);
end histogram(treff);
% Man kan lage et histogram hvor y-aksen er prosentandel og ikke antall ved å kalle histogram slik:
% histogram(treff, 'Normalization', 'probability');