数值计算C语言常用小程序_第1页
数值计算C语言常用小程序_第2页
数值计算C语言常用小程序_第3页
数值计算C语言常用小程序_第4页
数值计算C语言常用小程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、 秦九韶算法 2、二分法 3、拉格朗日插值 4、埃特金算法 5、复化梯形法6、复化辛甫生算法 7、二阶龙格库塔方法 8、四阶龙格库塔方法9、改进的欧拉方法10、迭代法11、埃特金加速方法:12、牛顿迭代法13、追赶法14、雅克比迭代15、蛋白质设计:17高斯消去法: 1、 秦九韶算法P11.3 利用秦九韶算法求多项式 ,在x=3时的值。程序:#include<stdio.h>#include<math.h>void main()float a100,v,x;int n,i,k;scanf("%d%f",&n,&x);fo

2、r(i=0;i<=n;i+)scanf("%f",&ai);v=an;k=1;dov=x*v+an-k;k=k+1;while(k<=n);printf("v=%f",v); 运行结果: 2、二分法P11.1用二分法求方程法x*x*x-x-1=0在1,2内的近似根,要求误差不超过#include<stdio.h>#include<math.h>float fun(float);void main()float a,b,c,x,y,y1;scanf("%f%f%f",&am

3、p;a,&b,&c);y1=fun(a);dox=(a+b)/2;y=fun(x);if(y*y1>0)a=x;elseb=x;while(b-a)>=c);printf("%f,%fn",x,y);float fun(float m)float n;n=m*m*m-m-1;return(n); 运行结果:  3、拉格朗日插值程序:#include<stdio.h>main()float a,b,t,x100,y100;int n,i,j,k;scanf("%f%d",&a,&

4、amp;n);for(i=0;i<=n;i+)scanf("%f%f",&xi,&yi);k=0;b=0;for(k=0;k<=n;k+)t=1;for(j=0;j<=n;j+)if(j!=k)t=t*(a-xj)/(xk-xj);b=b+t*yk;printf("%fn",b);  4、埃特金算法程序:#include<stdio.h>#include<math.h>main()float a,b,c,x100,y100;int i,j,n,k;scanf("%d%

5、f",&n,&a);for(i=0;i<=n;i+)scanf("%f%f",&xi,&yi);for(k=1;k<=n;k+)for(i=k;i<=n;i+)yi=yk-1+(yi-yk-1)*(a-xk-1)/(xi-xk-1);printf("%fn",yn);5、复化梯形法P95.9 设 ,用复化梯形法求积分 的近似值程序:#include<stdio.h>#include<math.h>double fun(double);void main()double a

6、,b,h,s,x,y;int n,k;scanf("%lf%lf%d",&a,&b,&n);h=(b-a)/n;s=0;x=a;y=fun(x);for(k=1;k<=n;k+)s=s+fun(x);x=x+h;s=s+fun(x);s=(h/2)*s;printf("s=%lfn",s);double fun(double m)double n;n=exp(-m)*sin(4*m)+1;return(n);运行结果:  6、复化辛甫生算法P95.9 设 ,用复化辛甫生法求积分 的近似值程序:#inclu

7、de<stdio.h>#include<math.h>double fun(double);void main()double a,b,h,s,x,y;int n,k;scanf("%lf%lf%d",&a,&b,&n);h=(b-a)/n;s=0;x=a;y=fun(x);for(k=1;k<=n;k+)s=s+fun(x);x=x+h/2;s=s+4*fun(x);x=x+h/2;s=s+fun(x);s=(h/6)*s;printf("s=%lfn",s);double fun(double m

8、)double n;n=exp(-m)*sin(4*m)+1;return(n);运行结果:   7、二阶龙格库塔方法求解初值问题: 取h=0.2程序:#include<stdio.h>#include<math.h>float fun(float,float);void main()float h,x0,y0,x1,y1,k1,k2;int n,N;scanf("%f%f%f%d",&x0,&y0,&h,&N);n=1;for(n=1;n<=N;n+)x1=x0+h;k1

9、=fun(x0,y0);k2=fun(x0+h/2,y0+h/2*k1);y1=y0+h*k2;printf("%f,%fn",x1,y1);x0=x1;y0=y1;float fun(float a,float b)float m;m=b-2*a/b;return(m);运行结果:   8、四阶龙格库塔方法求解初值问题: 取h=0.2程序:#include<stdio.h>#include<math.h>float fun(float,float);void main()float h,x0,y0,x1,y1

10、,k1,k2,k3,k4;int n,N;scanf("%f%f%f%d",&x0,&y0,&h,&N);n=1;for(n=1;n<=N;n+)x1=x0+h;k1=fun(x0,y0);k2=fun(x0+h/2,y0+h/2*k1);k3=fun(x0+h/2,y0+h/2*k2);k4=fun(x1,y0+h*k3);y1=y0+h/6*(k1+2*k2+2*k3+k4);printf("%f,%f",x1,y1);x0=x1;y0=y1;float fun(float a,float b)float m;m

11、=b-2*a/b;return(m);运行结果:  9、改进的欧拉方法求解初值问题: 程序:#include<stdio.h>#include<math.h>float fun(float,float);void main()float x0,y0,h,x1,y1,yp,yc;int n,N;scanf("%f%f%f%d",&x0,&y0,&h,&N);for(n=1;n<=N;n+)x1=x0+h;yp=y0+h*fun(x0,y0);yc=y0+h*fun(x1,yp);y1=

