1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
clear all; close all; Nvec=[10 20 100 200 1000];
Error=[]; for k=1:length(Nvec) N=Nvec(k); h=1/N; x=0:h:1; N=length(x)-1; u(1)=1; NI(1,N)=0; for n=1:N Xn=u(n); Xp=Xn; Xprev=0; while abs(Xp-Xprev) > eps*abs(Xp) Xprev=Xp; Xp=Xp-(Xp-h*Xp+2*h*x(n+1)/Xp-u(n))./(1-h-2*h*x(n+1)/(Xp^2)); NI(n)=NI(n)+1; end u(n+1)=Xp; end ue=sqrt(2*x+1); error=max(abs(u-ue)); Error=[Error,error]; end plot(log10(Nvec),log10(Error),'ro-','MarkerFaceColor','w','LineWidth',1) hold on plot(log10(Nvec), log10(Nvec.^(-1)), '--') grid on
set(gca,'fontsize',14) xlabel('log_{10}N','fontsize',14),ylabel('log_{10}Error','fontsize',14)
ax = [0.57 0.53]; ay = [0.68 0.63]; annotation('textarrow',ax,ay,'String','slope = -1 ','fontsize',14)
for n=1:length(Nvec)-1 order(n)=-log(Error(n)/Error(n+1))/(log(Nvec(n)/Nvec(n+1))); end Error order
|