如果有人可以向我解释我如何使用这段代码在 Scilab 中不断收到错误 21?
If anyone could explain to me how I keep getting error 21 in Scilab using this code?
如标题所说,我的总数组不会添加从我的任何距离数组中获取的任何值,只会 return 1。我的总数组也不会识别任何 i 值并且看起来完全忽略它。
如有任何帮助,请给我建议。
perms_x = perms(x)
perms_y = perms(y)
lngth = length(x)
fctrl = factorial(lngth)
total = zeros(fctrl) //initializes a zero array using factorial as the number of elements
for i=1:fctrl //loop that goes from 1 to factorial value
for k=1:lngth //loops from the start of the array until the length
distance(k) = sqrt((perms_x(i,k)-perms_x(i, k+1))^2 + (perms_y(i, k+1)-perms_y(i, k+1))^2);
total(i) = distance(k) + sum(i);
end
//adds the value of city 1 to 0
distance_1(i) = sqrt(perms_x(i,1)^2+perms_y(i,1)^2);
//adds the value of city n to 0
distance_n(i) = sqrt(perms_x(i,lngth)^2+perms_y(i,lngth)^2);
//adds both values of city 1 and city n to the current sum
total(i) = total(i) + distance_1(i) + distance_n(i);
end
disp (total)
g=min(total)
查看 perms
的手册页表明 perms_x 和 perms_y 的大小为 lngth!-by-lngth
。但是由于你的内部循环从 1
到 lngth
,当你提取 lngth+1
列时,Scilab 引发了越界错误。
内循环应该是
for k=1:lngth-1
如标题所说,我的总数组不会添加从我的任何距离数组中获取的任何值,只会 return 1。我的总数组也不会识别任何 i 值并且看起来完全忽略它。
如有任何帮助,请给我建议。
perms_x = perms(x)
perms_y = perms(y)
lngth = length(x)
fctrl = factorial(lngth)
total = zeros(fctrl) //initializes a zero array using factorial as the number of elements
for i=1:fctrl //loop that goes from 1 to factorial value
for k=1:lngth //loops from the start of the array until the length
distance(k) = sqrt((perms_x(i,k)-perms_x(i, k+1))^2 + (perms_y(i, k+1)-perms_y(i, k+1))^2);
total(i) = distance(k) + sum(i);
end
//adds the value of city 1 to 0
distance_1(i) = sqrt(perms_x(i,1)^2+perms_y(i,1)^2);
//adds the value of city n to 0
distance_n(i) = sqrt(perms_x(i,lngth)^2+perms_y(i,lngth)^2);
//adds both values of city 1 and city n to the current sum
total(i) = total(i) + distance_1(i) + distance_n(i);
end
disp (total)
g=min(total)
查看 perms
的手册页表明 perms_x 和 perms_y 的大小为 lngth!-by-lngth
。但是由于你的内部循环从 1
到 lngth
,当你提取 lngth+1
列时,Scilab 引发了越界错误。
内循环应该是
for k=1:lngth-1