首页 > 文章列表 > 使用C语言编程指针实现牛顿迭代法求解方程fx=2x^3+4x^2的函数

使用C语言编程指针实现牛顿迭代法求解方程fx=2x^3+4x^2的函数

c语言编程牛顿迭
199 2024-03-06

C语言编程指针编写函数用牛顿迭代法方程fx 2x34x2

C语言编程指针编写函数用牛顿迭代法方程fx 2x34x2 3x6

#include

#include

double root(double (*f)(double),double (*f1)(double), double x,double eps);

double fx(double x){

return 2*x*x*x-4*x*x+3*x-6;

}

double fp(double x){

return 6*x*x-8*x+3;

}

int main()

{

double x=1.5,y,eps=1e-08;

printf("input eps 1e-08n"); scanf("%lf",&eps);

y = root(fx,fp,x,eps);

printf("%lfn",y);

return 0;

}

double root(double (*f)(double x),double (*f1)(double x), double x,double eps){

double x0,x1;

x0=x;

while(1){

x1= x0 - (*f)(x0)/ (*f1)(x0);

if (fabs(x1-x0)

x0=x1;

};

return x1;

}

运行与输出:

input eps 1e-08

1e-08

2.000000

C语言编程牛顿迭代法sinxx2在x pi附近的一个实根精度小于104

(n))^2-sinx(n)-1]/[18x(n)-cosx(n)].

取x(0)=0.5,

x(1)=0.405129911,

x(2)=0.392101462,

x(3)=0.391847004,

x(4)=0.391846907,

3次迭代已经得到四位近似值x=0.3918.

二分法: f(x)=9x^2-sinx-1.

f(0)=-1,f(1)=7.15853,f(0.5)=0.770577.

f(0.25)=-0.68490,

f[(0.25+0.5)/2]=f(0.375)=-0.10065,

f[(0.375+0.5)/2]=f(0.4375)=0.29898,

f[(0.375+0.4375)/2]=f(0.40625)=0.09018,

......

要13次左右才能得到四位近似值.

C语言编程中牛顿迭代法是什么

牛顿迭代法是一种常用的计算方法,这个大学大三应该学过。

具体为:设r是f(x) = 0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y = f(x)的切线L,L的方程为y = f(x0)+f'(x0)(x-x0),出L与x轴交点的横坐标 x1 = x0-f(x0)/f'(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y = f(x)的切线,并该切线与x轴交点的横坐标 x2 = x1-f(x1)/f'(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。

你把这段文字认真仔细慢慢读一遍,把给的方程式写出来,然后照这个在纸上画出图形,就会明白牛顿迭代法的概要了。

你讲的xopint?root?float?这些都是自己定义的函数。float是c语言中定义浮点型变量的写法。

#include

#include

void main()

{

float f(float);

float xpoint(float,float);

float root(float,float);

float x,x1,x2,f1,f2;

do

{

printf("输入x1,x2nn");

scanf("%f%f",&x1,&x2);

f1=f(x1);

f2=f(x2);

}while(f1*f2>0);

x=root(x1,x2);

printf("方程在1.5附近的根为:%fnn",x);

}

float f(float x)//定义一个f函数,返回值y

{

float y;

y=2*x*x*x-4*x*x+3*x-6;

return(y);

}

float xpoint(float x1,float x2)//定义一个带返回值的函数即y,也就是y的函数,main()中调用

{

float y;

y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));

return(y);

}

float root(float x1,float x2)//这也是定义一个函数,是根的函数,利用了上面自己定义的函数

{

float x,y,y1;

y1=f(x1);

do

{

x=xpoint(x1,x2);

y=f(x);

if(y*y1>0)

{

y1=y;

x1=x;

}

else

x2=x;

}while(fabs(y)>1e-4);

return(x);

}

建议你看看c 语言教程,上面讲得很详细噢。