2017-01-02 1 views
0
import numpy 

import matplotlib.pyplot as plt 

from scipy import integrate 

def f(x,y): 
    return x*y + x**2 

def integral(x,y): 
    I = integrate.quad(f, 0, x, args=(y,))[0] 
    return I 

def gau(x,y): 
    return (1+x)*integral(x,y) 


xlist = numpy.linspace(-3.0, 3.0, 100) 
ylist = numpy.linspace(-3.0, 3.0, 100) 
X, Y = numpy.meshgrid(xlist, ylist) 
Z = gau(2, Y) 

print(Z) 

Je continue à faire passer le message d'erreur « fourni fonction ne retourne pas un flotteur valide. », je pense que le problème est que j'essaie de passer un tableau à la fonction quad. Je pensais à l'évaluation de l'intégrale pour chaque entrée du tableau avec quelque chose comme ça:Python: Évaluation intégrale pour le tableau

yi=numpy.linspace(-3.0,3.0,100) 
for i, item in enumerate(yi): 
    return integral[i]=integrate.quad(f,0,x,args=(yi,))[0] 

Il ne fonctionne pas, mais est-il de la bonne façon? D'autres/meilleures suggestions?

Répondre

0

Si votre f() ne fournit pas un flottant valide lors du passage d'un tableau, pas le scipy.integral lui-même; Pourquoi passez-vous un tableau à votre f()?