作业帮 > 综合 > 作业

在MATLAB中用求解高斯—塞德尔迭代法线性方程组程序

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/02 07:19:19
在MATLAB中用求解高斯—塞德尔迭代法线性方程组程序
我笨的可怜,.
(2)使用高斯—塞德尔迭代法解下述方程组.
「10 -1 2 0 | | X1| | 6 |
| -1 11 -1 3 | | X2| = | 25|
| 2 -1 10 -1 | | X3| |-11|
| 0 3 -1 8 」 | X4| | 15|
两边的竖杠是矩阵的框框
在Matlab命令行下输入:
edit Gauss_seidel.m
然后将下面输入,并保存
function x=Gauss_Seidel(A,b,x0,tol)
if (nargin==2)
x0=ones(size(b));
tol=1e-6;
elseif (nargin==3)
tol=1e-6;
else
sprintf('USAGE:Gauss_Seidel(A,b,x0,tol)')
end
D=diag(diag(A));
U=triu(A,1);
L=tril(A,-1);
G=-(D+L)\U;
d1=(D+L)\b;
x=G*x0+d1;
n=1;
while norm(x-x0)>=tol
x0=x;
x=G*x0+d1;
n=n+1;
end
n
到Matlab主窗口,输入:
A=[10,-1,2,0;-1,11,-1,3;2,-1,10,-1;0,3,-1,8];
b=[6;25;-11;15];
x=gauss_seidel(A,b)
就可以得到结果.
x =
1.0000
2.0000
-1.0000
1.0000
迭代8次.