【发布时间】:2018-01-17 11:33:15
【问题描述】:
如何为 Gauss-Seidel 方法编写 Matlab 代码,使用户能够输入任意数量的方程、n 和矩阵系数的任意输入? 我这样做了,但这是针对固定数量的方程和已知方程的系数。 我需要一个代码,其中方程的数量 n 和系数的值 (a11, a12, ..) 都由用户给出。
clear;clc;format('long','g');
i=1;
x2(i)=32; x3(i)=41; x4(i)=12;
error_x1(i)=100;
while error_x1(i) >= 0.01
x1(i+1)=(21-x2(i)+42*x3(i)-9*x4(i))/-2;
x2(i+1)=(-3-4*x1(i)-x3(i)+x4(i))/-12;
x3(i+1)=(-24-2*x1(i)-6*x2(i)-18*x4(i))/-2;
x4(i+1)=(41-21*x1(i)+2*x2(i)-x3(i))/-1;
error_x1(i+1)=abs((x1(i+1)-x1(i))/x1(i+1))*100;
error_x2(i+1)=abs((x2(i+1)-x2(i))/x2(i+1))*100;
error_x3(i+1)=abs((x3(i+1)-x3(i))/x3(i+1))*100;
error_x4(i+1)=abs((x4(i+1)-x4(i))/x4(i+1))*100;
i=i+1;
end
disp(' x1 error(%)');
disp([x1',error_x1'])
disp(' x2 error(%)');
disp([x2',error_x2'])
disp(' x3 error(%)');
disp([x3',error_x3'])
disp(' x4 error(%)');
disp([x4',error_x4'
请...帮助
@DougLipinski,感谢您的帮助和建议。从上面的代码,它已被更改为下面的代码。 基本上是这样的。
while (n<maxit) && (max(err)>tol)
n = n + 1;%no. of iteration
for i = 1:n_eq
x(i) = (b(i) - (A(i,:) * x)) / A(i,i) + x(i);%Gauss-Seidel method
x_old = x;%roots
end
err = abs((x - x_old) ./ x);%checking for error
end
要向用户询问输入,请使用输入命令 示例:
A = input('Give matrix A');
等等。 祝你好运。 图片来源:Matteo Carpentieri(萨里大学)
【问题讨论】: