有三个数4.23,3.12,2.13,这三个数乘以倍数的积使得积之前的差距最小,三个数乘以的倍数和是1000咋分配

问题描述:

有三个数4.23,3.12,2.13,这三个数乘以倍数的积使得积之前的差距最小,三个数乘以的倍数和是1000咋分配
有三个数4.23,3.12,2.13,这三个数分别乘以倍数的积使得积之前的差距最小,三个数乘以的倍数和是1000.用什么算法分配倍数使得这三个数和他们分配的倍数的积差距最小.
1个回答 分类:数学 2014-12-10

问题解答:

我来补答
设分配倍数为:x,y,z,则:x+y+z=1000,使
[4.23x-(4.23x+3.12y+2.13z)/3]^2+[3.12y-(4.23x+3.12y+2.13z)/3]^2+[2.13z-(4.23x+3.12y+2.13z)/3]^2取最小值.即:(2.82x-1.04y-0.71z)^2+(-1.41x+2.08y-0.71z)^2+(-1.41x-1.04y+1.42z)^2取最小值.利用拉格朗日最小乘数法,引进拉格朗日函数:
L=(2.82x-1.04y-0.71z)^2+(-1.41x+2.08y-0.71z)^2+(-1.41x-1.04y+1.42z)^2+λ(x+y+z-1000)
5.64(2.82x-1.04y-0.71z)-2.82(-1.41x+2.08y-0.71z)-2.82(-1.41x-1.04y+1.42z)+λ=0
-2.08(2.82x-1.04y-0.71z)+4.16(-1.41x+2.08y-0.71z)-2.08(-1.41x-1.04y+1.42z)+λ=0
-1.42(2.82x-1.04y-0.71z)-1.42(-1.41x+2.08y-0.71z)+2.84(-1.41x-1.04y+1.42z)+λ=0
x+y+z=1000
59643/2500*x-5499/625*y-30033/5000*z+λ=0
-5499/625*x+8112/625*y-2769/625*z+λ=0
-30033/5000*x-2769/625*y+15123/2500*z+λ=0
x+y+z=1000
解得:x= 230.3253 y=312.2680 z=457.4067
此时三数与三个倍数之积为:974.2760 ,974.2762,974.2763
再问: 牛人啊,呵呵, 只是倍数分配为整数就好了,乘积有点差距没关系,最好能用程序写出来。
再答: 预先不说清,害得我花费大量的时间,这是最精确的,理论根据也层次高,你应该先采纳。用程序写又是另一范凑,你喜欢用什么语言?告诉我,再说吧。目前正在团体赛,为了团体荣誉,如果你认为我这没错,就赶快采纳。
再问: OK,先采纳,你再写个呗,高手。 java语言。
再答: 我正忙于完成团队任务,等完成后再写,行吗?其实,就取x=230,y=312,z=458,就差不多。如想理论性更强,可用二层循环:for(i=228;i
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识