x^3+ax^2+bx+c=0
如果是迭代法,要求迭代次数少,精确
如果是公式法,可以加送100分,也要求精确
当a,b很大时要求方程解精确,谢谢
email to:[email protected]

解决方案 »

  1.   

    我有算法,还没有程序,等我写好了就贴上去.
    wait...wait...
      

  2.   

    随便是多少次方。哪怕是小数。<html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head><body bgcolor="#FFFFFF" text="#000000" leftmargin="0.5" topmargin="10">
    <form name="ff" method="post" action="">
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td height="24"> 
            <div align="center"><font size="3" color="#CC0000"><b> 二分法解方程</b></font><font size="2" color="#003399"> 
              <font color="#000000"><i> </i></font></font></div>
          </td>
        </tr>
        <tr>
          <td>
            <div align="center"><font color="#0066CC"><font size="2">方程: 
              <input type="text" name="t1" value="x-2">
              <font color="#000000"> <b>=0</b></font> 起始: 
              <input type="text" name="start" size="15" value="0">
              结束: 
              <input type="text" name="end" size="15" value="2">
              步长 
              <input type="text" name="mid" size="10" value="0.000001">
              <input type="button" name="Button" value="求解" onClick="draw(erfenfa());">
              </font><font color="#0066CC"></font></font></div>
          </td>
        </tr>
        <tr>
          <td> 
            <div align="right"><font color="#0066CC"><font color="#0066CC"><font color="#0066CC"><font color="#990033" size="1"> 
              </font></font></font></font></div>
          </td>
        </tr>
      </table>
     </form>
    <font size="2" color="#0066CC">   <table width='100%' border='1' cellspacing='0' cellpadding='0' bordercolor='#009999'>
        <tr> 
          <td width='29%'> 
            <div><font size='2'>表达式</font></div>
          </td>
          <td width='8%'> 
            <div><font size='2'>x1</font></div>
          </td>
          <td width='8%'> 
            <div><font size='2'>x2</font></div>
          </td>
          <td width='24%'> 
            <div><font size='2' COLOR='RED'>答案</font></div>
          </td>
          <td width='24%'> 
            <div><font size='2'>答案对应的值</font></div>
          </td>
          <td width='15%'> 
            <div><font size='2'>步长</font></div>
          </td>
        </tr>
      </table>
    <div id="ww"> 
    </div>
    <script>
    function fx(x)
    {
    return eval(document.ff.t1.value);
    }
    function addurl()
    {document.ff.t1.value=document.ff.t1.value;
    }
    function erfenfa()
    {
    x1=eval(document.ff.start.value);
    x2=eval(document.ff.end.value);
    eps=eval(document.ff.mid.value);
    if(fx(x1)*fx(x2)>0)
    return "错误1!";
    while(Math.abs(x1-x2)>eps)
    {x3=x1*0.5+x2*0.5;
    if(fx(x1*1)==0)
    {x3=x1;
    break;
    }
    else if(fx(x2*1)==0)
    {x3=x2;
    break;
    }
    else if(fx(x3*1)==0)
    {root=x3;
    break;}
    else if(fx(x1*1)*fx(x3*1)<0)
    x2=x3;
    else if(fx(x2*1)*fx(x3*1)<0)
    x1=x3;
    else
    {root="错误2!";
    break;}
    }
    root=x3;
    if(fx(Math.round(x3))==0)
    root=Math.round(x3);
    return root;
    }
    function draw(root)
    {
    if(root=="错误1!"||root=="错误2!")
    thx=document.ff.start.value*1;
    else
    thx=root;
    ww.innerHTML="<table width='100%' border='1' cellspacing='0' cellpadding='0' bordercolor='#009999'><tr><td width='29%'><div><a><font size='2'>"+document.ff.t1.value+"</font></a></div></td><td width='8%'><div><font size='2'>"+document.ff.start.value+"</font></div></td><td width='8%'><div><font size='2'>"+document.ff.end.value+"</font></div></td><td width='24%'> <div><font size='2' COLOR='RED'>"+root+"</font></div></td><td width='24%'> <div><font size='2'>"+fx(thx)+"</font></div> </td> <td width='15%'> <div><font size='2'>"+document.ff.mid.value+"</font></div></td></tr></table>"+ww.innerHTML;
    }</script>
    <br>
    <br>
    </font>
    <hr size="1">
    <font size="2" color="#0066CC"><br>
    </font> 
    <table width="66%" align="center" bordercolor="#0099FF" cellpadding="1">
      <tr> 
        <td height="17" valign="middle">
          <div align="center"><font size="4"><b>使用方法</b></font></div>
        </td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">加:+ 减:- 乘:* 除:/</font></td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">乘方:x的y方:Math.pow(x,y)</font></td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">正弦:Math.sin(x) 余弦:Math.cos(x) 正切:Math.tan(x) 
          </font></td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">反正弦:math.asin(x) 反余弦:Math.acos(x) 反正切:Math.atan(x)</font></td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">2的自然对数:Math.LN2 10的自然对数:Math.LN10 以E为底的自然对数:Math.log(x)</font></td>
      </tr>
      <tr> 
        <td valign="middle"><font size="2">圆周率:Math.PI 绝对值:Math.abs(x) E的x次方:Ma</font></td>
      </tr>
    </table>
    <br>
    <hr size="1">
    <div align="center"><font color="#0066CC"><font color="#0066CC"><font color="#0066CC"><font color="#990033" size="2">-阿P制作-</font></font></font></font></div>
    </body>
    </html>
      

  3.   

    应该是用弦截法吧,无限逼近。数据结构里面学过似乎。
    ================================================================CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!★  浏览帖子速度极快![建议系统使用ie5.5以上]。 ★  多种帖子实现界面。 
    ★  保存帖子到本地[html格式]★  监视您关注帖子的回复更新。
    ★  可以直接发贴、回复帖子★  采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录! 
    ★  支持在线检测程序升级情况,可及时获得程序更新的信息。★★ 签名  ●  
         可以在您的每个帖子的后面自动加上一个自己设计的签名哟。Http://www.ChinaOK.net/csdn/csdn.zip
    Http://www.ChinaOK.net/csdn/csdn.rar
    Http://www.ChinaOK.net/csdn/csdn.exe    [自解压]
      

  4.   

    cardano公式法,但开三次方cuberoot用的是牛顿法!
    还没编译,请自己查错#define PI 3.1415926535897923846264double cuberoot(double x)
    {
    double s, prev;
    int pos; if(x == 0) return 0;
    if(x > 0) pos = 1;
    else      {pos = 0; x = -x;}
    if(x > 1) s = x; else s = 1;
    do
    {
    prev = s;
    s = (x / (s * s) + 2 * s) / 3;
    } while(s < prev)
    if(pos) return prev;
    else    return -prev;
    }void cardano(double a, double b, double c, double d)
    {
    double p, q, t, a3, b3, x1, x2, x3; b /= (3 * a);  c /= a;  d /= a;
    p = b * b - c / 3;
    q = (b * (c - 2 * b * b) - d) / 2;
    a = q * q - p * p * p;
    if(a == 0)
    {
    q = cuberoot(q);
    x1 = 2 * q - b;
    x2 = -q - b;
    printf("x = %g, %g, %g", x1, x2, x2);
    }
    else if(a > 0)
    {
    if(q > 0) a3 = cuberoot(q + sqrt(a));
    else      a3 = cuberoot(q - sqrt(a));
    b3 = p / a3;
    x1 = a3 + b3 - b;
    x2 = -0.5 * (a3 + b3) - b;
    x3 = fabs(a3 - b3) * sqrt(3.0) / 2;
    printf("x = %g, %g +- %g i", x1, x2, x3);
    }
    else
    {
    a = sqrt(p);  t = acos(q / (p * a));  a *= 2;
    x1 = a * cos(t / 3) - b;
    x2 = a * cos((t + 2 * PI) / 3) - b;
    x3 = a * cos((t + 4 * PI) / 3) - b;
    printf("x = %g, %g, %g", x1, x2, x3);
    }
    }
      

  5.   

    我有java版的,可以求n元方程组
    要的话,给我发信[email protected]