0
x=[3 1 1 -5 -2 0 1 2 -2 2];
A=[4 2 6; 0 1 -3; -2 5 -2];
B=[-2 3 2; 1 5 5; -3 1 0];
sum=0;
for i=2:3
sum_j=0;
for j=1:2
sum_j=sum_j+A(1,j)*B(j,i);
end
sum=sum+A(2,i)*sum_j;
end
fprintf('(c) %g\n',sum);
>> (c) -32
-32は正解です。しかし、ループの外側でsum_j = 0を初期化すると、別の値が返されます。次のループで変数を初期化するMATLAB
sum=0;
sum_j=0;
for i=2:3
for j=1:2
sum_j=sum_j+A(1,j)*B(j,i);
end
sum=sum+A(2,i)*sum_j;
end
fprintf('(c) %g\n',sum);
>> (c) -98
これはなぜ起こっているのですか?
これは何が起こっているのかは明らかです。最初に、すべての "i"に対してsum_jをゼロに設定し、2番目の場所ではsum_jをゼロに設定します。 –