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语言教程,很详细的。
最后更新于 2023-10-12 08:45:13 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章