登录 | 注册 |
趣题之家程序贴吧——牛顿迭代法+韦达定理解一元三次方程
 



牛顿迭代法+韦达定理解一元三次方程

基本信息:
提交人:趣题之主         提交日期:4/30/2005 7:06:22 PM        点击数:2868

编辑 删除

程序简介:

用牛顿迭代法求得一元三次方程的一个解,再用韦达定理求另外两个解。

 

程序内容:  

var x,x0:real;
    x1,x2,x3:real;
    a,b,c,d:real;
    bb,cc:real;
    delta:real;
    k:longint;
function f(x:real):real;
 begin
  f:=x*x*x*a+b*x*x+c*x+d;
 end;
function fd(x:real):real;
 begin
  fd:=3*a*x*x+2*b*x+c;
 end;
function newton(x0:real):real;
var x:real;
 begin
  inc(k);
  if k>1000 then
   begin
    writeln('No Solution');
    halt;
   end;
  x:=x0-f(x0)/fd(x0);
  if abs(x-x0)<1e-10 then
   newton:=x
  else
   newton:=newton(x);
 end;
begin
 read(a,b,c,d);
 k:=0;
 x1:=newton(2);
 writeln(x1:0:10);
 bb:=(b/a+x1);
 cc:=-(d/(a*x1));
 delta:=bb*bb-4*cc;
 if abs(delta)<1e-8 then
  writeln(-bb/2:0:10)
 else if delta>0 then
  begin
   writeln((-bb+sqrt(delta))/2:0:10);
   writeln((-bb-sqrt(delta))/2:0:10);
  end;
end.



Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Cannot update. Database or object is read-only.

/bbs/pascal_view.asp, line 345