数值分析实验五(二分法,牛顿迭代法)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五

一、实验目的与要求:

1、通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点;

2、比较二者的计算速度和计算精度。

二、实验内容:

通过对二分法和牛顿迭代法作编程练习和上机运算,进一步体会它们在方程求根中的不同特点。

二分法

算法:给定区间[a,b],并设与符号相反,取为根的容许误差,为的容许误差。

(1)令c=(a+b)/2

(2)如果(c-a)<或,则输出,结束;否则执行(3)

(3)如果,则令;否则则令,重复(1),(2),(3)。

牛顿迭代法

算法:给定初值 , 为根的容许误差,为 的容许误差,N 为

迭代次数的容许值。

(1)如果 =0或迭代次数大于N ,则算法失败,结束;否则执行

(2)。

(2)计算 = - (3)若 < 或 < ,则输出 ,程序结束;否则执行(4)。

x 0εη)(x f )('

x f x 1x 0)()('0x x o f f x x 01-ε)(1x f ηx 1

x0x1

(4)令= ,转向(1)。

三、实验题目:

1、用二分法求方程f(x)=x^3+4*x*x-10在区间[1,1.5]上的根,要求求出具有3位有效数的近似根。

2、用牛顿法求方程x^3-3x-1=0在x=2附近的根。

四、程序:

一、二分法

#include

float f(float x)

{

return x*x*x+4*x*x-10;

}

void main()

{

float a,b,c;

a=1.0;

b=1.5;

for(;b-a>=0.01;)

{

c=(a+b)/2;

if(f(a)*f(c)==0)

break;

else if(f(a)*f(c)<0)

b=c;

else

a=c;

}

printf("方程的近似根为%f\n",c);

printf("保留三位有效数字为%0.2f\n",c); }

二、牛顿迭代法

#include

#include

float f(float x)

{

return x*x*x-3*x-1;

}

float g(float x)

{

return 3*x*x-3;

}

void main()

{

float x0,x1,a,b,N;

int i;

i=0;

printf("请输入初值X0,根的容许误差,|f(x)|的容许误差,迭代次数的容许值N。\n");

scanf("%f,%f,%f,%f",&x0,&a,&b,&N);

for(;;)

{

i++;

if(g(x0)==0||i>=N)

break;

else

{

x1=x0-f(x0)/g(x0);

if(fabs(x1-x0)

goto end;

else

x0=x1;

}

}

printf("算法失败,在达到迭代次数时此结果并未达到根的容许误差或|f(x)|的容许误差。\n");

end:printf("%f\n",x1);

}

五、实验结果:

1、二分法

2、牛顿迭代法

相关文档
最新文档