有一个表:
  w     x1   x2    x3   ...
 100   29.4  0.7  100.6
 100   34.6  0.9  101.5
 ...   ...   ...  ...
其中  w是重量,x1,x2,x3是各种含量,各种含量由重量(w)计算
列相加要符合x1=1000,x2=56.9,x3=2000,
怎样计算重量(w)?
请大牛们帮忙设计个算法,不胜感激!

解决方案 »

  1.   

    不好意思,就是说sum(x1)= w1,sum(x2) = w2,sum(x3) = w3,     w1,w2,w3是给出的值,表的意思是100g 的A含有x1,x2,x3的含量,含量变的时候,x1,x2,x3都会变.想要的结果就是调整每一行的重量(w),最终使得sum(x1)= w1,sum(x2) = w2,sum(x3) = w3
      

  2.   

    就是说有很多行,每一行都有一个名为w(重量)的字段,和一些元素的含量,比如钙,铁,锌等等,暂且用x1,x2,x3表示。并且这些元素的含量是通过w来改变的,比如说w是100g,这时候x1=10,x2=5,x3=3,当w=200g的时候,x1=20,x2=10,x3=6,以此类推。又给出了n列x1,x2,x3...的总和w1,w2,w3,目的就是想调整每一条数据的w值,最终同时使sum(x1)=w1,sum(x2)=w2,sum(x3)=w3...(不一定等于,非常接近就可以了),不知道我这次说明白了没有。
      

  3.   

    写的这是啥,
    都没有规则性可参考呀,如何写算法呀>>>>>>>>>
      

  4.   

    让我用数学的符号给你表达:函数sum(ai*wi)=f(x1i,x2i,x3i);四维因素(wi,x1i,x2i,x3i)的定义域为给定的表格内,且(wi,x1i,x2i,x3i)被约束在给定表格的行中及wi确定:s.t.->g(x1i,x2i,x3i)也确定(一一对应),i小于表格行数,ai大于等于0,问1:现已知sum(x1i)=X1,sum(x2i)=X2,sum(x3i)=X3;求ai.问2:在问1上加约束sum(ai*wi)=W;再求ai.
    有一种语言叫:LINGO,语言风格就跟平常的数学优化模型表达式差不多,它可以很好的解决这类优化问题,强于分析,不用自己设计算法,效率很快,但有可缺点不易程序化,如果你要做成程序化得用C,C++,java,C#写更好,但问题是你要设计一个很抽象的算法,如果数据量少的话比如i<1000可以用穷举,ai以0.005步长递增,加上一些sum值的约束减枝,可以很好解决这个问题。如果你的数据量大,可以考虑用MATLAB中的优化工具包,效果没有LINGO高,但可以生成DLL,更或是c代码,如果你汇编强,可以从里面直接提汇编,加到你的程序中去,如果你不会,可以直接用他生的DLL,这样的一个问题是你又要去学习MATLAB的一些知识,有点成本在这里,但如果你是一个算法迷,你可以在前面说的那个方法,在目前没有更好的办法时,加入一些好的数据结构或是最优堆等,从一些侧面加速算法。你也可以考虑加入一些高斯收敛等算法,从数学逻辑上推出一个等价的简易模型,但这要求你的数学能力。
      

  5.   

    将LZ的条件改写成为:
    W    A1    A2   ...  An
    ----------------------------
    w1   a11   a21  ...  an1
    w2   a12   a22  ...  an2
    ...
    wm   a1m   a2m  ...  anm
    目标:
    W    A1    A2   ...  An
    ----------------------------
    --   b1    b2   ...  bn则现在要求序列X
    x1
    x2
    ...
    xm使得下列式子成立:
    x1*a11+x2*a12+...+xm*a1m=b1
    x1*a21+x2*a22+...+xm*a2m=b2
    ...
    x1*an1+x2*an2+...+xm*anm=bn令矩阵A
       | a11  a12 ... a1m |
    A= | a21  a22 ... a2m |
       |...               |
       | an1  an2 ... anm |X= |x1  x2 ... xm|B= |b1  b2 ... bn|则上述方程可写为求向量X的矩阵方程
    AX^=B^
    解法多多,最简单的有Gauss消去法。