Simpsons regel för att uppskatta intergraler
function integral=simpson(f,a,b,N)
%Där funktion är den funktionen som ska integreras, a och b är
%integrationsgränser och N är antalet integreringspunkter
h=(b-a)/N; %Intervalllängden beräknas
fa=exp(-a^2); %startvärde
fb=exp(-b^2);%stopvärde
ffU=0;
for i=2:2:N
x=(a+(i-1)*h);
fUdda=exp(-x^2);
ffU=ffU+fUdda;
end
ffJ=0;
for i=3:2:N
x=(a+(i-1)*h);
fJamn=exp(-x^2);
ffJ=ffJ+fJamn;
end
resultat=((h/3)*(fa+fb+4*ffU+2*ffJ));
disp(resultat)
end
Ska skriva en matlab kod där man använder simpsonsregel för att uppskatta en intergral. Jag får inga error meddelanden när jag kör koden men däremot är svaret helt fel. Någon som kan se vad jag gjort för fel? Har testat med bland annat
simpson(@sin,0,pi/2,211)
men då får jag bara svaret 0.862..osv.
Det kanske är jag som tänker fel, men formeln för Simpsons verkar inte helt rätt? Det ska väl vara
?
Det var dock länge sedan jag arbetade med simpsons, så det kan vara jag som är ute och cyklar. 😅
hm, funderar på att skrota min kaoskod.
Jag testade att använda koden som är längst ner på wikipedia sidan https://sv.wikipedia.org/wiki/Simpsons_regel och jag fick ett rimligt svar (0,99...) däremot frågar man wolframalpha så är svaret 0.000003 https://www.wolframalpha.com/input/?i=integral+of+sinx+from+0+to+pi%2F2++simpson+rule+3+interval
Vad är egentligen rätt. Känns ju konstigt att enligt wikipedias matlab kod så är det >1 och wolframalpha säger att det är <1?
WolframAlpha säger att svaret är 1,00003? Så det låter ganska rimligt att Wikipedias metod skulle stämma? 🤔
ja, såklart 1.00003 (inte 0.00003, måste tryckt fel). Nja. Jag menade att 0.999... är betydligt rimligare än svaren jag fick med min kod, men sen när jag kolla in WolframAlpha så kändes det inte så rimligt längre :P
jag listade ut det. Anledningen varför inte wikipedia koden funkade var för att man måste skriva in ett jämt antal iterationer
Aha, såklart! Snyggt letat! :)