[已解决] matlab官网科迪的一个题目,立方和与平方和

[复制链接]
0什么都不懂 发表于 2021-1-13 17:01:24
本帖最后由 0什么都不懂 于 2021-1-13 17:03 编辑

程序如下:
n = 123456;
format short;
cube = 0;
sum = 0;
for i = 1:n
    cube = cube + i^3;
    sum = sum + i;
end
y = (cube*2 - sum^2)/(n/2);
y = uint64(y);

结果:y = 940835389047074
给出的结果是:y = 940835389047072

最佳答案


TouAkira 发表于 2021-1-13 17:59:54
机器精度的缘故,当数值大到一定程度后,存储的时候就会有误差了,对待大数运算需要特别谨慎,该用符号型变量就用符号型
  1. n = sym( 123456 );
  2. v = 1 : 1 : n;
  3. y = ( sum( v.^3 ) * 2 - sum( v ).^2 ) / ( n / 2 )
复制代码

y = 940835389047072
回复此楼

7 条回复


TouAkira 发表于 2021-1-13 17:59:54
机器精度的缘故,当数值大到一定程度后,存储的时候就会有误差了,对待大数运算需要特别谨慎,该用符号型变量就用符号型
  1. n = sym( 123456 );
  2. v = 1 : 1 : n;
  3. y = ( sum( v.^3 ) * 2 - sum( v ).^2 ) / ( n / 2 )
复制代码

y = 940835389047072
回复此楼

hyh0lh 发表于 2021-1-13 18:11:31
能具体说一下你的题目要求吗,只有立方和与平方和?

0什么都不懂 发表于 2021-1-13 18:23:34
hyh0lh 发表于 2021-1-13 18:11
能具体说一下你的题目要求吗,只有立方和与平方和?

Given the positive integers 1:n, can you:
1. Compute twice the sum of the cubes of those numbers.
2. Subtract the square of the sum of those numbers.
3. Divide that result by n/2.

0什么都不懂 发表于 2021-1-13 18:24:12
TouAkira 发表于 2021-1-13 17:59
机器精度的缘故,当数值大到一定程度后,存储的时候就会有误差了,对待大数运算需要特别谨慎,该用符号型变 ...

那具体该怎么修改呢?

hyh0lh 发表于 2021-1-13 18:36:12
已经有高手给你正确答案了:sym

0什么都不懂 发表于 2021-1-13 18:42:07
hyh0lh 发表于 2021-1-13 18:36
已经有高手给你正确答案了:sym

好的,谢谢啦

0什么都不懂 发表于 2021-1-13 18:42:47
TouAkira 发表于 2021-1-13 17:59
机器精度的缘故,当数值大到一定程度后,存储的时候就会有误差了,对待大数运算需要特别谨慎,该用符号型变 ...

谢谢啦,终于搞懂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表