如何用python计算方程组_python – 用奇异矩阵计算求解方程组

我有这个奇异的矩阵(我称之为A)

-3a 1 0 0

3a -2a - 1 2 0

0 2a -a-b-2 3

0 0 a+b -3

我试图解决Ax = 0,这样x中元素的总和是1.我想用a和b来解决x.我知道如何手动执行此操作(使用高斯消除来根据第四个组件编写所有组件,然后设置第四个组件以使解决方案规范化).但有没有办法以计算方式做到这一点?我可以在Python,Mathematica或R中做到这一点.(或者MATLAB,但我认为在MATLAB中没有办法做到这一点.)

我复制的代码是通过在矩阵中添加第五行来实现的,

1 1 1 1

然后使用QR分解找到最小二乘解.但是,我认为我不能这样做,因为我没有a和b的值,我想用a和b来解决这个问题.

最佳答案

In[1]:= A = {{-3a,1,0,0}, {3a,-2a-1,2,0}, {0,2a,-a-b-2,3}, {0,0,a+b,-3}};

x = {p, q, r, s};

sol = Reduce[A.x==0 && p+q+r+s==1 && Det[A]==0, x, Backsubstitution->True]

Out[3]= (1+3*a+3*a^2+a^3+a^2*b) != 0 &&

p == 1/(1+3*a+3*a^2+a^3+a^2*b) &&

q == (3*a)/(1+3*a+3*a^2+a^3+a^2*b) &&

r == (3*a^2)/(1+3*a+3*a^2+a^3+a^2*b) &&

s == (a^3 + a^2*b)/(1+3*a+3*a^2+a^3+a^2*b)

In[4]:= x=x/.ToRules[sol (* Watch out for that denominator!!! *)];

Simplify[A.x]

Out[5]= {0, 0, 0, 0}

In[6]:= Simplify[Total[x]]

Out[6]= 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值