12、(yp+yc)/2;printf("%f,%f",x1,y1);x0=x1;y0=y1;float fun(float a,float b)float m;m=b-2*a/b;return(m);运行结果:   10、迭代法P131 例2 用迭代法求方程 在 附近的一个根 ,要求精度为程序:#include<stdio.h>#include<math.h>float fun(float);void main()float x0,x1,c; int k,N; scanf("%f%f%d&quo

13、t;,&x0,&c,&N); for(k=1;k<=N;k+) x1=fun(x0);  printf("%fn",x1);  if(fabs(x1-x0)<c) break;  x0=x1; if(k-1=N)printf("Failure!n");float fun(float m)float n;n=exp(-m);return(n); 运行结果:  11、埃特金加速方法:程序:#include<stdio.h>

14、#include<math.h>float fun(float);void main()float x0,x1,x2,c; int k,N; scanf("%f%f%d",&x0,&c,&N); for(k=1;k<=N;k+) x1=fun(x0);  x2=fun(x1);  x2=x2-(x2-x1)*(x2-x1)/(x2-2*x1+x0);  if(fabs(x2-x0)<c)  printf("%fn",x2);&#

15、160; break;  x0=x2; if(k-1=N)printf("Failure!n");float fun(float m)float n;n=exp(-m);return(n);运行结果:  12、牛顿迭代法:例5、用牛顿法解方程牛顿公式为: ,取x=0.5程序:#include<stdio.h>#include<math.h>float fun(float);float ff(float);void main()float x0,x1,c; int k,N; scanf(&qu

16、ot;%f%f%d",&x0,&c,&N); for(k=1;k<=N;k+) if(ff(x0)!=0) x1=x0-fun(x0)/ff(x0); printf("%fn",x1);  if(fabs(x1-x0)<c) break;  x0=x1;  else        printf("*"); if(k=N)printf("Failure!

17、n");float fun(float m)float n;n=m-exp(-m);return(n);float ff(float m)float n;n=1+m;return(n);运行结果:  13、追赶法: P198.3.用追赶法求解下列方程组:  程序:#include<stdio.h>#include<math.h>void main()float a100,b100,c100,d100,t;int i,n;scanf("%d",&n);for(i=2;i<=n;i

18、+)scanf("%f",&ai);for(i=1;i<=n;i+)scanf("%f",&bi);for(i=1;i<=n-1;i+)scanf("%f",&ci);for(i=1;i<=n;i+)scanf("%f",&di);c1=c1/b1;d1=d1/b1;for(i=2;i<n;i+)t=bi-ci-1*ai;ci=ci/t;di=(di-di-1*ai)/t;dn=(dn-dn-1*an)/(bn-cn-1*an);printf("%f

19、n",dn);for(i=n-1;i>=1;i-)di=di-ci*di+1;printf("%fn",di); 运行结果:14、雅克比迭代程序:#include<stdio.h>#include<math.h>#define N 50                        

20、60;    #define M 4void main()double xM,yM,aMM,bM,dM,c,t; double ff(double ,int); int k,i,j,n;n=M-1;scanf("%lf",&c);                       

21、60;             for(i=0;i<=n;i+)scanf("%lf",&xi); scanf("%lf",&bi);   for(i=0;i<=n;i+)for(j=0;j<=n;j+)scanf("%lf",&a0i*M+j);for(k=1;k<=N;k+)for(i=1;i<=n;i+)fo

22、r(j=1,t=0;j<=n;j+)if(j=i)continue;elset=t+aij*xj;yi=(bi-t)/aii;for(i=1;i<=n;i+)di=fabs(xi-yi);t=ff(d,n+1);if(t<c) break;elsefor(i=1;i<=n;i+)xi=yi;if(k=N)printf("Failure!n");if(k<N)printf("k=%dn",k);for(i=1;i<=n;i+)printf("yi=%fn",yi);double ff(double a

23、,int n) double p;  int t;  p=a1; for(t=2;t<n;t+)if(p<at)p=at;return(p);运行结果:   15、蛋白质设计: 程序:#include <stdio.h>#include <stdlib.h>#include <math.h> void main()printf("横坐标     纵坐标    竖坐标n"

24、);  FILE *fp;char c100,x30007,y30007,z30007;float a3000,b3000,d3000,r3000;int i,k=0,j,n=0,m,p;float X3000,Y3000,Z3000,s1=0,s2=0,s3=0,av_x,av_y,av_z;fp=fopen("1a1c.pdb","r");for(i=0;i<=10000;i+)fgets(c,81,fp);if(c0='A'&&c1='T'&&c2='

25、O'&&c3='M')  for(j=0;j<6;j+)xkj=c32+j;                               printf("%c",xkj);printf("

26、60;   ");for(j=0;j<6;j+)                                ykj=c40+j;         &#

27、160;                     printf("%c",ykj);printf("    ");for(j=0;j<6;j+)              &

28、#160;                zkj=c48+j;printf("%c",zkj);printf("    ");Xk=atof(xk);s1+=Xk;Yk=atof(yk);s2+=Yk;Zk=atof(zk);s3+=Zk;printf("n");k+;if(c77='C') n+;av_x=s1/k;av_y=s2

29、/k;av_z=s3/k;printf("共有:%dn",k+1);printf("av_x=%f,av_y=%f,av_z=%fn",av_x,av_y,av_z);printf("C原子个数为:%dn",n);printf("平移原点后的坐标:n");for(m=0;m<k;m+)am=Xm-av_x;printf("%f     ",am);          

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论