python - 用于处理多元多项式的库

标签 python math matlab numpy scipy

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

假设我得到了三个表达式: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 polynomial routines 的东西。这可能适用于多维多项式。有谁知道似乎适合这个问题并且可以轻松集成到现有 python 代码中的好库?

谢谢!

跟进:我花了几天时间使用 sympy,事实证明它非常易于使用。然而,对于我正在处理的问题的规模来说,它的速度要慢得多,所以我现在将去探索 matlab。为了使用小样本对速度进行极其粗略的估计,计算包含 250 个变量的 2 阶多项式的每个偏导数大约需要 5 秒。

跟进 #2: 当我还在研究这个问题时,我可能应该这样做,但我不妨让大家知道 matlab 符号库在速度上与同情。换句话说,对于大型计算来说,它的速度非常慢。这两个库都非常易于使用,因此对于小型计算,我强烈推荐其中一个。

为了解决我的问题,我手动计算梯度,简化它们,然后使用我发现的模式在我的代码中硬编码一些值。这需要更多工作,但让我的代码速度呈指数级增长并最终可用。

最佳答案

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)

关于python - 用于处理多元多项式的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3097464/

相关文章:

python - scipy:spearmanr返回值的重要性(相关性)

python - 抵押贷款利率计算器返回荒谬的值

algorithm - 研究人员如何找到如此大的素数?

matlab - 加载多个图像并应用主成分分析

matlab - 仿射变换缩放

python - 根据级别 0 索引对多索引 Pandas DataFrame 的级别 1 索引进行自定义排序

Python:基于nosetest是否运行的条件变量

c# - 将 Excel 列字母转换为数字的算法是什么?

Matlab:为 odeset 的 'Vectorized' 属性调整 myODEfun

python - 在 Python 中使用多个正则表达式或更大的正则表达式进行替换