"'努比·恩达雷“对象不可调用”

2024-10-03 21:33:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码有问题。我想得到一个模型的参考解决方案,该模型将描述熊和鳟鱼的种群及其相互联系。在

我找不到我做错了什么,但是python调用了三行有问题的代码,并以错误结束'努比·恩达雷“对象不可调用”。我做错什么了?在

import matplotlib.pyplot as plt 
import numpy as np
from scipy.interpolate import interp1d

def referenz_loesung(f, ref_loeser, x0, t0, T):
    print "Berechne Referenzloesung..."
    h_ref = 0.0001
    #it mentions the following line as problematic
    t_punkte, x_punkte = ref_loeser(f, x0, t0, T, h_ref) #it mentions this line as problematic

    print "Erstelle Funktionen aus Referenzloesungen mit Hilfe von Splines."
    a = interp1d(t_punkte, x_punkte[: , 0])
    b = interp1d(t_punkte, x_punkte[: , 1])
    return a, b


if __name__ == "__main__":
    def f(x, t): # Funktion aus vorherigen Uebungen der DGL: x'(t) = f(x(t), t)
        y = np.zeros(2)
        y[0] = -2*x[0] + 10 * x[1]
        y[1] = -x[0]
        return y

    x0 = np.array([1., 0.])
    t0 = 0
    T = 10
    h = 0.5

    from unsersolver import integriere
    #it mentions the following line as problematic
    t_punkte, x_werte = integriere (f, x0, t0, T, h) 

    from implEuler import integriere as ref_loeser 
    #it mentions the following line as problematic
    x1_ref, x2_ref = referenz_loesung(f,ref_loeser, x0, t0, T)
    ref_punkte = np.linspace(t0, T, 1000)

    from woche1_1_m import auswerten_nx1
    ref_werte1 = auswerten_nx1(x1_ref, ref_punkte)
    ref_werte2 = auswerten_nx1(x2_ref, ref_punkte)

我导入的东西来自前几周的其他文件,它们都能正常工作。 你知道我能做什么吗?我刚开始学习python,所以我真的不知道。 谢谢!在


Tags: thefromimportrefasnplineit
3条回答

如果您可以发布integriere()或ref_loeser()的代码,则会更有帮助。 根据我提供的信息,我要求您尝试追溯问题的根源:

问题的开始是t_punkte, x_werte = integriere(f, x0, t0, T, h),你说它给出了一个numpy错误,而且由于传递给它的惟一numpy参数是x0,所以我建议检查一下integriere()代码中x0的使用情况。在

接下来,我建议不要将函数作为参数传递,我不认为这是一个标准约定。您可以在refrenz_loesung()函数调用之外定义一个def ref_loeser(parameters..),然后像以前一样调用它。在

由于referenz_loesung()调用了与^{相同的ref_loeser(),所以我强烈建议您检查这个函数中的代码。在

祝你好运!在

x_lsg = berechne_nullstelle(x_werte(n-1))<;---错误

x_lsg = berechne_nullstelle(x_werte[n-1])有用吗?在

x_werte是一个ND数组,您需要访问n-1元素,请使用x\u werte[n-1]。 ()用于函数调用,因此python解释器假设您调用的是努比.ndarry所以就犯了这个错误

例如,如果在代码中放入x0(),则会出现此错误。如果没有其他模块的来源,我们不可能知道真正的错误是什么。在

我最好的猜测是:是否有可能您以错误的顺序得到了integriere的参数?如果是这样的话,也许那个函数试图调用参数,期望它是一个函数,但是因为你在那个参数中放了一个numpy数组,它反而被“called”了?在

相关问题 更多 >