写得非常乱,而且没有注释。大家体谅体谅了!
毕竟用JavaScript做这种问题是我的第一次,能完成已经很不错了,满足。
如果他们多给点时间,我会把它写得更完善的。
目前来说,程序效率上还有可以发挥的地方(算法),而且程序结构也不好!希望大家讨论讨论解一次多项不等式组的问题!

解决方案 »

  1.   

    上面的代码换行有些问题,这个应该是无错的:<script language="javascript">
    var arr,x;arr=new Array(5);
    x=new Array(7);arr[0]=new Array(110.2965,0.0828,0.4832,0.0530,0.1199,-0.0254,0.1220,0.1216,-0.0012,165);
    arr[1]=new Array(120.1814,-0.6666,0.1015,-0.0091,0.0293,0.0733,-0.1310,0.2531,0.0337,150);
    arr[2]=new Array(-108.8732,0.0695,-0.0616,0.1566,0.0099,-0.1245,-0.0021,0.0025,0.2014,160);
    arr[3]=new Array(77.4817,-0.0345,-0.1024,0.2052,-0.0208,-0.0118,0.0060,0.1449,0.0765,155);
    arr[4]=new Array(132.9745,0.0005,0.2432,-0.0646,-0.0411,-0.0652,0.0703,-0.0043,-0.0089,132);
    arr[5]=new Array(120.6633,0.2378,-0.0602,-0.0779,0.0930,0.0469,0.0001,0.1659,0.0007,162);function createx(arg)
    {
    switch(arg)
    {
    case 8:
    x[0]=120-33+2*33*Math.random();
    x[1]=73-15+2*15*Math.random();
    x[2]=180-48+2*48*Math.random();
    x[3]=80-17+2*17*Math.random();
    x[4]=125-27+2*27*Math.random();
    x[5]=125-30+2*30*Math.random();
    x[6]=81.1-21+2*21*Math.random();
    break; case 0:
    x[0]+=(120-33-x[0])*Math.random();
    x[1]+=(73-15-x[1])*Math.random();
    x[2]+=(180-48-x[2])*Math.random();
    x[3]+=(80-17.5-x[3])*Math.random();
    x[4]+=(125+27-x[4])*Math.random();
    x[5]+=(125-30-x[5])*Math.random();
    x[6]+=(81.1-21-x[6])*Math.random();
    break; case 1:
    x[0]+=(120+33-x[0])*Math.random();
    x[1]+=(73-15-x[1])*Math.random();
    x[2]+=(180+48-x[2])*Math.random();
    x[3]+=(80-17.5-x[3])*Math.random();
    x[4]+=(125-27-x[4])*Math.random();
    x[5]+=(125+30-x[5])*Math.random();
    x[6]+=(81.1-21-x[6])*Math.random();
    break; case 2:
    x[0]+=(120-33-x[0])*Math.random();
    x[1]+=(73+15-x[1])*Math.random();
    x[2]+=(180-48-x[2])*Math.random();
    x[3]+=(80-17.5-x[3])*Math.random();
    x[4]+=(125+27-x[4])*Math.random();
    x[5]+=(125+30-x[5])*Math.random();
    x[6]+=(81.1-21-x[6])*Math.random();
    break; case 3:
    x[0]+=(120+33-x[0])*Math.random();
    x[1]+=(73+15-x[1])*Math.random();
    x[2]+=(180-48-x[2])*Math.random();
    x[3]+=(80+17.5-x[3])*Math.random();
    x[4]+=(125+27-x[4])*Math.random();
    x[5]+=(125-30-x[5])*Math.random();
    x[6]+=(81.1-21-x[6])*Math.random();
    break; case 4:
    x[0]+=(120-33-x[0])*Math.random();
    x[1]+=(73-15-x[1])*Math.random();
    x[2]+=(180+48-x[2])*Math.random();
    x[3]+=(80+17.5-x[3])*Math.random();
    x[4]+=(125+27-x[14])*Math.random();
    x[5]+=(125-30-x[15])*Math.random();
    x[6]+=(81.1+21-x[6])*Math.random();
    break; case 5:
    x[0]+=(120-33-x[0])*Math.random();
    x[1]+=(73+15-x[1])*Math.random();
    x[2]+=(180+48-x[2])*Math.random();
    x[3]+=(80-17.5-x[3])*Math.random();
    x[4]+=(125-27-x[4])*Math.random();
    x[5]+=(125-30-x[5])*Math.random();
    x[6]+=(81.1-21-x[6])*Math.random();
    break; default:
    x[0]=120-33+2*33*Math.random();
    x[1]=73-15+2*15*Math.random();
    x[2]=180-48+2*48*Math.random();
    x[3]=80-17+2*17*Math.random();
    x[4]=125-27+2*27*Math.random();
    x[5]=125-30+2*30*Math.random();
    x[6]=81.1-21+2*21*Math.random();
    break; }

    x[7]=982.41-x[0]-x[1]-x[2]-x[3]-x[4]-x[5]-x[6]
    if((x[7]<=90-27)||(x[7]>=90+27))
    {
    createx(8);
    }
    }
    function computing()
    {
    var flag=false;
    var flag1=true;
    var sum=0;
    var p=8;
    while(!flag)
    {
    sum++;
    if(sum>10000)
    {
    arr[0][9]*=1.13;
    arr[1][9]*=1.18;
    arr[2][9]*=1.09;
    arr[3][9]*=1.11;
    arr[4][9]*=1.15;
    arr[5][9]*=1.14; sum=0;
    }
    createx(p);
    for(i=0;i<6;i++)
    {
    if(arr[i][0]+arr[i][1]*x[0]+arr[i][2]*x[1]+arr[i][3]*x[2]+arr[i][4]*x[3]+arr[i][5]*x[4]+arr[i][6]*x[5]+arr[i][7]*x[6]+arr[i][8]*x[7]>=arr[i][9])
    {
    flag1=false;
    p=i;
    break;
    }
    else
    {
    flag1=true;
    }
    }
    if(flag1)
    {
    flag=true;
    }
    }
    return x;
    }var temp=computing();
    var r="";
    for(e in temp)
    {
    r=r+"  "+temp[e];
    }
    alert(r);
    for(i=0;i<6;i++)
    {
    alert(arr[i][0]+arr[i][1]*x[0]+arr[i][2]*x[1]+arr[i][3]*x[2]+arr[i][4]*x[3]+arr[i][5]*x[4]+arr[i][6]*x[5]+arr[i][7]*x[6]+arr[i][8]*x[7]<arr[i][9]);
    }
    </script>
      

  2.   

    A+B*x1+C*x2+D*x3……<Z这个你赶紧查线性代数和运筹学!!有矩阵解决完美方案。
      

  3.   

    呵呵,的确很糟,不过我尽力了啦。
    唯一能算得上有作用的就是“趋势调整”,但效率仍然很低。
    ——不过,如果去掉它,那就更没效率可言了。
    (去掉以后,IE弹出五次提示都还找不到答案,加上以后弹出一次就能找到一组了。)
    如果是等式,可以用我目前知道的线代知识化简求通解,可惜不是。如果再给我多一点时间,我想我会重新考虑更有效率的“趋势调整”算法。
    除了“趋势调整”,我想不出其它什么思路了……
    不知道“矩阵解决完美方案”是什么?我们没有学过矩阵解不等式组。
    明天看能不能找个线代老师问问。呵呵!其实使用random()不知道算不算投机取巧?C/C++里面也应该有类似的函数或者方法吧?
    本来打算用二分法来做“趋势调整”的,但一开始没有想到这一点。
      

  4.   

    Mathlab,Mathematic,SPSS这些都是数学建模要用到的专业工具,用js,第一次听说,楼主强。
    我以前做建模,记得题目是修铁路,三天三夜只睡了3个小时,顿顿吃快餐,结束后睡了一天多,太累了。答案没有标准的,只要很接近就好了,关键是思路,文稿。
      

  5.   

    首先你这个是多元一次不等式 ,一定要用线性代数来解。
    线性代数主要就是干这个的,要不大学学他干吗。
    你最好找数学老师,看我说的对不对。数值分析 是把数学模型用计算机语言来解决的一门技术。有很多书的,尤其早期Basic版的比较多,现在各种语言版本都有。多元一次不等式,你可以查看线性规划这一章,原理要看一下运筹学的线性规划手工计算的方法。数值分析 只是代码化而已。线代书你找不到答案是正常的,因为不等式是在运筹学里面用到的,基础是线性代数,拿来翻译成自己熟悉的语言就可以。你用自己的土办法,让评委们看了,会笑死的。运筹学还是有用的,0-1规划我用他做过连连看游戏和计算围棋死活。0-1规划用权值计算围棋的死活。
    http://superdullwolf.cnzone.net/weiq.asp
    这些是我在考研期间学的,专业课70多分,政治不及格就没考上。
      

  6.   

    我当初最喜欢琢磨这些了。
    你找数学老师,他们擅长这个,很NewB的。
      

  7.   

    我也说说以前我们学校参加的题目一般都是算法题
    我喜欢学的是图论和离散
    我的线代学得不好,比较悲惨
    运筹学是在这些科目的基础上的,如果你这些都学好了,再去攻克fuzzy模糊数学
    你的程序偶还没看,等
      

  8.   

    我给你说一种算法,我是毕设枪手:我用C++写的,现在已经没了,因为一些事(靳田你们都知道的)
    我当时用的单纯形法求解的,且随机数不是用系统给的random()或者是rand(),对于伪随机数的探讨也是建模常常要考虑的东东,如果要写的话东西很多,公式也很多。现在没有非常好的随机函数。
    单纯形法算法如下:对不起公式很好理解,可是我现在没法写,弊端啊,我还是给你写网站得了,我以前加入过好几个数学网会员。
     关于组合学问题的算法,计算对象是离散的、有限的数学结构。从方法学的角度,组合算法包括算法设计和算法分析两个方面。关于算法设计,历史上已经总结出了若干带有普遍意义的方法和技术,包括动态规划、回溯法、分支限界法、分治法、贪心法等。下面我们着重谈谈几个有代表性的组合算法: 
    单纯形法: 
    这是一种线性规划算法,由G.B.Dantzig在1947年提出,后来由他和其他的学者又提出了单纯形法的变形和改进。这些被实践证明都是行之有效的,线性规划研究线性目标函数在一组线性等式与线性不等式约束下的极值问题。这本来是连续问题,Dantzig发现线性规划问题的可行解集(即满足约束条件的点的全体)是一个超多面体。如果它的最优解存在,那么这个最优解一定可以在超多面体的一个顶点取到。由于超多面体的顶点只有有限个,从而使线性规划成为一个组和优化问题。单纯形法是按照一定的规则,从可行解集的一个顶点转移到另一个顶点,使得目标函数的值不断地得到改进,最后达到最优。尽管单纯形法一直使用得很好,但是在最坏情况下它需要指数运行时间,从而使线性规划问题是否属于P类一度成为人们关心的问题。后来的椭球算法和投影算法都很好的解决了这个问题。 
    排序和检索: 
        这两部分应当是大家比较熟悉的,所谓排序,就是将给定的元素序列按照某种顺序关系重新排列成有序序列。例如将n个数组成的序列按照从小到大的顺序重新排列;将n个英语单词组成的的序列按照字典顺序重新排列。所谓检索,就是在给定的集合中查找某个特定的元素或是元素组。排序和检索已经成为计算机科学技术中最基本、使用最频繁的算法。下面我们专门谈谈排序算法(sorting algorithm) 
    在讨论此种算法时,数据通常是指由若干记录组成的文件,每个记录包含一个或多个数据项,其中能够标志该记录的数据项称为键码。给定一文件的n个记录{R1,R2,…,Rn}及其相应的键码的集合{K1,K2,…,Kn}。所谓排序算法就是数据处理中将文件中的记录按键码的一定次序要求排列起来的算法。若代排序的文件能够同时装入计算机的主存中,整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序;若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,有一部分必须放在外存上,则称此类排序问题为外部排序。当待排序的文件中包含有一些相同键码的记录时,如果经过排序后这些相同的键码的记录的相对次序仍然保持不变,则相应的排序算法是稳定的,否则为不稳定的。如果排序算法设计成单处理机完成的,则此排序算法称为串行(或顺序)排序算法;如果排序算法时设计成多处理机实现的,则称为并行排序算法。 
    首先谈谈内部排序:内部排序的过程是一个逐步扩大记录的有序序列长度的过程。在排序的过程中,参与排序的记录序列中存在两个区域:有序区和无序区。 
    使有序区中记录的数目增加一个或几个的操作称为一趟排序。 
        逐步扩大记录有序序列长度的方法大致有下列几类: 
      

  9.   

    大狼不是计算机专业的,如果是计算机专业的话,这些都是最基础的东西
    数学学好了,才是学好了计算机的研究,可以看看计算机的专业期刊,应用不是非常看重语言的,主要是算法
    还有在CSDN上以前研究这个的人很多,我遗传算法就是在CSDN上知道的,还有退火不过现在算法区就剩未名还是很牛的…………其他版都是应用应用再应用,算法已经不是很多人关心了,那时候跟他们说起银行家算法什么的好高兴啊,现在纯理论研究在CSDN上少了,更多的是比较功利的东东…………
      

  10.   

    ---------------------------
    Microsoft Internet Explorer
    ---------------------------
    该页上的脚本造成 Internet Explorer 运行速度减慢。如果继续运行,您的计算机将变得更慢。是否取消该脚本?
    ---------------------------
    是(Y)   否(N)   
    ---------------------------
    ---------------------------
    Microsoft Internet Explorer
    ---------------------------
      125.67135083981495  81.53458825339294  209.5509055647798  88.8517189908419  147.8863588729223  153.703688976286  88.8165282040598  86.39486029790227
    ---------------------------
    确定   
    ---------------------------
    ---------------------------
    Microsoft Internet Explorer
    ---------------------------
    true
    ---------------------------
    确定   
    ---------------------------
      

  11.   

    铁科就在北方交大旁边,呵呵,我主场啊
    线代我当时是跟留数一起学的,考了个61分(其实就是没过,加了几分,比60分的稍好有限)
    其实看看公交网,那里的算法是横七竖八的强啊
    还有像这种考试最常用的计算工具不是C++或者是JAVASCRIPT,更多运用的是MATLAB,如果大型网站配合MATLAB做数据研究非常好,还有智能分析进行网站防御的论文,如果是学生的话不防看看…………
    不过这些偶没做过,我是无聊人物全看过了…………
    如果踏踏实实研究也是很牛的,应用更容易出成效,也有名,比如微软的MVP,他们很牛,但是主要是应用很牛,制定算法的可不是他们…………
      

  12.   

    其实分多少到是次要的,每次说到建模竞赛我心中就有无数的遗憾…………好想参加一次,到目前为止我参加数学竞赛拿奖率是100%(学校内部的不算),呵呵,不过就参加过一次还是初中(遗憾啊)
    我在GOOGLE上搜索过靳田的名字,发现好象你要拜你们学校的一个计算机老师为师(好绕口),要学好数学啊,呵呵
    狼是典型的理工科人物
      

  13.   

    to: 兔子
    以前想拜我们老师Netfire.Han为师,但后来不了了之了。
    个人感觉可能差距太大吧……汗。(韩老师超强!)
    今天看到piggybank在我BLOG上的一些回复,真的已经很动摇我走技术路线的决心了!
    不过,我相信,就算我不走技术路线,我也会把自己的人生走好的。
      

  14.   

    http://community.csdn.net/Expert/topic/3392/3392848.xml?temp=.6749231
    可以参考一下这个贴子
    他们说的东西你如果理解了就可以了,我用过一些,比如单纯形法,比如遗传学