c语言中的牛顿力

参考C语言中的牛顿法:

# include " stdio . h " # include " math . h " float f(float x);float df(float x);void main()

{

float f(float x),df(float x);

浮点数x0,x1,e,d;int n,k = 1;

printf("输入精度:");

scanf("%f ",e);printf("输入x0:");scanf("%f ",x0);printf("输入最大次数n ");

scanf("%d ",n);x1 = x0-f(x0)/df(x0);d = fabs(xx0);

printf("-\ n ");

printf(" K Xk \ n ");printf("].6f\n",k,x1);

白色(dekn)

{ x0 = x1x1 = x0-f(x0)/df(x0);d = fabs(xx0);

k;

printf("].6f\n",k,x1);

}

if(k = NDE)printf(" faild \ n ");

}浮点f(浮点x)

{//float x;浮动y;

y = x * x * x 2 * x * x 10 * x-20;

返回y;

} float df(float x){//float x;

浮动y;y = 3 * x * x 4 * x 10

返回y;

}

牛顿插值法怎么用C语言写? #包含iostream.h

#包含数学. h

void main()

{

char L;

{

双M牛顿算法和拉格朗日插值算法的c语言实现 编译运行确认:

# includestdio.h

#includestdlib.h

#includeiostream.h

typedef结构数据

{

浮动x;

浮动y;

}数据;//变量x和函数值y的结构

数据d[20];//最多20组数据

Float f(int s,int t)//牛顿插值法,用于返回商。

{

如果(t==s 1)

return (d[t]。y-d[s]。y)/(d[t]。x-d[s]。x);

其他

return (f(s 1,t)-f(s,t-1))/(d[t]。x-d[s]。x);

}

浮点牛顿(浮点x,整数)

{

int n;

while(1)

{

Cout "请输入n个值(即n次插值):";//获取插值次数

cinn

If(n=count-1)//插值次数不应大于count-1次。

打破;

其他

系统(“cls”);

}

//初始化t,y,yt。

浮点t = 1.0

浮点y=d[0]。y;

float yt = 0.0

//计算y值

for(int j = 1;j = n;j)

{

t=(x-d[j-1]。x)* t;

yt=f(0,j)* t;

//coutf(0,j)endl;

y = y yt

}

返回y;

}

浮点拉格朗日(浮点x,整数计数)

{

float y = 0.0

for(int k = 0;kcountK )//这里的默认值是count-1插值。

{

浮点p = 1.0//初始化p

for(int j = 0;jcountj)

{//计算p的值。

if(k==j)继续;//判断是否是同一个号码。

p=p*(x-d[j])。x)/(d[k]。x-d[j]。x);

}

y=y p*d[k]。y;//总和

}

返回y;//返回y的值。

}

void main()

{

浮点x,y;

int计数;

while(1)

{

Cout "请输入x [i]和y [i]的组数,不得超过20组:";//要求用户输入数据组的数量。

cincount

如果(计数=20)

打破;//检查输入是否合法。

系统(“cls”);

}

//获取每组数据

for(int I = 0;icount我)

{

Cout "请输入" i 1 "组X的值:";

辛德[我]。x;

Cout "请输入" i 1 "的Y组值:";

辛德[我]。y;

系统(“cls”);

}

Cout "请输入x的值:";//获取变量x的值

cinx

while(1)

{

int choice = 3;

Cout "请选择使用哪种插值方法:" endl

cout "(0):exit " endl;

cout" (1):拉格朗日" endl

cout" (2):牛顿" endl

Cout "输入您的选择:";

cinchoice//得到用户的选择。

if(选择==2)

{

Cout "你选择了牛顿插值计算方法,结果是:";

y =牛顿(x,计数);打破;//调用相应的处理程序。

}

if(选择==1)

{

Cout "你选择了拉格朗日插值计算方法,结果是:";

y =拉格朗日(x,计数);打破;//调用相应的处理程序。

}

if(选择==0)

打破;

系统(“cls”);

Cout "输入错误!!!!"endl

}

coutx”、“yendl//输出最终结果

}

C语言程序设计中的牛顿迭代法是什么? 牛顿迭代法是一种常用的计算方法,应该是这个大学大三学生学习的。

具体来说,设r为f(x) = 0的根,选取x0为r的初始近似值,使曲线y = f(x)的切线L通过点(x0,f(x0)),L的方程为y = f(x0) f'(x0)(x-x0),求L与X轴的交点横坐标x1。使曲线y = f(x)的切线过点(x1,f(x1)),求切线与X轴的交点横坐标x2 = xf(x1)/f’(x1),称x2为R的二次近似,重复上述过程,得到R的近似序列,其中X(n-1)= X(n)-f(X(n))/f’(X(n)),称为R的n-1近似,上述公式称为牛顿迭代公式。

你仔细慢慢地读完这段话,把给出的方程写下来,然后据此在纸上画个图,你就明白牛顿迭代法的轮廓了。

你是说xopint?根?浮动?这些都是自定义函数。Float是C语言中定义浮点变量的一种方式。

#包括iostream

#包含数学. h

void main()

{

float f(浮动);

浮点xpoint(浮点,浮点);

浮根(浮,浮);

浮点x,x1,x2,f1,F2;

{

Printf("输入x1,x2 \ n \ n ");

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

f1 = f(x1);

F2 = f(x2);

} while(f1 * f20);

x =根(x1,x2);

printf(" 1.5附近方程的根是:%f\n\n ",x);

}

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

{

浮动y;

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

return(y);

}

Float xpoint(float x1,float x2)//定义一个返回值为y的函数,也就是查找y的函数,在main()中调用。

{

浮动y;

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

return(y);

}

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

{

浮点x,y,y1;

y1 = f(x1);

{

x=xpoint(x1,x2);

y = f(x);

如果(y*y10)

{

y1 = y;

x1 = x;

}

其他

x2 = x;

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

return(x);

}

建议你看看C语言教程,很详细的。

相关文章

发表新评论