Julia在循环中更新变量

Julia在循环中更新变量,julia,Julia,我有一个编写值函数迭代的代码。代码是从Matlab翻译而来的。第一次迭代运行得很好,但在第二次迭代中,旧的值函数在某个点错误地更新,尽管第二次迭代仍然从matlab生成等效的结果 首先,我在这里声明变量: sigma = 1.5; delta = 0.1; beta = 0.95; alpha = 0.30; ks = 1.0; csy = 0.2; kmin = 0.1*ks; kmax = 1.1*ks; nbk = 20; devk = (kmax-kmin)/(nb

我有一个编写值函数迭代的代码。代码是从Matlab翻译而来的。第一次迭代运行得很好,但在第二次迭代中,旧的值函数在某个点错误地更新,尽管第二次迭代仍然从matlab生成等效的结果

首先,我在这里声明变量:

sigma = 1.5;
delta = 0.1;
beta  = 0.95;
alpha = 0.30;
ks    = 1.0;
csy   = 0.2;
kmin  = 0.1*ks;
kmax  = 1.1*ks;
nbk   = 20;
devk  = (kmax-kmin)/(nbk-1);
k     = linspace(kmin,kmax,nbk)';
v0    = zeros(nbk,1);
v0    = (csy*k.^alpha).^(1-sigma);
v0    = v0';
v     = zeros(nbk,1);
ik1   = zeros(nbk,1);
iter  = 1;
crit  = 1;
tol   = 1e-6;
其次,我执行这个(这是一个while循环),但我更喜欢一个接一个地执行它:

第一次运行此第二部分时,正确打印v和错误:

[-9.41322; -6.19362; -4.35414; -3.01282; -1.95198; -1.07545; -0.330322; 0.316098; 0.885574; 1.39337; 1.85067; 2.29198; 2.69438; 3.06364; 3.40432; 3.72013; 4.0141; 4.28875; 4.54618; 4.79853]
error:5.124021319754114
第二次运行它会导致一个错误,因为现在v0变成了我不知道为什么等于v(尽管v仍然正确生成,就像在Matlab中一样):


因此,误差为零,两次迭代后不应出现这种情况。有什么想法吗?

当您设置
v0=v
时,两个变量都指向内存中的同一区域,也就是说,当您试图修改一个变量时,您实际上同时修改了这两个变量

使用
复制!(v0,v)
v
的内容复制到
v0
中。然后可以独立修改阵列

[-9.41322; -6.19362; -4.35414; -3.01282; -1.95198; -1.07545; -0.330322; 0.316098; 0.885574; 1.39337; 1.85067; 2.29198; 2.69438; 3.06364; 3.40432; 3.72013; 4.0141; 4.28875; 4.54618; 4.79853]
error:5.124021319754114
[-7.06807; -4.7177; -3.24724; -2.16729; -1.30218; -0.578569; 0.0429673; 0.586699; 1.09022; 1.54641; 1.98317; 2.37955; 2.7416; 3.07412; 3.38098; 3.66532; 3.92974; 4.18466; 4.42981; 4.66936]
error:0.0