TypeError: unsupported operand type(s) de ^: 'numpy.float64' et 'numpy.float64'
Je viens de commencer la programmation en Python et je suis très nouveau pour Numpy paquets... je suis encore à essayer d'obtenir un blocage de celui-ci. Je suis en train de slove d'une fonction avec la méthode d'euler.
Voici mon code:
Z=4
B=8
U=1
C=4
a,b=(0.0,10.0)
n=2000
x0=-1.0
t=linspace (a,b,n)
#-----------------------------------------------------------------------------
def euler (f,x0,t):
n=len (t)
x=np.array(n*[x0,])
for i in xrange (n-1):
float (x[i] + ( t[i+1] - t[i] ) * f( x[i], t[i] ))
return x
#---------------------------------------------------------------------------------
if __name__=="__main__":
def f(x,t):
return float((Z)*[-(1/6)*B*C*x^3+0.5*U*t^2])
#numerical solutions
x_euler=euler(f,x0,t)
#figure
plt.plot (t,x_euler, "b")
xlabel (t)
ylabel (x)
legend ("Euler")
show()
Je ne m'entends pas avec la même des solutions à ces problèmes. Voici mon Traceback:
Traceback (most recent call last):
File "C:\Python27\testeuler.py", line 45, in <module>
x_euler=euler(f,x0,t)
File "C:\Python27\testeuler.py", line 31, in euler
float (x[i] + ( t[i+1] - t[i] ) * f( x[i], t[i] ))
File "C:\Python27\testeuler.py", line 41, in f
return float((Z)*[-(1/6)*B*C*x^3+0.5*U*t^2])
TypeError: unsupported operand type(s) for ^: 'numpy.float64' and 'numpy.float64'
Ce que quelqu'un sait quel peut être le problème ou avez des suggestions?
Merci pour votre réponse!
OriginalL'auteur Mlle Blanche | 2015-05-06
Vous devez vous connecter pour publier un commentaire.
Le signe de l'opérateur (^) n'est pas l'exponentiation. Il est XOR au niveau du bit, qui n'a de sens que pour les entiers. Vous souhaitez
**
à la place.OriginalL'auteur Kevin