Quadpack.error: Mitgelieferte Funktion gibt keinen gültigen Float in Python zurück

Ich möchte eine Funktion in Bezug auf (z) integrieren und (x) und (y) als Argumente machen. Mein Ziel ist es, das Ergebnis der Integration an einer anderen Stelle (x, y) zu erhalten. In diesem Fall sollte ich 16 Integrationswerte erhalten, die (x1, y1), (x1, y2) …, (x2, Y1) … und so weiter Dies ist der Code:

import numpy as np import math import scipy.integrate a = 5 b = 6 xn=np.linspace(0,3,4) yn=np.linspace(3,6,4) x,y=np.ix_(xn,yn) def fun(z,x,y): model=(x**2/a**2+y**2/b**2+z**2/a**2)**0.5 #print(model) return model def int(x,y): int=scipy.integrate.quad(fun,0,10,args=(x,y,))[0] print (int) return int integral = int(x,y) print (integral) 

Aber ich habe diese Fehlermeldung:

  .... int=scipy.integrate.quad(model,0,10,args=(x,y,))[0] File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site- packages/scipy/integrate/quadpack.py", line 254, in quad retval = _quad(func,a,b,args,full_output,epsabs,epsrel,limit,points) File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site- packages/scipy/integrate/quadpack.py", line 319, in _quad return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit) quadpack.error: Supplied function does not return a valid float. 

Bitte könnte jemand mir zeigen, wie man diesen Fehler beheben und danke im voraus.

  • Ersetzen Sie die Konsolenausgabe in Python
  • Django: braucht ImageField einen Dateipfad oder ein aktuelles Bildobjekt?
  • Python: Konvertieren von String zum Zeitstempel mit Mikrosekunden
  • Django: Ändern von Daten mit Benutzereingabe durch benutzerdefinierte Template-Tag?
  • Python-String-Ersatz, alle möglichen Kombinationen # 2
  • Python-Ctypen können keinen langen String-Wert erhalten, der von der .so-Datei zurückgegeben wird
  • Wie installiere ich Pipe auf Python (Fehler: Keine solche Datei oder Verzeichnis)
  • 2d Array von Listen in Python
  • One Solution collect form web for “Quadpack.error: Mitgelieferte Funktion gibt keinen gültigen Float in Python zurück”

    Wie der Fehler nahelegt, sollte Ihre fun einen float aber stattdessen ein 2D-Array zurückgeben:

     [[ 1.11803399 1.20185043 1.30170828 1.41421356] [ 1.13578167 1.21837779 1.31698308 1.42828569] [ 1.18743421 1.26666667 1.36177988 1.46969385] [ 1.26885775 1.34329611 1.43333333 1.53622915]] 

    Die Funktion, die Sie integrieren, sollte an einer beliebigen Stelle im Parameterraum eine einzelne Zahl auswerten.

    Wenn du versuchst, ein N-dimensionales Integral zu machen, kannst du dich bei scipy.integrate.nquad .

    Python ist die beste Programmiersprache der Welt.