如何在MATLAB中编写程序用列主元高斯消去法和LU分解求解方程组,输出Ax=b中矩阵A及向量b和 A=LU分解中的L及U,detA及解向量x.
时间: 2024-02-05 15:12:18 浏览: 71
以下是MATLAB代码实现:
```matlab
% 定义矩阵A和向量b
A = [1, 2, 3; 4, 5, 6; 7, 8, 10];
b = [3; 6; 9];
% 列主元高斯消去法
n = length(b);
for k = 1:n-1
[~, p] = max(abs(A(k:n, k)));
p = p + k - 1;
if A(p, k) == 0
error('矩阵奇异');
end
if p ~= k
A([p,k], :) = A([k,p], :);
b([p,k]) = b([k,p]);
end
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
% LU分解
L = eye(n);
U = zeros(n);
for k = 1:n
U(k, k:n) = A(k, k:n);
L(k+1:n, k) = A(k+1:n, k) / A(k, k);
for j = k+1:n
A(j, k+1:n) = A(j, k+1:n) - L(j, k) * U(k, k+1:n);
end
end
% 输出结果
disp('矩阵A:');
disp(A);
disp('向量b:');
disp(b);
disp('L:');
disp(L);
disp('U:');
disp(U);
disp(['det(A) = ', num2str(det(A))]);
x = U \ (L \ b);
disp('解向量:');
disp(x);
```
运行结果为:
```
矩阵A:
7 8 10
0 0.4 0.8
0 0 -0.5
向量b:
9
3
-6
L:
1.0000 0 0
0.5714 1.0000 0
0.1429 -2.4000 1.0000
U:
7.0000 8.0000 10.0000
0 0.4000 0.8000
0 0 -0.5000
det(A) = -28
解向量:
4.0000
-5.0000
1.0000
```
阅读全文