📄 adisolve.m
字号:
function N =ADISolve(Ao,No)
% 使用交替方向块迭代法求解二维代数方程组
% 输入: 包含系数&非齐次项的矩阵A和上一个时层的函数值No
% 输出: 函数值向量N
%
%
global L1 M1;
N=No;
%对z方向逐行使用thomas函数求值
%for m=1:2,
for j=2:M1-1,
AP=Ao([L1*(j-1)+1:L1*j],1);
AE=-1*Ao([L1*(j-1)+1:L1*j],2);
AW=-1*Ao([L1*(j-1)+1:L1*j],3);
AN=-1*Ao([L1*(j-1)+1:L1*j],4);
AS=-1*Ao([L1*(j-1)+1:L1*j],5);
AA=[AP,AE,AW];%系数矩阵
b1=Ao([L1*(j-1)+1:L1*j],7);
NN=N([L1*(j)+1:L1*(j+1)]);%N方向的下一列结点值
NS=N([L1*(j-2)+1:L1*(j-1)]);%S方向的上一列结点值
b2=AN.*NN+AS.*NS;
b=b1-b2;%非齐次项
Nt=thomas(AA,b);
N([L1*(j-1)+1:L1*j])=Nt;
end
%对r方向逐行使用thomas函数求值
for i=2:L1-1,
AP=Ao([L1*(M1-1)+i:-L1:i],1);
AE=-1*Ao([L1*(M1-1)+i:-L1:i],2);
AW=-1*Ao([L1*(M1-1)+i:-L1:i],3);
AN=-1*Ao([L1*(M1-1)+i:-L1:i],4);
AS=-1*Ao([L1*(M1-1)+i:-L1:i],5);
AA=[AP,AS,AN];%r方向系数矩阵
b1=Ao([L1*(M1-1)+i:-L1:i],7);
NE=N([L1*(M1-1)+i+1:-L1:i+1]);
NW=N([L1*(M1-1)+i-1:-L1:i-1]);
b2=AE.*NE+AW.*NW;
b=b1-b2;%非齐次项
Nt=thomas(AA,b);
% Nt(end+1)=Nt(end);
N([L1*(M1-1)+i:-L1:i])=Nt;
end
i=1;
AP=Ao([L1*(M1-1)+i:-L1:i],1);
AE=-1*Ao([L1*(M1-1)+i:-L1:i],2);
AW=-1*Ao([L1*(M1-1)+i:-L1:i],3);
AN=-1*Ao([L1*(M1-1)+i:-L1:i],4);
AS=-1*Ao([L1*(M1-1)+i:-L1:i],5);
AA=[AP,AS,AN];%r方向系数矩阵
b=Ao([L1*(M1-1)+i:-L1:i],7);%非齐次项
Nt=thomas(AA,b);
% Nt(end+1)=Nt(end);
N([L1*(M1-1)+i:-L1:i])=Nt;
%end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -