在matlab里如何构建幺模矩阵,幺模矩阵精确逆Python

您可以使用^{}。在

例如,下面是一个numpy整数数组:In [148]: m = np.array([[10, 11, 0, 0], [9, 10, 0, 0], [100, 0, 20, 3], [-10000, 200, 133, 20]])

In [149]: m

Out[149]:

array([[ 10, 11, 0, 0],

[ 9, 10, 0, 0],

[ 100, 0, 20, 3],

[-10000, 200, 133, 20]])

精确的行列式是1,但是np.linalg.det()和np.linalg.inv()都会引入浮点错误:

^{pr2}$

从numpy数组创建一个sypy ^{}对象:In [156]: import sympy

In [157]: M = sympy.Matrix(m)

In [158]: M

Out[158]:

Matrix([

[ 10, 11, 0, 0],

[ 9, 10, 0, 0],

[ 100, 0, 20, 3],

[-10000, 200, 133, 20]])

sympy计算是精确的:In [159]: M.det()

Out[159]: 1

In [160]: M.inv()

Out[160]:

Matrix([

[ 10, -11, 0, 0],

[ -9, 10, 0, 0],

[-325400, 358000, 20, -3],

[2169000, -2386300, -133, 20]])

要将逆矩阵转换回numpy数组,可以执行以下操作:In [185]: Minv = M.inv()

In [186]: minv = np.asarray(Minv).astype(int)

In [187]: minv

Out[187]:

array([[ 10, -11, 0, 0],

[ -9, 10, 0, 0],

[ -325400, 358000, 20, -3],

[ 2169000, -2386300, -133, 20]])

必须使用astype(int)方法,因为numpy数组中没有object的数据类型:In [188]: np.asarray(Minv)

Out[188]:

array([[10, -11, 0, 0],

[-9, 10, 0, 0],

[-325400, 358000, 20, -3],

[2169000, -2386300, -133, 20]], dtype=object)

这个结果是一个整数的整数数组。在

在转换回numpy时要小心:逆整数可能比用64位整数表示的大。在

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值