写出matlab使用高斯消去法求Ax=b的程序,并用这个程序求矩阵的逆矩阵
时间: 2024-05-27 18:14:22 浏览: 18
以下是matlab使用高斯消去法求Ax=b的程序:
function [x] = gauss_elimination(A,b)
% Gaussian elimination method to solve Ax=b
% Input: A is a square matrix, b is a column vector
% Output: x is the solution to Ax=b
n = length(b);
x = zeros(n,1);
% Forward elimination
for k = 1:n-1
for i = k+1:n
factor = A(i,k)/A(k,k);
A(i,k+1:n) = A(i,k+1:n) - factor*A(k,k+1:n);
b(i) = b(i) - factor*b(k);
end
end
% Back substitution
x(n) = b(n)/A(n,n);
for k = n-1:-1:1
x(k) = (b(k) - A(k,k+1:n)*x(k+1:n))/A(k,k);
end
end
使用这个程序求矩阵的逆矩阵,可以通过将矩阵A和单位矩阵I进行联立消元,即求出[A|I]的行阶梯矩阵,然后将[A|I]的右半部分截取出来即为A的逆矩阵。
以下是matlab使用高斯消去法求矩阵的逆矩阵的程序:
function [A_inv] = inv_gauss_elimination(A)
% Gaussian elimination method to find inverse of A
% Input: A is a square matrix
% Output: A_inv is the inverse of A
n = size(A,1);
A_inv = eye(n);
% Forward elimination
for k = 1:n-1
for i = k+1:n
factor = A(i,k)/A(k,k);
A(i,k+1:n) = A(i,k+1:n) - factor*A(k,k+1:n);
A_inv(i,:) = A_inv(i,:) - factor*A_inv(k,:);
end
end
% Back substitution
for k = n:-1:2
A_inv(k,:) = A_inv(k,:)/A(k,k);
for i = k-1:-1:1
A_inv(i,:) = A_inv(i,:) - A(i,k)*A_inv(k,:);
end
end
A_inv(1,:) = A_inv(1,:)/A(1,1);
end
注意,求矩阵的逆矩阵需要保证A可逆,即A的行列式不为0。