MATLAB用高斯消去法解非线性方程组的代码


function x = gauss(A, b)
n = length(b);
for k = 1 : n-1
if A(k,k)==0
fprintf('Error: the %dth pivot element equal to zero!\n',k);
return;
end
index = [k+1:n];
m = -A(index,k)/A(k,k);
A(index,index) = A(index,index) + m*A(k,index);
b(index) = b(index) + m*b(k);
end
x = zeros(n,1);
x(n) = b(n)/A(n,n);
for i = n-1:-1:1
x(i) = ( b(i) - A(i,[i+1:n])*x([i+1:n]) )/悔敬A(i,i);
end

在Command Window 输入
>> A=[1 1.355 1.4 2;
3 3.5 0.22 1;
0.5 2 2.1 3;
0.3 0.1 -0.55 2];
>> b=[2.00,1.00,0.55,3.00]'

b =

2.0000
1.0000
0.5500
3.0000

>槐前简> gauss(A,b)

ans =

2.5225
-2.2313
0.0177
1.2381

>>铅裤