错误发生的根源,并改正之。
〖目的〗
● 正确理解sum 的工作机理。 ● reshape 的应用。 〖解答〗
(1)企图用以下程序完成题目要求。
for k=10:-1:1 A=reshape(1:10*k,k,10);
Sa(k,:)=sum(A);
end Sa Sa =
55 55 55 55 55 55 55 55 55 55 3 7 11 15 19 23 27 31 35 39 6 15 24 33 42 51 60 69 78 87 10 26 42 58 74 90 106 122 138 154 15 40 65 90 115 140 165 190 215 240 21 57 93 129 165 201 237 273 309 345 28 77 126 175 224 273 322 371 420 469 36 100 164 228 292 356 420 484 548 612 45 126 207 288 369 450 531 612 693 774 55 155 255 355 455 555 655 755 855 955
(2)正确性分析
除k=1外,计算所得Sa 所有行的结果都正确。但k=1时,]10,,2,1[1 A ,Sa 的第
1行应该与1A 相同。
上述程序的错误是对sum 理解不正确。sum 对二维数组,求和按列施行;而对一维数组,不管行数组或列数组,总是求那数组所有元素的和。 正确的程序应该写成
for k=10:-1:1 A=reshape(1:10*k,k,10); Sa(k,:)=sum(A); if k==1
Sa(k,:)=A;
end
end Sa Sa =
1 2 3 4 5 6 7 8 9 10 3 7 11 15 19 23 27 31 35 39 6 15 24 33 42 51 60 69 78 87