LØSNINGSFORSLAG TIL - NTNU
LØSNINGSFORSLAG TIL - NTNU
LØSNINGSFORSLAG TIL - NTNU
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Oppgave 4 – Matlab (35 %)<br />
a) Forslag til løsning. Her er ikke kommentarene og testprogrammet nederst nødvendige; bare metoden.<br />
function svar = godkjent(tabell)<br />
%sum6forste skal inneholde hvor mange av de 6 første som er godkjent<br />
sum6forste = 0;<br />
for i= 1:6<br />
%legger til celleverdien til hver av de 6 første cellene<br />
%i tabellen (da disse er 1 eller 0 - og 1 hvis godkjent)<br />
sum6forste = sum6forste + tabell(i);<br />
end<br />
%sum6forste skal inneholde hvor mange av de 6 siste som er godkjent<br />
sum6siste = 0;<br />
for i= 7:12<br />
sum6siste = sum6siste + tabell(i);<br />
end<br />
//svaret 1 (sann) skal returneres hvis:<br />
// 5 godkjent blant de 6 første øvingene &&<br />
// 4 godkjent blant de 6 siste &&<br />
// enten øving 11 || øving 12 er godkjent<br />
svar = sum6forste>=5 & sum6siste>=4 & (tabell(11) | tabell(12));<br />
return<br />
Side 3 av 4<br />
b) Tilsvarende her. Bare koden er nødvendig for godkjent, ikke kommentarer. Her var ikke tanken å gjøre det så<br />
veldig komplisert, men rundturen på eksamen viste at mange forskjellige brukbare løsninger kan vurderes som<br />
godkjent. Noe som bør vurderes er om det som presenteres er et rimelig ”kjørbart” matlab-program. Tre forslag<br />
til godkjent løsning er gitt under:<br />
Enkleste løsning:<br />
% Oppgaven sa:<br />
% - tre tabeller skulle finnes på<br />
% - tabellene skulle skrives ut<br />
% - funksjonen godkjent skulle kalles<br />
% - resultatet av funksjonskalles skulle presenteres<br />
tab1 = [1 1 0 1 1 1 1 1 1 0 0 1]<br />
godkjent(tab1)<br />
tab2 = [1 1 0 0 1 1 1 1 1 0 0 1]<br />
godkjent(tab2)<br />
tab3 = [1 1 0 1 1 1 1 1 1 0 1 1]<br />
godkjent(tab3)<br />
Ved å ta inn tabellene fra brukeren vha. input():<br />
tab1 = input('Skriv inn tabell 1: ');<br />
godkjent(tab1)<br />
tab2 = input('Skriv inn tabell 2: ');<br />
godkjent(tab2)<br />
tab2 = input('Skriv inn tabell 3: ');<br />
godkjent(tab2)<br />
Litt mer omstendelig:<br />
tab1 = [1 1 0 1 1 1 1 1 1 0 0 1]<br />
if(godkjent(tab1))<br />
disp('tab1 var godkjent')<br />
else<br />
disp('tab1 var ikke godkjent')<br />
end<br />
tab2 = [1 1 0 0 1 1 1 1 1 0 0 1]<br />
if(godkjent(tab2))<br />
disp('tab2 var godkjent')<br />
else<br />
disp('tab2 var ikke godkjent')<br />
end<br />
tab3 = [1 1 0 1 1 1 1 1 1 0 1 1]<br />
if(godkjent(tab3))<br />
disp('tab3 var godkjent')<br />
else<br />
disp('tab3 var ikke godkjent')<br />
end<br />
Side 4 av 4<br />
c) Utfordringen her var vel å beherske programmering nok til å kunne benytte den på en litt vanskelig (?)<br />
matematisk beregning. Her bør en løkkestruktur benyttes for å beregne de enkelte y-verdier da de er såpass<br />
mange. Det var ingen krav om å enkelt kunne endre hvilken funksjon integralet beregner; heller ikke å enkelt<br />
kunne endre x-intervallet eller n-verdien, men man blir selvsagt ikke trukket hvis noe slikt er tatt hensyn til i<br />
programmet.<br />
Det vi ønsker å skrive program for å beregne her er følgende:<br />
2<br />
0,<br />
1<br />
∫ sin( x ) ≈T10<br />
= sin( 1)<br />
+ 2 ⋅ sin( 1.<br />
1)<br />
+ 2 ⋅ sin( 1.<br />
2)<br />
+ ... + 2 ⋅ sin( 1.<br />
8)<br />
+ 2 ⋅ sin( 1.<br />
9)<br />
+ sin( 2)<br />
1<br />
2<br />
hvilket i programmet mer beregnes i følgende rekkefølge (som jo gir samme svar):<br />
⎛ sin( 1)<br />
sin( 2)<br />
⎞<br />
T 10 = ⎜ + sin( 1.<br />
1)<br />
+ sin( 1.<br />
2)<br />
+ ... + sin( 1.<br />
8)<br />
+ sin( 1.<br />
9)<br />
+ ⎟ ⋅ 0,<br />
1<br />
⎝ 2<br />
2 ⎠<br />
( )<br />
Forslag til program:<br />
n = 10;<br />
xstart = 1;<br />
xslutt = 2;<br />
deltaX = (xslutt-xstart)/n; %kan settes til 0.1 direkte<br />
%først legges y0-verdien (i startpunktet xstart) til integralet<br />
integral = sin(xstart)/2;<br />
%for alle y-verdier fra y1 til yn-1 gjør følgende<br />
for i = xstart+deltaX : deltaX : xslutt-deltaX<br />
%legg til sinus til i-verdien<br />
integral = integral + sin(i);<br />
end<br />
%til slutt legges yn-verdien (i sluttpunktet xslutt) til<br />
integral = integral + sin(xslutt)/2;<br />
%ganger med deltaX fordi formelen sier så:)<br />
integral = integral*deltaX;<br />
disp(['Numerisk beregnet integral for sinus(x) mellom 1 og 2 med n=10 er '<br />
num2str(integral)])