相关疑难解决方法(0)

从一组值中评估sympy表达式

我正在试验同情,我遇到了一个我无法解决的问题.

使用scipy我可以编写一个表达式并为其计算x值的数组,如下所示:

import scipy
xvals = scipy.arange(-100,100,0.1)
f = lambda x: x**2
f(xvals)
Run Code Online (Sandbox Code Playgroud)

使用sympy我可以写相同的表达式如下:

import sympy
x = sympy.symbols('x')
g = x**2
Run Code Online (Sandbox Code Playgroud)

我可以通过执行以下操作来评估此表达式的单个值:

g.evalf(subs={x:10})
Run Code Online (Sandbox Code Playgroud)

但是我无法弄清楚如何评估x值的数组,就像我用scipy做的那样.我该怎么做?

python sympy scipy

35
推荐指数
2
解决办法
1万
查看次数

Python,cPickle,pickling lambda函数

我必须像这样挑选一个对象数组:

import cPickle as pickle
from numpy import sin, cos, array
tmp = lambda x: sin(x)+cos(x)
test = array([[tmp,tmp],[tmp,tmp]],dtype=object)
pickle.dump( test, open('test.lambda','w') )
Run Code Online (Sandbox Code Playgroud)

它会出现以下错误:

TypeError: can't pickle function objects
Run Code Online (Sandbox Code Playgroud)

有办法吗?

python arrays lambda numpy pickle

22
推荐指数
3
解决办法
1万
查看次数

可用于矩阵形式的微分运算符,在 Python 模块 Sympy 中

我们需要微分算子的两个矩阵[B][C]如:

B = sympy.Matrix([[ D(x), D(y) ],
                  [ D(y), D(x) ]])

C = sympy.Matrix([[ D(x), D(y) ]])

ans = B * sympy.Matrix([[x*y**2],
                        [x**2*y]])
print ans
[x**2 + y**2]
[      4*x*y]

ans2 = ans * C
print ans2
[2*x, 2*y]
[4*y, 4*x]
Run Code Online (Sandbox Code Playgroud)

这也可以用于计算矢量场的卷曲,例如:

culr  = sympy.Matrix([[ D(x), D(y), D(z) ]])
field = sympy.Matrix([[ x**2*y, x*y*z, -x**2*y**2 ]])
Run Code Online (Sandbox Code Playgroud)

要使用 Sympy 解决这个问题,必须创建以下 Python 类:

import sympy

class D( sympy.Derivative ):
    def __init__( self, var ):
        super( D, self ).__init__() …
Run Code Online (Sandbox Code Playgroud)

python matrix sympy automatic-differentiation differentiation

4
推荐指数
1
解决办法
3830
查看次数