Code
Code
m
function PoissonSolver()
h = 0.001; %mesh size
x = 0:h:1; %mesh
A = StiffnessMatrix(x);
b = LoadVector(x,@f);
u = A\b; %solve linear system
plot(x,u)
% LoadVector.m
function b = LoadVector(x,f)
n=length(x)-1;
b=zeros(n+1,1);
for i=1:n
h = x(i+1)-x(i);
b(i) = b(i) + f(x(i))*h/2;
b(i+1) = b(i+1) + f(x(i+1))*h/2;
end
b(1,1)=0;
b(n+1,1)=0;
% StiffnessMatrix.m
function A = StiffnessMatrix(x)
n = length(x)-1;
A = zeros(n+1,n+1);
for i=1:n
h=x(i+1)-x(i);
A(i,i)=A(i,i)+1/h;
A(i,i+1)=A(i,i+1)-1/h;
A(i+1,i)=A(i+1,i)-1/h;
A(i+1,i+1)=A(i+1,i+1)+1/h;
end
A(1,1)=1;
A(n+1,n+1)=1;
% f.m
function y = f(x)
%y=1;
y=(pi^2)*sin(pi*x);