簡體   English   中英

如何在 python 中定義符號 function?

[英]How can I define a symbolic function in python?

我正在為我的論文寫一個非常簡單的宏。

我想用 4 個輸入參數定義一個符號 function:其中兩個對應於數值,但另外兩個是符號變量,將用於集成 function。

這是function的代碼:

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 和 cotheta 是兩個符號變量。 在不同的 function 中,我通過以下方式調用了之前的 function:

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'

我做錯了什么?

function expmath package 中。 使用前導入:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM