计算 Python 中符号数组的指数
Evaluation of the exponential of a symbolic array in Python
我正在尝试计算符号数组的指数。基本上我定义了一个数值数组 a
和一个符号变量 x
。然后我定义了一个函数 f
等于两者相乘的指数,并尝试评估给定值 x
:
的结果
import numpy as np
from sympy import *
#Declaration of variables
a=np.array([1, 2])
x = Symbol('x')
f=exp(a*x)
#Function evaluation
f=f.subs(x, 1)
print(f.evalf())
但是出现如下错误:
AttributeError: 'ImmutableDenseNDimArray' object has no attribute '_eval_evalf'
exp()
函数似乎没有为此类操作准备。
我至少知道可以使用 np.exp()
计算数值数组的指数。如果是符号数组,我应该怎么做?
如前所述,您不应混合使用 numpy 和 sympy。您可以使用 sympy 中的 Matrix
而不是 array
,然后将 applyfunc
用于 component-wise 指数:
import sympy as sp
# Declaration of variables
x = sp.Symbol('x')
a = sp.Matrix([1, 2])
f = (a * x).applyfunc(sp.exp)
# Function evaluation
f = f.subs(x, 1)
print(f.evalf())
运行 这段代码我没有得到任何错误。这是我的输出:
Matrix([[2.71828182845905], [7.38905609893065]])
我正在尝试计算符号数组的指数。基本上我定义了一个数值数组 a
和一个符号变量 x
。然后我定义了一个函数 f
等于两者相乘的指数,并尝试评估给定值 x
:
import numpy as np
from sympy import *
#Declaration of variables
a=np.array([1, 2])
x = Symbol('x')
f=exp(a*x)
#Function evaluation
f=f.subs(x, 1)
print(f.evalf())
但是出现如下错误:
AttributeError: 'ImmutableDenseNDimArray' object has no attribute '_eval_evalf'
exp()
函数似乎没有为此类操作准备。
我至少知道可以使用 np.exp()
计算数值数组的指数。如果是符号数组,我应该怎么做?
如前所述,您不应混合使用 numpy 和 sympy。您可以使用 sympy 中的 Matrix
而不是 array
,然后将 applyfunc
用于 component-wise 指数:
import sympy as sp
# Declaration of variables
x = sp.Symbol('x')
a = sp.Matrix([1, 2])
f = (a * x).applyfunc(sp.exp)
# Function evaluation
f = f.subs(x, 1)
print(f.evalf())
运行 这段代码我没有得到任何错误。这是我的输出:
Matrix([[2.71828182845905], [7.38905609893065]])