求解泊松方程的共轭梯度法程序和预处理共轭梯度法程序?
发布网友
发布时间:2022-05-12 16:33
我来回答
共1个回答
热心网友
时间:2023-10-13 17:15
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