一种求多元方程组的方法
come from shumo.com
%简单的GAUSS消去法
%a为系数方阵,b为右端向量
- function x = gauss(a,b)
- [n,m] = size(b);
- if size(a) == [n,n]
- for i = 1 : (n - 1)
- if a(i,i) == 0 error('Divide by zero');end
- b((i + 1):n,:) = b((i + 1):n,:) - a((i + 1):n,i)*b(i,:)/a(i,i);
- a((i + 1):n,i:n) = a((i + 1):n,i:n) - ...
- a((i + 1):n,i)*a(i,i:n)/a(i,i);
- [a,b]
- end
- if a(n,n) == 0,error('Divide by zero');end
- 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
- else,error('Divede of matrix must agree');
- end
复制代码
%请大家赐教其他的好方法
|