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:

  • Um eine Liste in eine 2D-Matrix in Python zu konvertieren
  • Zeichnen von farbigen Bäumen mit NetworkX
  • Umbenennen von mehreren Dateien in einem Verzeichnis mit Python
  • TypeError: return arrays muss von ArrayType mit lambdify von sympy in python sein
  • Versuche, das Bild aus der Bild-URL zu kratzen (mit Python-Urllib), aber bekommst html
  • Python-Glättung von Daten
  •   .... 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.

    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.