CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

有谁解过立方方程x3+ax2+bx+c=0吗

楼主orchidbing(米饼)2005-04-04 17:32:03 在 Delphi / 语言基础/算法/系统设计 提问

x3+ax2+bx+c=0  
  其中x3为x的立方,x2为x的平方,求解x,有人做过吗。  
  谢谢,在线等 问题点数:0、回复次数:11Top

1 楼orchidbing(米饼)回复于 2005-04-04 17:35:40 得分 0

如果有源程序的,请给我源程序,谢谢。Top

2 楼oystergj(傻气疼疼)回复于 2005-04-04 17:42:41 得分 0

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

3 楼jinjazz(近身剪)回复于 2005-04-04 17:48:12 得分 0

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

4 楼orchidbing(米饼)回复于 2005-04-04 17:49:56 得分 0

给个源程序研究一下,急用Top

5 楼HeLiang7(阿亮)回复于 2005-04-04 17:58:40 得分 0

三次方程我记得有解的公式,楼主可以先把公式查到,然后一切都好办了。  
  这应该是个数学问题。Top

6 楼jinjazz(近身剪)回复于 2005-04-04 18:10:31 得分 0

参考:  
   
  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;Top

7 楼xjp6688(大平/要做必须最好)回复于 2005-04-04 18:21:54 得分 0

看看数值分析什么的,都有相应的算法!Top

8 楼orchidbing(米饼)回复于 2005-04-04 21:05:41 得分 0

谁有源程序,还是想不出来Top

9 楼chijingde(AD)回复于 2005-04-04 22:25:28 得分 0

三次方程是有求根公式的,但是公式比较繁,教科书里是不介绍的,也没有必要去记得,因为没有多大用处。中学生做这样的题目,一般采用的方法是猜出这三次式的一个实根,总是从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.Top

10 楼chijingde(AD)回复于 2005-04-04 22:25:33 得分 0

列举(枚举)法    
  枚举(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+d  
   
  end;  
   
  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.  
   
     
  Top

11 楼chijingde(AD)回复于 2005-04-04 22:26:17 得分 0

以上答案均出自googleTop

相关问题

  • 如何用C++在方程上找到(X,Y). 急,谢谢!
  • 求用Delphi解y=ax2+bx+c方程之程式
  • 方程求解 "X"
  • 求方程的解 "X"
  • 求:利用迭代法求非线性方程x^3-3x-1=0的三个实数根(∑=10^-8)的C程序 高人进啊~~~救命啊~~~
  • 如何解方程 f(x)+sin(x)=0(f(x)是二次的多项式)
  • 如何使用c语言解多元多次方程组
  • 求救:如何用C++求解四元一次方程组?
  • 解方程:sinX=X 实在是忘了。。。请教!!
  • 用VB计算方程式,例如X的平方等于25

关键词

  • real
  • power
  • begin
  • test
  • var

得分解答快速导航

  • 帖主:orchidbing

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo