实施宽松的Friedrichs方法; Python错误

时间:2019-03-12 09:34:30

标签: python

我不得不说我是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)

0 个答案:

没有答案