Julia 茱莉亚及;函数-命名错误
我不明白为什么下面的代码片段在Julia中返回一个NoMethodErrorJulia 茱莉亚及;函数-命名错误,julia,Julia,我不明白为什么下面的代码片段在Julia中返回一个NoMethodError using Calculus nx = 101 nt = 101 dx = 2*pi / (nx - 1) nu = 0.07 dt = dx*nu function init(x, nu, t) phi = exp( -x^2 / 4.0*nu ) + exp( -(x - 2.0*pi)^2 / 4.0*nu ) dphi_dx = derivative(phi) u = ( 2.
using Calculus
nx = 101
nt = 101
dx = 2*pi / (nx - 1)
nu = 0.07
dt = dx*nu
function init(x, nu, t)
phi = exp( -x^2 / 4.0*nu ) + exp( -(x - 2.0*pi)^2 / 4.0*nu )
dphi_dx = derivative(phi)
u = ( 2.0*nu /phi )*dphi_dx + 4.0
return u
end
x = range(0.0,stop=2*pi,length=nx)
t = 0.0
u = [init(x0,nu,t) for x0 in x]
我的目标是用函数init计算的值填充名为u的数组的元素。u阵列应具有nx元素,u在0.0和2*pi范围内的每个x值处计算。下次请发布错误消息,并在之前对其进行详细说明,以便您可以尝试自己发现错误 我真的不知道
演算
软件包,但似乎你用错了。您的phi
是一个数字,而不是一个函数。你不能只从一个数字上求导数。换成
phi = x -> exp( -x^2 / 4.0*nu ) + exp( -(x - 2.0*pi)^2 / 4.0*nu )
然后在参数x
处调用phi
和导数
,因此phi(x)
和导数(phi,x)
或dphi_x(x)
。由于我对calculation
包了解不多,您应该再次查看它的文档,以验证派生命令是否正是您想要的那样
额外说明:Julia中还有一些元素操作(类似于Matlab),可以将函数应用于整个数组。您也可以编写
init.(x,nu,t)
,而不是[init(x0,nu,t)表示x中的x0]
,您是对的,我遇到的问题是由于在微积分包中不正确地使用了导数函数。将phi和dphi_dx的定义更改为phi(x)=exp(-x^2/4.0*nu)+exp(-x-2.0*pi)^2/4.0*nu)
和dphi_dx=导数(phi)
似乎解决了这个问题,因此当我将值x0传递给函数init时,u的计算结果是正确的。谢谢你指出我的错误。