mathematica 发表于 2010-8-22 14:27:29

然后把上面代码的第25行改为"num01>158496.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
求出来的解是
                     Variable         Value      Reduced Cost
                        NUM01      216973.0            0.000000
                        NUM02      236204.0            0.000000
                        NUM03      453177.0            0.000000

mathematica 发表于 2010-8-22 14:28:49

然后把上面代码的第25行改为"num01>216973.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
求出来的解是
                     Variable         Value      Reduced Cost
                        NUM01      287694.0            0.000000
                        NUM02      247205.0            0.000000
                        NUM03      534899.0            0.000000

mathematica 发表于 2010-8-22 14:30:05

然后把上面代码的第25行改为"num01>287694.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
求出来的解是
                     Variable         Value      Reduced Cost
                        NUM01      325971.0            0.000000
                        NUM02      315306.0            0.000000
                        NUM03      641277.0            0.000000

mathematica 发表于 2010-8-22 14:31:18

然后把上面代码的第25行改为"num01>325971.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
求出来的解是
                     Variable         Value      Reduced Cost
                        NUM01      371482.0            0.000000
                        NUM02      321306.0            0.000000
                        NUM03      692788.0            0.000000

mathematica 发表于 2010-8-22 14:32:24

然后把上面代码的第25行改为"num01>371482.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
求出来的解是
                     Variable         Value      Reduced Cost
                        NUM01      386592.0            0.000000
                        NUM02      326307.0            0.000000
                        NUM03      712899.0            0.000000

mathematica 发表于 2010-8-22 14:39:23

然后把上面代码的第25行改为"num01>386592.5;"(注意:需要以英文的分号结尾,绝对不能是中文的分号.
这回lingo11.0告诉你"no feasible solution",于是数字num01只存在6种情况,你可以用同样的办法确定num02,由于num03是num01与num02的和,所以只需要再确定一下num02,当然lingo的长处是求解最优化方面的问题,在这个题目上,用lingo求解并非它所擅长的..如果有一种语言能够像c++那样提供置换的话,那么也能够很快地求解出来.
如果你的C++很厉害的话,可以试着用c++求解下面的问题:
钢管下料方案 http://zhidao.baidu.com/question/158299137.html
这个问题没有答案,至少没有人提供c++方面的答案,你可以试一试,这个题目用lingo是很容易求解的.

wayne 发表于 2010-8-22 15:09:31

46# mathematica
不错,呵呵,是6个 ,我还可以吧,没怎么刁难你,
在这个题目上,用lingo求解并非它所擅长的
知道就好,我记得我最初改动了一个地方,就一下子打印出一堆的可行解,都滚屏了很长时间,可惜忘了存了,我要是把那个拿出来,你未必能坚持的走下来滴,:lol 。

wayne 发表于 2010-8-22 15:17:42

比如,这个,SIRLEE+URCOOL= VIOLET(李先生,你是很酷的紫罗兰),就有28组解

mathematica 发表于 2012-4-26 10:47:10

/*此程序使用pari/gp运行*/
/*程序编制时间:2012年4月26日10:22:23*/
/*在pari/gp中,如果输入O=0(大写字母O不能被赋值成数字0)这样的赋值语句,将出现错误,至于
为什么O不能成为变量,不知道为什么,这是个很奇怪的状况*/
/*大括号似乎是不可少的*/
{
    for(x=1,10!,/*给出所有可能的排列,对每一个排列一一穷举*/
      /*每次给出一个排列*/
      z=numtoperm(10,x);
      /*形成10个字母,如果数字是10,则变成0*/
      c=z;if(c==10,c=0);
      l=z;if(l==10,l=0);
      o=z;if(o==10,o=0);
      v=z;if(v==10,v=0);
      e=z;if(e==10,e=0);
      r=z;if(r==10,r=0);
      u=z;if(u==10,u=0);
      s=z;if(s==10,s=0);
      i=z;if(i==10,i=0);
      t=z;if(t==10,t=0);
      /*形成三个数*/
      clover=c*10^5+l*10^4+o*10^3+v*10^2+e*10^1+r;
      crocus=c*10^5+r*10^4+o*10^3+c*10^2+u*10^1+s;
      violet=v*10^5+i*10^4+o*10^3+l*10^2+e*10^1+t;
      \\计算clover+crocus与violet的比较,其中clover+crocus左右两边的括号不可以缺少,
      \\其中原因不知道为什么;
      \\如果两个值相等,则输出结果,如果不等则不执行操作
      if((clover+crocus)==violet,
         print()
          )
       )
}

mathematica 发表于 2012-4-26 10:49:31

上面是程序的代码:
附近是代码文件\代码截图\结果截图
页: 1 2 3 4 [5] 6 7
查看完整版本: 紫罗兰算式(数学代数方面的)