• 注册
当前位置:1313e > 默认分类 >正文

MATLAB求解非齐次线性方程组

根据线性代数中求解方程组的基本知识,首先应判断系数矩阵的秩是否和增广矩阵的秩相等,若不等,则无解;若有解,根据秩和未知量个数的关系,判断是唯一解还是无穷多解;若为无穷多解,其通解为齐次方程组的通解加非齐次方程组的特解。

求非齐次线性方程组Ax=b的特解,可直接使用命令A\b,求解齐次线性方程组的通解,可以使用函数nullrref来实现。

命令含义
B = null(A,'r')求系数矩阵为A的齐次线性方程组Ax=0的基础解系,结果为有理数,B的列向量即基础解系的列向量
Z = null(A)求出Ax=0的基础解系后,将基础解系的向量正交单位化,存储在Z中
C = rref(A)求出矩阵A的行最简形矩阵(reduced row echelon form)
function [S_H, S_P] = solveLS(A,b)
% 输入参数A:系数矩阵
% 输入参数b:Ax=b的常数项列向量b
% S_H:齐次线性方程组的基础解系
% S_P:非齐次线性方程组的特解
if size(A,1) ~= length(b)   %size(A,1)求矩阵的行数error('输入数据错误,请重新输入!');return;
elseB = [A,b];  %增广矩阵rank_A = rank(A);   %求系数矩阵的秩rank_B = rank(B);   %求增广矩阵的秩if rank_A ~= rank_B %无解情况disp('线性方程组无解!');S_H = [];S_P = [];else if rank_B == size(A,2) %若增广矩阵的秩 = 未知量个数%size(A,2)求矩阵的列数,相当于length(A)disp('线性方程组有唯一解!');S_P = A\b;  %求唯一解S_H = [];elsedisp('线性方程组有无穷解!');S_H = null(A,'r');%求出齐次方程组的基础解系S_P = A\b;  %求非齐次方程组的特解endend
end

使用Matlab求解方程组

x1+2x22x3+3x4=22x1+4x23x3+4x4=55x1+10x28x3+11x4=12

A=[1 2 -2 3; 2 4 -3 4; 5 10 -8 11];
b=[2 5 12]';format rat;
[S_H, S_P]=solveLS(A,b)

运行结果

线性方程组有无穷解!S_H =-2              1       
       1              0       0              2       0              1       S_P =0       7/4     0       -1/2     

该线性方程组有无穷多解,通解为
x=k12100+k21021+07/401/2,k1,k2R

转载于:https://www.cnblogs.com/Genesis2018/p/8304699.html

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录