趣题之家程序贴吧——牛顿迭代法+韦达定理解一元三次方程
|
牛顿迭代法+韦达定理解一元三次方程
|
基本信息:
提交人:趣题之主 提交日期: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 |