2
如何編寫Gauss-Seidel方法的Matlab代碼,使用戶能夠輸入任意數量的等式,n和矩陣係數的任何輸入? 我這樣做了,但這是爲了固定數量的方程和已知的方程係數。 我需要一個代碼,其中方程數n和用戶給出的係數值(a11,a12,...)。如何編碼一般Gauss-seidel方法
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');
等。 祝你好運。 信用:利瑪竇Carpentieri(薩里UNI)