当前位置:文档之家› 牛顿迭代法C语言程序

牛顿迭代法C语言程序

牛顿迭代法C语言程序
牛顿迭代法C语言程序

牛顿迭代法C语言程序: 牛顿迭代法要计算

(1) y1=f(x) 在x 的函数值

(2) d1=f(x) 的一阶导数在x 的值

你可以写两个函数,分别计算y1,d1

如果一阶导数有解析解,则可用赋值语句,否则要写数值解子程序。

步骤:

设解的精度,例float eps=0.000001;

设x初值,x1;

算y1=f(x1);

迭代循环开始

算一阶导数在x1 的值d1

用牛顿公式算出x2; [x2 = x1 - y1 / d1]

如果fabs(x2-x1) > eps 则从新迭代-- 用新的函数值和一阶导数值推下一个新x.

第一题:#include

#include

#include

float f(float x)

{

return (x*exp(x)-1);

}

float f1(float x)

{

return (x*exp(x)+exp(x));

}

void main()

{

float x1=0.5,x;

system("cls");

do

{

x=x1;

x1=x-f(x)/f1(x);

}while(fabs(x1-x)>0.0001);

printf("x=%f\n",x1);

}

第二题:

#include

#include

#include

float f(float x)

{

return (x*x*x-12.42*x*x+50.444*x-66.552);

}

float f1(float x)

{

return (3*x*x-24.84*x+50.444);

}

void main()

{

float x1=4.0,x;

system("cls");

do

{

x=x1;

x1=x-f(x)/f1(x);

}while(fabs(x1-x)>0.0001);

printf("x=%f\n",x1);

}

#include

#include

#include

#define MAXREPT 1000

float f(float x)

{return(x*x*x-12.42*x*x+50.444*x-66.552);

}

float df(float x)

{return(3*x*x-24.84*x+50.444);

}

float iterate(float x)

{float x1;

x1=x-f(x)/df(x);

return(x1);

}

void main()

{float x0,x1,eps,d;int k=0;

printf("\n please input x0,eps:");

scanf("%f,%f",&x0,&eps);

printf("\n k xk\n");

printf(" %d %f\n",k,x0);

do

{k++;

x1=iterate(x0);

printf(" %d %f\n",k,x1);

d=fabs(x1-x0);

x0=x1;

}

while((d>=eps)&(k

if(k

printf("the root is x=%f, k=%d\n",x1,k); else

printf("\n The iteration is failed!\n"); getch();

}

相关主题
文本预览
相关文档 最新文档