【发布时间】:2018-07-04 05:56:01
【问题描述】:
我目前对 sympy 有以下“问题”:
我有一个像M = matrix([pi*a, sin(1)*b]) 这样的符号表达式,我想将它传递给lambdify 并传递给数值优化器。问题是优化器需要函数来输入/输出形状为(n,) 的numpy 数组,特别是不是(n,1)。
现在我已经能够使用以下代码 (MWE) 实现这一点:
import numpy as np
import sympy as sp
a, b = sp.symbols('a, b')
M = sp.Matrix([2*a, b])
f_tmp = sp.lambdify([[a,b]], M, 'numpy')
fun = lambda x: np.reshape( f_tmp(x), (2,))
现在,这当然非常难看,因为每次评估 fun 时都需要应用重塑(可能很多次)。有没有办法避免这个问题? Matrix 类根据定义始终是二维的。我尝试使用sympy 的MutableDenseNDimArray-class,但它们不能与lambdify 一起使用。 (符号变量无法识别)
【问题讨论】:
标签: sympy