%用差分法求解线性边值问题，例题1
function chapter4_example_1_chafen
clear
clc
format long

XL=0.0;
XU=1;
N=100;           %取节点数,增加节点数，提高精度
h=(XU-XL)/N;
xx=XL:h:XL+N*h;

YL=0; YU=1;

A=zeros(N-1,N-1); %给系数矩阵赋值
A(1,1)=-2+h^2*(-h^2); A(1,2)=1; %将系数矩阵第一行和最后一行单独赋值
A(N-1,N-1)=-2+h^2*(-((N-1)*h)^2); A(N-1,N-2)=1;
for i=2:N-2       %对系数矩阵中中间行赋值
    A(i,i)=-2-h^2*(i*h)^2;
    A(i,i-1)=1;
    A(i,i+1)=1;
end

%给方程右边的列矩阵赋值
B=zeros(N-1,1);
B(1,1)=h^2*exp(-h)-YL;
B(N-1,1)=h^2*exp(-(N-1)*h)-YU;
for i=2:N-2
    B(i,1)=h^2*exp(-i*h);
end

yy=A\B;   %采用矩阵除法获得解得列矩阵

yy_cf(1)=YL;
yy_cf(N+1)=YU;
for i=2:N
   yy_cf(i)=yy(i-1,1);
end
yy_cf;

hold on
plot(xx,yy_cf,'b')%数值结果
title('差分法结果')





    

