使用 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

代码解释

  1. 首先定义系数矩阵 A 和常数向量 b。
  2. 将 A 和 b 合并成增广矩阵,并输出增广矩阵。
  3. 利用高斯-若尔当消去法将增广矩阵转换为对角矩阵形式,并将对角矩阵和常数向量输出。
  4. 利用回代法求解方程组,并输出解向量。

注意事项

  • 该程序仅适用于三元一次方程组。
  • 若系数矩阵 A 不可逆,则该程序无法求解方程组。
  • 可以修改代码中的系数矩阵 A 和常数向量 b 来求解不同的方程组。
Matlab 高斯-若尔当消去法解三元一次方程组

原文地址: https://www.cveoy.top/t/topic/nyjH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录