Texttolkning - plotta felkurvor
Jag tror mig ha löst 1-3, nu är det "bara" textdelen (inringat i rött) kvar. Jag förstår inte riktigt vad det är de frågar efter, men har ändå försökt plotta vad de kanske menar. Jag vet inte hur jag ska avläsa p mha plottningen, om jag ens har plottat rätt. Sen undrar jag om det verkligen kan stämma med feluppskattningen då felet i verkligheten är mindre vid användning av Rickardsonexploration än trappetsregeln. (har dyslexi och andra funktionshinder så snälla var snälla i kommentarerna).
Här följer uppgift och program:
clear all, close all, clc
funkis=@(x)sqrt(x+4)
format long
Qh=[];
for h=[2 1 0.5];
a=-1; b=1;
n=(b-a)/h;
summan=0;
for i=1:(n-1);
x=a+i*h;
summan=funkis(x)+summan;
end
Th=h*(summan+funkis(a)/2+funkis(b)/2);
Qh=[Qh;Th];
end
disp('Trappetsregeln för steglängden')
fprintf(' 2h 1h 0.5h \n')
fprintf(' %1.6f %1.6f %1.6f \n \n',Qh)
Qh2=[];
%för att minska felet öka p
for h=[2 1 0.5]./2;
a=-1; b=1;
n=(b-a)/h;
summan=0;
for i=1:(n-1);
x=a+i*h;
summan=funkis(x)+summan;
end
Th=(h)*(summan+funkis(a)/2+funkis(b)/2);
Qh2=[Qh2;Th];
end
disp('Trappetsregeln för halva steglängden');
fprintf(' 2h 1h 0.5h \n');
fprintf(' %1.6f %1.6f %1.6f \n \n',Qh2);
Rh=(Qh2-(1/4)*Qh)/(1-(1/4));
disp('Richardsonextrapolation för steglängden');
fprintf(' 2h 1h 0.5h \n');
fprintf(' %1.6f %1.6f %1.6f \n \n',Rh);
%Exakt svar är
L=(10*sqrt(5)/3)-(2*sqrt(3));
disp('Det exakta svaret är');
disp(L);
% error
format long
error_trap = abs( Qh2-Qh );
disp('Fel i trapetsregeln för steglängden');
fprintf(' 2h 1h 0.5h \n');
fprintf(' %1.6f %1.6f %1.6f \n \n',error_trap);
error_rich = abs( Rh-Qh );
disp('Fel i Richardsonexploration för steglängden');
fprintf(' 2h 1h 0.5h \n');
fprintf(' %1.6f %1.6f %1.6f \n \n',error_rich);
hk=[2 1 0.5];
% plot error
loglog( hk , error_trap , 'b' )
hold on
loglog( hk , error_rich , 'r' )
hold on