Julia代码在仅读取值而不赋值时更改变量值

Julia代码在仅读取值而不赋值时更改变量值,julia,Julia,首先,是否有人能够重新创建我得到的确切输出?第二,有人能告诉我为什么u的值在这个while循环中变化吗?据我所知,它应该是恒定的,但它继续减少。。。或者,如果没有其他人可以重现这个问题,我将调查硬件错误。我猜这是Julia中的新手用户错误,我尝试了全局和非全局u声明。。。谢谢 Windows 7 Pro,HP Z820,64位,运行Julia 0.4.5 global u=[2.681726086033021]; eo1 = u; tem5 = [9999.9]; ktr = [1]; tsi

首先,是否有人能够重新创建我得到的确切输出?第二,有人能告诉我为什么u的值在这个while循环中变化吗?据我所知,它应该是恒定的,但它继续减少。。。或者,如果没有其他人可以重现这个问题,我将调查硬件错误。我猜这是Julia中的新手用户错误,我尝试了全局和非全局u声明。。。谢谢

Windows 7 Pro,HP Z820,64位,运行Julia 0.4.5

global u=[2.681726086033021];
eo1  = u;
tem5 = [9999.9];
ktr = [1];
tsize=[1];
axnl=[0.1641272464920273];
aynl=[-.08693550068203583];

sineo1 = sin(eo1); #initialize
coseo1 = cos(eo1);

while (maximum(abs(tem5)) >= 1.0e-12 )== 1 && maximum(ktr) <= 10
tem5orig = abs(tem5) .>= 1.0e-12; #we care about updating records *originally* meeting conditions
sineo1[tem5orig] = sin(eo1[tem5orig]);
coseo1[tem5orig] = cos(eo1[tem5orig]);
tem5temp1 = ones(tsize) - coseo1 .* axnl - sineo1 .* aynl;
tem5[tem5orig]  = tem5temp1[tem5orig];
tem5[tem5orig]   = (u[tem5orig] - aynl[tem5orig] .*coseo1[tem5orig] + axnl[tem5orig] .*sineo1[tem5orig] - eo1[tem5orig]) ./tem5[tem5orig];
tem5temp2 = tem5;
if (maximum(abs(tem5temp2)) > 0.95) == 1
    if maximum((abs(tem5temp2) .> 0.95) + (tem5temp2 .> 0) .> 1) == 1
        tem5temp2[((abs(tem5temp2) .> 0.95) + (tem5temp2 .> 0)) .> 1] = 0.95;
    end
    if (maximum((abs(tem5temp2) .> 0.95) + (tem5temp2 .<= 0)) .> 1) == 1
        tem5temp2[((abs(tem5temp2) .> 0.95) + (tem5temp2 .<= 0)) .> 1] = -0.95;
    end
end
tem5[tem5orig] = tem5temp2[tem5orig];
eo1[tem5orig] = eo1[tem5orig] + tem5[tem5orig];
ktrtemp = ktr + 1;
ktr[tem5orig] = ktrtemp[tem5orig];
println(ktr,",",tem5,",",eo1,",",sineo1,",",coseo1,",",u,",",tem5orig)
end


Output:
    [2],[-0.0042672957728621345],[2.6774587902601588],[0.4438285405397952],-0.8961117266291717],[2.6774587902601588],Bool[true]
    [3],[-0.003598989243971466],[2.6738598010161874],[0.4476484617059426],[-0.8942096257211187],[2.6738598010161874],Bool[true]
    [4],[-0.003035319765326468],[2.670824481250861],[0.4508638064529911],[-0.8925927559815393],[2.670824481250861],Bool[true]
    [5],[-0.0025599151808959153],[2.6682645660699653],[0.4535710297874299],[-0.8912201304602417],[2.6682645660699653],Bool[true]
    [6],[-0.0021589606544931365],[2.6661056054154724],[0.4558509890748779],[-0.8900561082086093],[2.6661056054154724],Bool[true]
    [7],[-0.0018208009676989512],[2.6642848044477736],[0.4577715213143546],[-0.8890698702990342],[2.6642848044477736],Bool[true]
    [8],[-0.0015356039646266324],[2.662749200483147],[0.45938958087161175],[-0.8882348861571498],[2.662749200483147],Bool[true]
    [9],[-0.001295076024952105],[2.661454124458195],[0.46075301570977506],[-0.8875283987086542],[2.661454124458195],Bool[true]
    [10],[-0.0010922216912360376],[2.660361902766959],[0.4619020457466296],[-0.8869309444004525],[2.660361902766959],Bool[true]
    [11],[-0.0009211406996768078],[2.659440762067282],[0.4628704952575407],[-0.8864259160358744],[2.659440762067282],Bool[true]
