2016-05-04 10 views

risposta

7

La mia ipotesi è un'espressione 1.5 è trattata come un punto fluttuante, che è impreciso. Vorresti invece una rappresentazione simbolica (esatta). (Immagino che se tu fossi dietro un integrale computazionale, un punto in virgola mobile probabilmente andrebbe bene, generalmente, come una libreria matematica che supporti un integrale computazionale userebbe tipicamente un metodo di approssimazione integrale per calcolare l'integrale.) Se devi fare un arbitrario razionale esponenti, considera l'utilizzo di sympy.Rational. Here's una risposta rilevante su StackOverflow che sembra supportare questo. Penso che la documentazione per sympy.Rational sia here. Si può provare questo codice modificato here:

#Calculate Calculus 
import sympy 
frac = sympy.Rational 
x = sympy.Symbol('x') 
f = (6-x*x)**(frac('1.5')) 
f.integrate() 
+0

ancora alzare errore sulla mia macchina. ma funziona su quell'app. – Pythoner

+0

@PythonNewHand Sospetto che sia correlato al tuo ambiente, quindi. Il mio consiglio è di controllare la tua versione di Python vs. Sympy (assicurati che siano compatibili tra loro e il tuo sistema operativo/computer). Prova anche quelle versioni esatte su un diverso computer e/o sistema operativo per isolare il problema. Non so molto su Python, ma potrebbe essere correlato a cose come configurazione/installazione come variabili PATH o qualcosa del genere. Dal momento che questo funziona online, i problemi relativi all'ambiente costituiscono una domanda diversa, probabilmente meglio formulata come domanda a parte, ma ho fatto del mio meglio, qui. In bocca al lupo! –

+0

@PythonNewHand Confermo che la modifica a 'sympy.Rational ('1.5')' porta al risultato corretto in SymPy 1.0. Un aggiornamento potrebbe essere in ordine. –

2

La risposta precedente è giusto, sto solo postando il mio risultato finale qui

import sympy 
frac = sympy.Rational 
x = sympy.symbols('x') 
f1 = (x+3)/(6-x**2)**(frac('1.5')) 
f1.integrate() 
Problemi correlati