查找a_1 ^ 2 + a_2 ^ 2 + ... a_n ^ 2 = 1的所有a_i的最快方法是什么

时间:2014-06-03 01:54:02

标签: matlab math

这是我最近在数学问题中遇到的一个编程问题。

所以给定n,我希望找到整数a_i (1<=i<=n)的所有组合 a_1^2+a_2^2+...a_n^2 = 1

编辑:将a_i限制为小数点后十位(即增量0.01)。例如,如果n = 3,我将a_1 = 0.01a_2 = 0.01a_3 = sqrt(1-a_1^2-a_2^2);然后增加a_2 = 0.02,依此类推。

我无法n嵌套for循环,因为n可能是10位数字(夸大)。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

尝试扩大问题 制作一个整数方块的列表/数组 Squares = {1, 4, 9, 16, .., 9801, 10000}

查找N个列表值的组合以生成10000.您可以使用动态编程来获得解决方案 N = 8的可能组合的例子:

9801+100+64+25+4+4+1+1

对应重新缩放的数字

0.99 0.1 0.08 0.05 0.02 0.02 0.01 0.01 

请注意,对于较大的N值,组合数量会非常大