opgaver:Uge3

(Difference between revisions)
Jump to: navigation, search
Line 69: Line 69:
 
og så får man figuren til højre. Den reducerede $\chi^2$ findes til sidst med koden
 
og så får man figuren til højre. Den reducerede $\chi^2$ findes til sidst med koden
  
:<code>chi2 = sum((y-y_fit).^2 ./ sigma_y.^2);</code>
+
:<code>chi2 = sum((y-y_fit).^2 ./ (sigma*ones(size(y)).^2);</code>
 
:<code>chi2red = chi2/(N-2);</code>
 
:<code>chi2red = chi2/(N-2);</code>
 
{{hidden end}}
 
{{hidden end}}
Line 79: Line 79:
 
{{hidden end}}
 
{{hidden end}}
 
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
 
{{hidden begin|toggle=right|title=Løsning|titlestyle=background:#ccccff|bg2=#eeeeee}}
Man kan genbruge al sin kode fra spørgsmål a til at lave sit loop. Definitionen af <code>A_model</code>, <code>B_model</code>, <code>sigma</code>, <code>x</code>, <code>y_model</code> og <code>sigma_y</code> får lov til at blive, og så skal man forberede sit loop med antal gange man vil køre det, og tre lister til at gemme de resultater man får,
+
Man kan genbruge al sin kode fra spørgsmål a til at lave sit loop. Definitionen af <code>A_model</code>, <code>B_model</code>, <code>sigma</code>, <code>x</code> og <code>y_model</code> får lov til at blive, og så skal man forberede sit loop med antal gange man vil køre det, og tre lister til at gemme de resultater man får,
  
 
:<code>N_iter = 100;</code>
 
:<code>N_iter = 100;</code>
Line 89: Line 89:
  
 
:<code>for i = 1:N_iter</code>
 
:<code>for i = 1:N_iter</code>
::<code>y = y_model + sigma_y.*randn(size(y_model));</code>
+
::<code>y = y_model + sigma*randn(size(y_model));</code>
 
::<code>...</code>
 
::<code>...</code>
  
Line 114: Line 114:
  
 
:<code>figure</code>
 
:<code>figure</code>
:<code>errorbar(x,y,sigma_y,'ro')</code>
+
:<code>errorbar(x,y,sigma*ones(size(y),'ro')</code>
 
:<code>hold on</code>
 
:<code>hold on</code>
 
:<code>plot(x,y_model,'b-')</code>
 
:<code>plot(x,y_model,'b-')</code>

Revision as of 01:56, 5 May 2013

I denne opgave skal I arbejde med fitning som forklaret i Barlow kapitel 6. I skal her selv lave et datasæt, og lærer derfor også hvordan man genererer tilfældige tal i MATLAB. Opgave 2 og 3 er uafhængige, og kan laves i den rækkefølge I har lyst til.


Contents

Opgave 1 - Fitning

Spørgsmål 1 - Lineær model

Antag at I har en lineær model som i Barlow afsnit 6.2,

$y = A + B x .$

Vælg passende værdier af A og B og lav en vektor x med målepunkter, f.eks. A = 0, B = 1, x = -2:0.1:2. Lav nu en vektor med den "sande" y ud fra modellen. Vælg en usikkerhed for målingerne, og læg en normalfordelt støj til hver måling - brug MATLAB funktionen randn(). Plot målingerne (med usikkerhederne) og den "sande" model i samme plot.

Beregn lineær regression ud fra Barlow og find de estimerede værdier for A og B, og beregn den fittede modelværdi, y_fit. Plot y_fit oveni det forrige plot og se hvor godt fittet er. Beregn den reducerede $\chi^2$, givet ved

$\dfrac{\chi^2}{N-P} ,$

hvor $N$ er antal datapunkter og $P$ er antal fit-parametre.

Spørgsmål 2 - Gentagelse

Gentag dette "numeriske forsøg" et antal gange (f.eks. 100) og gem for hver gang fittets parametre. Brug hist() til at finde fordelingen af A, B, og reduceret $\chi^2$. Sammenlign med den estimerede usikkerhed på A og B, og undersøg evt. korrelationen mellem A og B (plot f.eks. A vs. B).

Spørgsmål 3 - Automatisk fitning i MATLAB

Prøv at anvende MATLABs fittefunktion fit(x,y,'funktion') og sammenlign med jeres egen lineære regression.


Samlede løsninger

  • Et samlet dokument med MATLAB kode til at løse alle opgaverne ovenfor kan hentes her: opgaver_uge3_fits.m


Personal tools
Namespaces
Variants
Actions
Navigation
Opgaver
Andet
Toolbox
Commercial