用matlab求解线性代数方程

用matlab求解线性代数方程

% 功能:线性代数方程求解:AX=B
% 解的判定矩阵:C=[A B]
% 求解方法分三种情况讨论:
% 唯一解:A为非奇异方阵,x=inv(A)*B
% 无穷解:rank(A)=rank©<n
% 基础解系:x1=null(A)
% 特解:x=pinv(A)*B
% 无解:矛盾方程的最小二乘解法

function x=linear_solver(A,B)
C=[A B];
[m,n]=size(A);
d=[rank(A) rank(C)];
if d(1)==d(2)
    if d(1)<n
        b=['此方程有无穷多解,其中x1为通解,x2为特解'];
        sprintf('%s',b)
        syms a1 a2;
        x1=null(sym(A));
        x2=sym(pinv(A))*B;
        x=a1*x1(:,1)+a2*x1(:,2)+x2
    end
      if d(1)==n
          b=['此方程有唯一解'];
          x=inv(A)*B
      end
else 
     b=['此方程无正常解,求得最小二乘解如下'];
      x=pinv(A)*B
end
示例:
A=[1 2 3 4;2 2 1 1;2 4 6 8;4 4 2 2];
B=[1;3;2;6];
ans =
'此方程有无穷多解,其中x1为通解,x2为特解'
x =
2*a1 + 3*a2 + 125/131
 96/131 - (7*a2)/2 - (5*a1)/2
                  a1 - 10/131
                  a2 - 39/131

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值