- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
c语言数值方法上机
第一次作业
拉格朗日差值计算
#includestdio.h
#includemath.h
float sort(int n,float x,float (*p)[2]);
main()
{ int i,j,n;
float x,y;
float (*p)[2];
scanf (%f,x);
printf(x=%f\n,x);
scanf (%d,n);
printf(n=%d\n,n);
for(i=0;in;i++)
for(j=0;j=1;j++)
{ scanf(%f,*(p+i)+j);
printf(x[%d][%d]=%f\n,i,j,*(*(p+i)+j));
}
y=sort( n,x,p);
printf(the result is %f\n,y);
}
float sort(int n,float x,float (*p)[2])
{ int i,j;
float a,b,k,c,e,d,y,q;
b=k=1;
y=0;
for(i=0;in;i++)
{
e=*(*(p+i)+1);
b=1;
k=1;
for(j=0;jn;j++)
{
if(j!=i)
{ a=*(*(p+i))-*(*(p+j));
b=a*b;
c=x-*(*(p+j));
k=k*c;
}
}
q=k/b;
d=q*e;
y=y+d;
}
return(y);
}
1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 0 0.0953 0.1823 0.2624 0.3365 0.4055 0.47 0.5306 0.5878 0.6419 0.6431 计算结果
把X=1.54代入的结果
把X=1.98代入得结果
牛顿向前插值
#includestdio.h
#includemath.h
float sort(int n,int i,float (*p)[2]);
main()
{ int i,j,n,b;
float x,N,k,y,m,y0,t,u;
float h;
float (*p)[2];
float a[100]={0};
float *p1;
scanf (%f,h);
printf (h=%f\n,h);
scanf (%f,x);
printf(x=%f\n,x);
scanf (%d,n);
printf(n=%d\n,n);
for(i=0;in;i++)
for(j=0;j=1;j++)
{ scanf(%f,*(p+i)+j);
printf(x[%d][%d]=%f\n,i,j,*(*(p+i)+j));
}
t=x-*(*p);
t=t/h;
y0=*(*(p+0)+1);
for(j=0;jn-1;j++)
{ b=n;
b=b-1;
printf(\n);
for(i=0;ib;i++)
{y=sort( n,i,p);
printf( %f,y);
if(i==0) a[j]=y; }
}
i=0;
j=1;
m=t;
N=y0;
p1=a[0];
while(in-1)
{ u=*p1;
N=N+m*u;
printf (\n???%f???\n,N);
j=j*(i+2);
m=m*(t-1)/j;
i++;
p1++;
}
printf(%12f\n,N);
}
float sort(int n,int i,float (*p)[2])
{ int j;
float a,y;
y=0;
j=i++;
a=*(*(p+i)+1)-*(*(p+j)+1);
*(*(p+j)+1)=a;
y=a;
return(y);
}
计算结果
当X=1.54时,f(x)=lnx的值
当X=1.98时,f(x)=lnx的值
牛顿向后插值
#includestdio.h
#includemath.h
float sort(int n,int i,float (*p)[2]);
main()
{ int i,j,n,b,kk;
float x,N,k,y,m,yn,t,u;
float h;
float (*p)[2];
float a[100]={0};
float *p1;
scanf
文档评论(0)