Julia MethodError指向一个常量

Julia MethodError指向一个常量,julia,Julia,我做了一个函数,可以找到一组微分方程的雅可比矩阵 global alpha = 1 global gamma = 0.001 global s = -0.5 global delta = 0.1 global k_1 = 0.01 global k_2 = 0.02 global k_3 = 0.008 # medium secretion global k_4 = 10^-2 global N_0 = 10^6 global m = k_4 * N_0 function calc_jaco

我做了一个函数,可以找到一组微分方程的雅可比矩阵

global alpha = 1
global gamma = 0.001
global s = -0.5
global delta = 0.1
global k_1 = 0.01
global k_2 = 0.02
global k_3 = 0.008 # medium secretion
global k_4 = 10^-2
global N_0 = 10^6
global m = k_4 * N_0


function calc_jacobian(a,b,c,g)

    jac = [[-k_1 - gamma + alpha*(1 + s)*(1 - ((1/N_0)*(2*a + b + c))), k_2 + alpha*(1 + s)*a*(-1/N_0), alpha*(1 + s)*a*(-1/N_0), 0],[k_1, -k_2 - k_3 - gamma, k_4*g, k_4*c],[alpha*(1 + s)*b*(-1/N_0) + alpha*c*(-1/N_0), alpha*(1 + s)*(1 - ((1/N_0)*(a + 2*b + c))) + alpha*c*(-1/N_0) + k_4, alpha*(1 + s)*b*(-1/N_0) + alpha*(1-((1/N_0)*(a + b + 2*c))) + k_4*g - gamma, -k_4*c],[gamma*delta, gamma, -k_4*g, -k_4*c - gamma]]

    return jac
end

calc_jacobian(1.0,1.0,0.0,1.0)
调用该函数时,我得到一个MethodError:

MethodError: objects of type Float64 are not callable
in top-level scope at steady_state.jl:20
in calc_jacobian at steady_state.jl:4
state_state.jl是文件名


为什么会出现MethodError,为什么会在错误消息中提到行
global delta=0.1
。也许重新启动Julia,确保您从一开始就对所有内容进行评估?

欢迎Sanji!我通常会在执行以下操作时出错:

a = .3
b = 10
c = b + a(5 + b)
用星号乘以
a
(…)


我猜出现这一行是因为您可能在某个时候定义了没有delta*…的函数。

谢谢您的帮助。重新启动确实有帮助。我仍然很好奇为什么会出现这个错误。我运行了一些代码,这些代码的增量与常量的增量相同。非常感谢您的解释,但似乎没有增量我就没有函数了。。。这是我第一次在这里用它。但是,我以
[a b c;de…]
的形式重写了矩阵,而不是
[[a,b,c],[d,e,…]
而没有任何更改,相同的代码运行时没有抛出任何错误。我似乎无法理解这种行为。这是可以理解的——因为Julia让你边走边定义函数,有时你会被困在一直调用前一段时间定义的错误函数的地方。我想这就是为什么有时重新启动并再次运行代码会起作用的原因——您将不再调用那些不正确的方法。