Académique Documents
Professionnel Documents
Culture Documents
global np xy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=np+1;
xrek(1)=xp(2);
h(1)=xrek(1);
for i=2:N,
xrek(i)=xp(i+1);
h(i)=xrek(i)-xrek(i-1);
end
u=1;
k=0.01;
rechts=0;
if k < 0.1,
hcrs= (1-10*k)/50;
hfin= 10*k/50;
xex= [0: hcrs : 1-10*k 1-10*k+hfin : hfin : 1];
else
xex=[0:0.01:1];
end
if pe > 100,
empe=0;
else
empe=exp(-pe);
end
yex=1-(1-exp(pe*(xex-1)))/(1-empe); % exact op fijn rooster
xrek0=[0 xrek];
yexrek0=[0 yexrek];
yexrek=yexrek';
%
% 2nd order symmetry-preserving method **********
%
for i=1:N-1
upp(i) = u - 2*k/h(i+1);
low(i) = -u - 2*k/h(i);
dia(i) = -upp(i)-low(i);
rl2S(i) = b(i) * (h(i)+h(i+1));
end
%
% matrix
M2S=diag(upp(1:N-2),1) + diag(dia(1:N-1),0) + diag(low(2:N-1),-1);
%
% boundary conditions
rl2S(N-1)=rl2S(N-1)-upp(N-1);
%
% solution
y2S = M2S\rl2S';
y2S(N) = 1;
if N==2, y2S=y2S'; end
% alles plotten
pSiser=exist('pS');
if pSiser==1,
set(pS(1),'visible','off');
set(pS(2),'visible','off');
set(pS(3),'visible','off');
end
pS=plot(xex,yex,'g',xrek0,[0 y2L'],'r', xrek0,[0 y2S'],'b');
set(pS(1),'hittest','off');
set(pS(2),'hittest','off');
set(pS(3),'hittest','off');
set(pS(1),'Linewidth',3);
set(pS(2),'Linewidth',3);
set(pS(3),'Linewidth',3);
set(gca,'XLim',[0 1],'Ylim',[-0.1 1.1]);
[abc def]=legend('exact','Lagrange','symmetric',2);
set(abc,'Fontsize',16);
vernum=version;
if vernum(1)>='7',
index=5;
else
index=3;
end
xd=get(def(index),'xdata');
yd=get(def(index),'ydata');
set(def(index),'xdata',[xd-0.1 xd+0.1],'ydata',[yd yd]);
set(def(index),'linestyle','-','linewidth',3,'color','g','marker','none');
xd=get(def(index+2),'xdata');
yd=get(def(index+2),'ydata');
set(def(index+2),'xdata',[xd-0.1 xd+0.1],'ydata',[yd yd]);
set(def(index+2),'linestyle','-','linewidth',3,'color','r','marker','none');
xd=get(def(index+4),'xdata');
yd=get(def(index+4),'ydata');
set(def(index+4),'xdata',[xd-0.1 xd+0.1],'ydata',[yd yd]);
set(def(index+4),'linestyle','-','linewidth',3,'color','b','marker','none');