TypeError: unsupported operand type(s) for ^: 'numpy.float64' and 'numpy.float64'
14,780
The caret operator (^) is not exponentiation. It is bitwise XOR, which only makes sense for integers. You want **
instead.
Author by
Mlle Blanche
Updated on June 28, 2022Comments
-
Mlle Blanche almost 2 years
I just started programming in Python and am very new to Numpy packages... I'm still trying to get a hang of it. I am trying to slove a function with the euler method.
Here is my 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()
I do not get along with the similar solutions for such problems. Here is my 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'
Anyone know what could be wrong or have any suggestions?