我不得不说我是python的新手,但我不明白为什么我的代码无法正常工作。 在脚本中,我实现了Lax-Friedrichs-Scheme,这是一种有限体积的方法。 代码的前一半工作正常。但是,在循环i的第二部分,它会中断说“'float'对象不可调用”。
关于什么是错的任何想法?
+ 0.5(U[n,i+1] - 2*U[n,i] + U[n,i-1])
TypeError: 'float' object is not callable
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
.....
for n in range(N-1):
for i in range(I+2):
Exact[n,i] = u_ex(tstep[n], xstep[i], c)
def f(u):
return 0.5*u**2
plt.figure(figsize=(8, 6), dpi=80)
for n in range(N-1):
plt.clf()
U[n,0] = U[n,2] # ghost-point linker Rand
U[n,I+2] = U[n,I] # ghost-point rechter Rand
for i in range(1, I+1):
U[n+1,i] = U[n,i] - 0.5*lam*(f(U[n,i+1]) - f(U[n,i-1])) \
+ 0.5(U[n,i+1] - 2*U[n,i] + U[n,i-1])
plt.plot(xstep, Exact[n,:], linewidth=1.0,color="black", linestyle="--")
plt.plot(xstep, U[n,:], color="blue",linewidth="1.0", linestyle="-")
plt.pause(0.001)