求解泊松方程的共轭梯度法程序和预处理共轭梯度法程序?

来源:百度知道 编辑:UC知道 时间:2024/05/15 05:08:06
谁能帮我做个求解泊松方程的共轭梯度法程序和预处理共轭梯度法程序?

function A=xishu(N) %存储离散化后非边界点构成的系数矩阵
A=zeros(N^2);
for i=1:N^2
A(i,i)=4;
if i+N<N^2+1
A(i,i+N)=-1;
A(i+N,i)=A(i,i+N);
end
if mod(i,N)~=0
A(i,i+1)=-1;
A(i+1,i)=A(i,i+1);
end
end

function x=cg(a,b,x)
%共轭向量法求解线性方程组
% 初始输入变量 a:系数矩阵 b:方程右端向量 x 输入的初始解
n=length(b);
r=b-a*x;
p=r;
q0=r'*r;
while q0>1e-10
w=a*p;
t=q0/(p'*w);
x=x+t*p;
r=r-t*w;
q=r'*r;
s=q/q0;
p=r+s*p;
q0=q;
end