Jacobi迭代法和Gauss-Seidel迭代法Matlab程序.pdf
- tianya189企业认证 |
- 2021-05-08 发布|
- 24.68 KB|
- 6页
解( 1):
采用 Jacobi 迭代法时, Matlab 计算程序为:
clear
clc
i=1;
a=[5 2 1;-1 4 2;2 -3 10];
d=diag(diag(a));
l=d-tril(a);
u=d-triu(a);
d0=inv(d);
b=[-12;20;3];
x0=[1;1;1];
B=d0*(l+u);
f=d0*b;
x=B*x0+f;
while norm(x-x0,inf)>=1e-4 x0=x; x=B*x0+f; i=i+1;
end
x
i
采用 Gauss-Seidel迭代法计算时, Matlab 计算程
序为:
clear
clc
i=1;
a=[5 2 1;-1 4 2;2 -3 10];
d=diag(diag(a));
l=d-tril(a);
u=d-triu(a);
b=[-12;20;3];
x0=zeros(3,1);
B=inv(d-l)*u;
f=inv(d-l)*b;
x=B*x0+f;
while norm(x-x0,inf)>=1e-4 x0=x; x=B*x0+f; i=i+1;
end
x
i
习题6.7
function [n,x]=sor22(A,b,X,x1,nm,w,ww)
%用超松弛迭代法求解方程组 Ax=b
%输入: A为方程组的系数矩阵, b 为方程组右端的列向量, X为迭代初值构成的
列向量, x1 为方程的精确解, nm为最大迭代次数, w为误差精度, ww为松弛因
子
%输出: x 为求得的方程组的解构成的列向量, n 为迭代次数
n=1;
m=length(A);
D=diag(diag(A)); %令A=D-L-U, 计算矩阵 D
L=tril(-A)+D; %令A=D-L-U, 计算矩阵 L
U=triu(-A)+D; %令A=D-L-U, 计算矩阵 U
M=