0 svar
73 visningar
Louiger är nöjd med hjälpen
Louiger 470
Postad: 27 nov 2019 14:41

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

Svara Avbryt
Close