Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:42   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 用于处理多元多项式的库

我需要编写一些代码来处理和处理多元多项式。我将用一个简化的例子来概述我的任务。

可以给我三个表达式:2x ^ 2、3y +1和1z。然后,我需要将它们相乘,得出6x ^ 2yz + 2x ^ 2z。然后,我想找到该表达式关于x,y和z的偏导数。这将给我12xyz + 4xz,6x ^ 2z和6x ^ 2y + 2x ^ 2。

我的问题涉及对包含数千个变量的表达式执行类似的简单操作,因此我需要一种简单的方法来系统地执行此操作。我真的想使用python,因为我已经使用numpy / scipy / matplotlib完成了许多与项目相关的功能,但是如果那里有其他语言的强大工具箱,我也可以使用它。我正在进行大学研究,因此也愿意使用Matlab。

我还没有找到任何可以为我轻松完成此操作的优秀python库,理想情况下,我想要的东西类似于可以在多维多项式上工作的scipy多项式例程 。有谁知道一个好的库似乎适合解决这个问题,并且很容易集成到已经存在的python代码中?

谢谢!

后续:我花了几天的时间来使用sympy,结果发现它非常易于使用。但是,对于我正在研究的问题的大小,这减慢了很多,所以现在我将继续研究Matlab。为了使用较小的样本量给出非常粗略的速度估算,需要大约5秒钟的时间来计算包含250个变量的2阶多项式的每个偏导数。

后续#2:当我仍在解决此问题时,我可能应该回过头来做,但是我也应该让所有人都知道,matlab符号库的速度与sympy极为相似。换句话说,对于大型计算而言,它实在是太慢了。这两个库都非常易于使用,因此对于小型计算,我强烈建议您使用。

为了解决我的问题,我手动计算了梯度,简化了梯度,然后使用发现的模式对代码中的某些值进行了硬编码。这是更多的工作,但是使我的代码成倍增长,并最终可用。



回答:

Sympy非常适合此操作: http : //code.google.com/p/sympy/

文档: http//docs.sympy.org/

与本教程区别的示例: http : //docs.sympy.org/tutorial.html#differentiation

import sympy x, y, z = sympy.symbols('xyz') p1 = 2*x*x p2 = 3*y + 1 p3 = z p4 = p1*p2*p3 print p4 print p4.diff(x) print p4.diff(y) print p4.diff(z) 输出:

2*z*x**2*(1 + 3*y) 4*x*z*(1 + 3*y) 6*z*x**2 2*x**2*(1 + 3*y)

更多&回答...
poster 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:19


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.