global u=[2.681726806033021];
eo1=u;
tem5=[9999.9];
ktr=[1];
tsize=[1];
axnl=[0.1641272464920273];
aynl=[-.08693550068203583];
sineo1=sin(eo1)#初始化
coseo1=cos(eo1);
而(最大值(abs(tem5))>=1.0e-12)=1和最大值(ktr)=1.0e-12#我们关心更新记录*最初*满足条件
sineo1[tem5orig]=sin(eo1[tem5orig]);
coseo1[tem5orig]=cos(eo1[tem5orig]);
tem5temp1=一个(tsize)-coseo1.*axnl-sineo1.*aynl;
tem5[tem5orig]=tem5temp1[tem5orig];
tem5[tem5orig]=(u[tem5orig]-aynl[tem5orig].-coseo1[tem5orig]+axnl[tem5orig].-sineo1[tem5orig]-eo1[tem5orig])/tem5[tem5orig];
tem5temp2=tem5;
如果(最大值(abs(tem5temp2))>0.95)=1
如果最大值((abs(tem5temp2)。>0.95)+(tem5temp2.>0)。>1)=1
tem5temp2[(abs(tem5temp2.>0.95)+(tem5temp2.>0))。>1]=0.95;
结束
如果(最大值)(abs(tem5temp2)。>0.95)+(tem5temp2.1)==1
tem5temp2[(abs(tem5temp2)。>0.95)+(tem5temp2.1]=-0.95;
结束
结束
tem5[tem5orig]=tem5temp2[tem5orig];
eo1[tem5orig]=eo1[tem5orig]+tem5[tem5orig];
ktrtemp=ktr+1;
ktr[tem5orig]=ktrtemp[tem5orig];
println(ktr,“,”,tem5,“,”,eo1,“,”,sineo1,“,”,coseo1,“,”,u,“,”,tem5orig)
结束
输出:
[2] ,[0.0042672957728621345],[2.6774587902601588],[0.4438285405397952],-0.8961117266291717],[2.6774587902601588],布尔[真]
[3] ,[-0.003598989243971466],[2.673859801016874],[0.4476484617059426],-0.8942096257211187],[2.673859801016874],布尔[真]
[4] ,[-0.003035319765326468],[2.670824481250861],[0.4508638064529911],[0.8925927559815393],[2.670824481250861],布尔[真]
[5] ,[0.0025599151808959153],[2.6682645660699653],[0.4535710297874299],[0.8912201304602417],[2.6682645660699653],布尔[真]
[6] ,[-0.0021589606544931365],[2.6661056054154724],[0.4558509890748779],[0.8900561082086093],[2.6661056054154724],布尔[真]
[7] ,[-0.0018208009676989512],[2.6642848044477736],[0.4577715213143546],-0.8890698702990342],[2.6642848044477736],布尔[真]
[8] ,[-0.0015356039646266324],[2.66274920483147],[0.45938958087161175],-0.8882348861571498],[2.66274920483147],布尔[真]
[9] ,[-0.001295076024952105],[2.661454124458195],[0.46075301570977506],-0.8875283987086542],[2.661454124458195],布尔[真]
[10] ,[-0.0010922216912360376],[2.660361902766959],[0.4619020457466296],-0.886930944004525],[2.660361902766959],布尔[真]
[11] ,[-0.0009211406996768078],[2.659440762067282],[0.4628704952575407],-0.8864259160358744],[2.659440762067282],布尔[真]

eo1
u
引用同一个数组对象。当修改其中一个对象的内容时,另一个对象也会更改,因为它们是同一个对象。如果初始化
eo1=copy(u)
相反,
u
在您修改
eo1
时不会更改,并且
eo1
u
引用相同的数组对象。当您修改其中一个对象的内容时,另一个对象也会更改,因为它们是相同的对象。如果您初始化
eo1=copy(u)
相反,
u
在修改
eo1
时不会更改