差异之间的单一计算平方和之和()和一个循环

5视图(30天)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
你好,我是计算平方和在C和MATLAB在单精度和指出一些差异。我想知道如果任何人都可以告诉我下面的行为。怀疑浮点关联问题,但似乎仍然有点奇怪……
数字在我的数组是“合理的”好了,从一个单精度矩阵列由MATLAB生成的。差异被发现在这里很常见,导致大量相同的算法用C和MATLAB之间的差异。
回答下面显示的代码:
ans =
4.0864482
4.0864477
4.0864482
4.0864482
代码复制:
clc
格式
一个= ([-0.112033270,0.153425455,-0.751111090,-0.129932076,0.206365064,-0.871111095,0.000000000,
0.000000000,0.000000000,0.000662919,-0.000005372,0.004444445,0.002651675,-0.000085950,
0.017777778,0.005966269,-0.000435120,0.039999999,0.010606701,-0.001375194,0.071111113,
0.016572969,-0.003357407,0.111111112,0.023865076,-0.006961920,0.159999996,0.032483019,
-0.012897816,0.217777774,0.042426802,-0.022003105,0.284444451,0.053696420,-0.035244718,
0.360000014,0.066291876,-0.053718518,0.444444448,0.080213174,-0.078649282,0.537777781,
0.095460303,-0.111390717,0.639999986,0.112033270,-0.153425455,0.751111090,0.129932076,
-0.206365064,0.871111095]);
%方法一(matlab代码)
r1 =(^ 2)总和;
%方法两个(C)中完成
r2 =单(0);
i = 1:长度(a)
r2 = r2 +(我)^ 2;
结束
%方法3(变异,正确答案(为什么?)
r3 =单(0);
i = 1:长度(a)
x =(我)^ 2;
r3 = r3 + x;
结束
%方法4(为什么双(0)改变——单身优先?)
r4 =双(0);
i = 1:长度(a)
r4 = r4 +(我)^ 2;
结束
显示器((r1、r2、r3、r4))
4评论

登录置评。

答案(1)

骑自行车的人
骑自行车的人 2013年8月20日
你用的什么版本的MATLAB ?我得到
ans =
4.0864482
4.0864482
4.0864482
4.0864482
从你的代码,使用OS X 10.8.4 R2013a。
1评论
乔纳森·柯里
乔纳森·柯里 2013年8月20日
编辑:乔纳森·柯里 2013年8月20日
你好,是的只是检查在另一个电脑,我得到正确的答案在Matlab 2013 64位,但错误的答案在2013年一个32位(Win64)…别人能重复一下这个结果吗?

登录置评。

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!