Topic: Come si definisce una funzione simbolica?  (Letto 42 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline mmoo

  • python unicellularis
  • *
  • Post: 1
  • Punti reputazione: 0
    • Mostra profilo
Come si definisce una funzione simbolica?
« il: Ottobre 15, 2019, 15:25 »
Sto provando a scrivere una macro molto facile per la mia tesi per imparare un po' di python.
Vorrei definire una funzione con 4 parametri in input: due sono  variabili a cui verrà assegnato un valore numerico e due sono variabili simboliche, rispetto a cui poi dovrò integrare la funzione.

Qui c'è il pezzo di codice con cui ho provato a definire la funzione:

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));

in cui v_0 e v_e corrispondono alle variabili che prenderanno valori numerici mentre v_DM e costheta sono le due variabili simboliche che mi serviranno per l'integrazione.
In una funzione diversa ho chiamato la funzione sopra definita nel seguente modo:

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)

Inoltre all'inizio del file ho importato i seguenti moduli:

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

ma quando provo ad eseguire la macro ottengo sempre questo errore:

  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'

Che sto sbagliando?
« Ultima modifica: Ottobre 15, 2019, 15:30 da mmoo »

Offline giovanni106

  • python unicellularis
  • *
  • Post: 14
  • Punti reputazione: 0
    • Mostra profilo
Re:Come si definisce una funzione simbolica?
« Risposta #1 il: Ottobre 15, 2019, 19:02 »
Ciao, ti rispondo brevemente da telefono, nella seconda riga della funzione hai il meno davanti alla parentesi, prova a scrivere -1*( ecc invece.