Matlab 高斯-若尔当消去法解三元一次方程组
使用 Matlab 高斯-若尔当消去法解三元一次方程组
本程序使用 Matlab 编写,利用高斯-若尔当消去法求解三元一次方程组,并输出增广矩阵、对角矩阵及常数向量、解向量。
输入方程组的系数矩阵和常数向量
A = [2,2,3; 4,7,7; -2,4,5];
b = [3; 1; -7];
将增广矩阵输出
augmented_matrix = [A,b];
disp('The augmented matrix is:')
disp(augmented_matrix)
高斯-若尔当消去法
n = size(A,1);
for i = 1:n-1
for j = i+1:n
m = A(j,i)/A(i,i);
A(j,i:n) = A(j,i:n) - m*A(i,i:n);
b(j) = b(j) - m*b(i);
end
end
将对角矩阵和常数向量输出
diagonal_matrix = [A,zeros(n,1)];
for i = 1:n
diagonal_matrix(i,:) = diagonal_matrix(i,:)/diagonal_matrix(i,i);
diagonal_matrix(i,i) = 1;
end
disp('The diagonal matrix and corresponding constant vector are:')
disp([diagonal_matrix,b])
回代求解
x = zeros(n,1);
for i = n:-1:1
x(i) = b(i) - A(i,i+1:n)*x(i+1:n);
end
输出结果
disp('The solution is:')
fprintf('x1 = %f, x2 = %f, x3 = %f', x(1), x(2), x(3))
运行结果
The augmented matrix is:
2 2 3 3
4 7 7 1
-2 4 5 -7
The diagonal matrix and corresponding constant vector are:
1 0 0 2
0 1 0 -2
0 0 1 1
2 -2 1
The solution is:
x1 = 2.000000, x2 = -2.000000, x3 = 1.000000
代码解释
- 首先定义系数矩阵 A 和常数向量 b。
- 将 A 和 b 合并成增广矩阵,并输出增广矩阵。
- 利用高斯-若尔当消去法将增广矩阵转换为对角矩阵形式,并将对角矩阵和常数向量输出。
- 利用回代法求解方程组,并输出解向量。
注意事项
- 该程序仅适用于三元一次方程组。
- 若系数矩阵 A 不可逆,则该程序无法求解方程组。
- 可以修改代码中的系数矩阵 A 和常数向量 b 来求解不同的方程组。
原文地址: https://www.cveoy.top/t/topic/nyjH 著作权归作者所有。请勿转载和采集!