python加速运算_加速sympy矩阵运算

本文探讨了使用Sympy进行矩阵运算时遇到的性能问题。作者创建了一个解决n变量线性方程组的代码,随着变量数增加,计算时间显著增长。对于n=4,运算耗时约30秒,而n=7时,运算超过8小时仍未完成。代码中展示了矩阵和向量的定义,以及矩阵乘法和求逆的步骤。作者寻求优化这段代码以提高运算速度。
摘要由CSDN通过智能技术生成

我写了一个代码,它使用sympy来建立一个矩阵和一个向量。这两个元素是sympy符号。然后我把矩阵求逆,然后把逆矩阵和向量相乘。这应该是一个具有n个变量的线性方程组的通用解算器。我对这些线性方程的符号解法感兴趣。

问题是我的代码太慢了。

例如,对于n=4,它大约需要30秒,但是对于n=7,我到目前为止还没有解决它,代码运行了一整晚(8小时),早上还没有完成。

这是我的密码。在from sympy import *

import pprint

MM = Matrix(niso,1, lambda i,j:var('MM_%s' % (i+1) ))

MA = Matrix (niso,1, lambda i,j:var('m_%s%s' % ('A', chr(66+i)) ) )

MX = Matrix (niso,1, lambda i,j:var('m_%s%s'% (chr(66+i), 'A')))

RB = Matrix(niso,1, lambda i,j:var('R_%s%s' % ('A'+chr(66+i),i+2)))

R = Matrix (niso, niso-1, lambda i,j: var('R_%s%d' % (chr(65+i) , j+2 )))

K= Matrix(niso-1,1, lambda i,j:var('K_%d' % (i+2) ) )

C= Matrix(niso-1,1, lambda i,j:var('A_%d' % i))

A = Matrix(niso-1,niso-1, lambda i,j:var('A_%d' % i))

b = Matrix(niso-1,1, lambda i,j:var('A_%d' % i))

for i in range(0,niso-1):

for j in range(0,niso-1):

A[i,j]=MM[j+1,0]*(Add(Mul(R[0,j],1/MA[i,0]/(RB[i,0]-R[0,i])))+R[i+1,j]/MX[i,0]/(-RB[i,0]+R[0,i]))

for i in range(0,niso-1):

b[i,0]=MM[0,0]*(Add(Mul(1,1/MA[i,0]/(RB[i,0]-R[0,i])))+1/MX[i,0]/(-RB[i,0]+R[0,i]))

A_in = Inverse(A)

if niso <= 4:

X =simplify(A_in*b)

if niso > 4:

X = A_in*b

pprint(X)

有没有办法加快速度?在

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值