2017-07-04 4 views
0

Mon problème est un peu comme this et ce one combiné mais pas tout à fait. Quoi qu'il en soit, ce que j'essaie de faire est de prendre une double intégrale d'une fonction en utilisant sympy pour obtenir la réponse symbolique. Le problème est qu'à l'intérieur de l'élément dérivé et des intégrales, il y a 2 autres fonctions et je ne suis pas sûr de savoir comment montrer qu'elles sont des fonctions et pas seulement des constantes. Voici ce que j'ai jusqu'ici.Comment puis-je résoudre un déférent de premier ordre en utilisant python qui a une autre fonction?

from sympy import * 
import sympy as sp 
sp.init_printing() 

x=sp.Symbol('x') #a and k are constants 
z=sp.Symbol('z') 
k=sp.Symbol('k') 
f=sp.Function('f')(x) 
l=sp.Function('l')(x) 

def dN(x,z): 
    return -N*f*z**(a-2) 

def b(x,z): 
    return l*x*dN 

def c(x,z): 
    return z*l*x*dN 

res=integrate(b,(z,k,float('inf')),(x,0,float('inf'))) 
sp.pprint (res)    
#print(b) 

C'est ce que im en utilisant dn:

enter image description here

C'est l'im intégrale essayant de préforme pour obtenir eqn 12:

enter image description here

Toute aide serait très appréciée.

Répondre

1

Il semble qu'il pourrait y avoir une certaine confusion entre les fonctions sympy et les fonctions python. Lorsque vous définissez b(x, z) qui est une fonction python. Lorsque vous faites référence à b dans votre ligne d'intégration, vous devez fournir les variables qui sont nécessaires pour la fonction, par conséquent integrate(b(x, z)...). La même chose s'applique pour dN qui est appelé dans les fonctions b et c sans args. (Il devrait être ...*dN(x, z).) Dans la fonction dN que vous définissez, vous faites référence à N mais je ne le définis pas, je vous recommande de définir en haut N = sp.Function('N')(x, z). Enfin, vous pouvez utiliser sp.oo pour faire référence à l'infini plutôt que de créer un flottant. représentation de point de même je ne peux pas tester.

Désolé ici. Espérons que ces suggestions vous aider à obtenir sur la bonne voie! :-)

+0

Je l'ai fait pour toutes les fonctions, y compris l, mais il dit l (x) n'est pas appelable. Comme la photo montre la fonction en termes de x ne sera pas intégré. Devrais-je juste essayer de faire le tout en termes de z seulement? –

+0

Je pense que vous devriez utiliser le module ode comme je le démontre [ici] (https://repl.it/JQr3) mais cela ne fonctionne que dans 1D. – smichr

+0

est-il censé prendre si longtemps à courir? –