x3+ax2+bx+c=0
其中x3为x的立方,x2为x的平方,求解x,有人做过吗。
谢谢,在线等

解决方案 »

  1.   

    回来再顶~Delphi没有提供开立方根的函数,但提供了对数函数,所以
    var  
      Rel:real showmessage(floatToStr(Power(Rel,1/3)));
      

  2.   

    abc都确定的情况下用二分法解该方程
      

  3.   

    参考:var m,n,s:real;
    function Test(x:real):real;
    begin
      result:=power(x,3)+2*power(x,2)+3*x+4 ;
    end;
    begin
     m:=100;
     n:=-100;
     while  m-n>1E-5 do
     begin
       s:=(m+n)/2;
       if Test(s)*Test(m)<0 then n:=s else m:=s;
     end;
     showmessage(format('%f,%f',[s,test(s)]));
    end;
      

  4.   

    三次方程是有求根公式的,但是公式比较繁,教科书里是不介绍的,也没有必要去记得,因为没有多大用处。中学生做这样的题目,一般采用的方法是猜出这三次式的一个实根,总是从0周围的整数里去猜,可以先看0是不是根,再看1,-1,2,-2,3,……,一定可以找到的,否则这个题目不会给中学生做的。找到一个实根a,则这个三次式一定有因式(x-a),把三次式除以(x-a)(多项式除法应该学会,这是有用的),商式是个二次式,那么原来的三次式就已经分解成为一个一次式(x-a)与一个二次式(商式)的乘积,剩下来就是那个二次式是不是还能分解的问题了,这个你应该会的。
    例如本题,x^3-5x^2+8x-4,0不是根,1代入等于0是根,找到了。x^3-5x^2+8x-4除以x-1,商式是x^2-4x+4,又商式还能分解成(x-2)^2,所以结果是:
    x^3-5x^2+8x-4=(x-1)(x-2)^2.
      

  5.   

    列举(枚举)法 
    枚举(enumerate)法是基于计算机运算速度快这一特性的一种使用非常普遍的思维方法。它是根据问题中的条件将可能的情况一一列举出来分析求解的方法。但有时一一列举出的情况数目很大,如果超过了我们所能忍受的范围则需要考虑如何去排除不合理的情况,尽可能减少列举的问题可能解的数目。例:求一元三次方程的解。有形如:ax3+bx2+cx+d=0一元三次方程。给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行上输出这三个实根。这道题的解法很多,最为简洁的方法就是直接枚举可能的实根解。var a,b,c,d:real;i:integer;function f(x:real):real;begin     f:=a*x*x*x+b*x*x+c*x+dend;begin     readln(a,b,c,d);     for i:=-10000 to 10000 do   {枚举方程所有可能的解}       if abs(f(i/100))<1e-4 then write(i/100:2:2,'  ');end.