如何在python中定义符号函数?

2024-10-02 00:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的论文写一个非常简单的宏。你知道吗

我想定义一个带有4个输入参数的符号函数:其中两个对应于数值,但另外两个是用于积分函数的符号变量。你知道吗

下面是函数的代码:

def VelocityDistribution_notNorm(v_DM,costheta,v_0,v_e):
    return exp(-(v_DM**2 + v_e**2 + 2*v_DM*v_e*costheta)/(v_0**2));

v_0和v_e对应于数值,v_DM和costheta是两个符号变量。 在另一个函数中,我按以下方式调用了前一个函数:

v_0 = 220 #km/s
v_e = 232 #km/s
v_DM = Symbol("v_DM")
cosTheta = Symbol("cosTheta")
integrand_0 = v_DM * VelocityDistribution_notNorm(v_DM,v_e,v_0,cosTheta)

我还导入了以下模块:

from math import *
from sympy import *
from sympy.functions.elementary.exponential import *
from scipy import *
from scipy.constants import *

但当我尝试运行宏时,出现以下错误:

  File "prova.py", line 38, in VelocityDistribution_notNorm
    return exp(-(v_DM**2 + v_e**2 + 2*v_DM*v_e*costheta)/(v_0**2));
AttributeError: 'Add' object has no attribute 'exp'

我做错了什么?你知道吗


Tags: 函数fromimportreturn符号dmscipysymbol
2条回答

函数expmath包中。使用前导入:

from math import exp

我觉得你把符号函数和显式函数混合在一起了。你可以通过不从数学中导入任何东西来解决这个问题。这就是为什么一般建议不要这样做from xyz import *

from sympy import *
import scipy

def VelocityDistribution_notNorm(v_DM,costheta,v_0,v_e):
    return exp(-(v_DM**2 + v_e**2 + 2*v_DM*v_e*costheta)/(v_0**2));

v_0 = 220 #km/s
v_e = 232 #km/s
v_DM = Symbol("v_DM")
cosTheta = Symbol("cosTheta")
integrand_0 = VelocityDistribution_notNorm(v_DM,v_e,v_0,cosTheta)

相关问题 更多 >

    热门问题