牛顿迭代法求解实根程序设计与实现报告.pdfVIP

  • 1
  • 0
  • 约6.4千字
  • 约 12页
  • 2026-02-06 发布于北京
  • 举报

牛顿迭代法求解实根程序设计与实现报告.pdf

牛顿迭代法的程序报告

一、问题描述

编写一个子程序NewTon(floatx0,floateps,floatx1)。

它的功能是用牛顿迭代法

f(x)在x=0附近的一个实根。牛顿迭代为:

迭代收敛判据为:(eps为指定的迭代精度,例如1e-6)。若迭代成功,

则返回非零值;否则,返回0。

二、结构图

实根的运算

数的数的计算数的比较数的输

输入出

三、数据结构的设计

voidmain(void)

{

doublex0,x1,temp,t=0.00001;

inti=0,flag=0;

printf(该程序所求的是x=exp(-x)在0.5附近的值\n);

printf(请输入初始值0.5:\n);

scanf(%lf,x0);

if(fun1(x0)t)

printf(该函数不满足此种叠代法则,程序运行失败。\n);

else

{

do

{

i++;

x1=fun(x0);

temp=x0;

x0=x1;

if(i50)

{

flag=1;

break;

}

}while(fabs(x1-temp)t);

if(flag1)

printf(叠代失败,超过了叠代次数,自动跳出。);

else

printf(计算结果为:%10.9f,x1);

}

四、处理流程

打开软件

登陆

输入任一实数x

迭代法

求解

输出x附近

的值

结束

五、源程序

#includestdio.h

#includemath.h

doublefun(doublex0)

{

doublex1;

x1=x0-(x0-exp(-x0))/(1+x0);

returnx1;

}

doublefun1(doublex0)

{

doublex1;

x1=exp(x0)+x0*exp(x0);

returnx1;

}

voidmain(void)

{

doublex0,x1,temp,t=0.00001;

inti=0,flag=0;

printf(该程序所求的是x=exp(-x)在0.5附近的值\n);

printf(请输入初始值0.5:\n);

scanf(%lf,x0);

if(fun1(x0)t)

printf(该函数不满足此种叠代法则,程序运行失败。\n);

else

{

do

{

i++;

x1=fun(x0);

temp=x0;

x0=x1;

if(i50)

{

flag=1;

break;

}

}while(

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档