10个重要的算法C语言实现源代码_第1页
10个重要的算法C语言实现源代码_第2页
10个重要的算法C语言实现源代码_第3页
10个重要的算法C语言实现源代码_第4页
10个重要的算法C语言实现源代码_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、10个重要的算法c语言实现源代码(一)拉格朗日插值多项式#include #include #include float lagrange(float *x,float *y,float xx,int n) int i,j; float *a,yy=0.0; a=(float *)malloc(n*sizeof(float); for(i=0;i=n-1;i+) ai=yi; for(j=0;j=20) printf(error!the value of n must in (0,20).); getch();return 1;if(n=0) printf(error! the value o

2、f n must in (0,20).); getch(); return 1;for(i=0;i=n-1;i+) printf(x%d:,i); scanf(%f,&xi);printf(n);for(i=0;i=n-1;i+) printf(y%d:,i);scanf(%f,&yi);printf(n);printf(input xx:);scanf(%f,&xx);yy=lagrange(x,y,xx,n);printf(x=%f,y=%fn,xx,yy);getch();(二)牛顿插值多项式#include #include #include void difference(float

3、 *x,float *y,int n) float *f;int k,i;f=(float *)malloc(n*sizeof(float);for(k=1;k=n;k+) f0=yk; for(i=0;i=20) printf(error! the value of n must in (0,20).); getch(); return 1;if(n=0) printf(error! the value of n must in (0,20).);getch(); return 1;for(i=0;i=n-1;i+) printf(x%d:,i); scanf(%f,&xi); printf

4、(n);for(i=0;i=0;i-) yy=yy*(xx-xi)+yi;printf(newtoninter(%f)=%f,xx,yy);getch();10个重要的算法c语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 时间 : 2008-06-05 作者:佚名 编辑:本站点击: 8718 评论 (三)高斯列主元消去法:#include#include #define n 20int main() int n,i,j,k;int mi,tmp,mx;float ann,bn,xn;printf(ninput n:);scanf(%d

5、,&n);if(nn) printf(the input n should in(0,n)!n); getch(); return 1;if(n=0) printf(the input n should in(0,n)!n); getch(); return 1;printf(now input a(i,j),i,j=0.%d:n,n-1);for(i=0;in;i+) for(j=0;jn;j+) scanf(%f,&aij);printf(now input b(i),i,j=0.%d:n,n-1);for(i=0;in;i+)scanf(%f,&bi);for(i=0;in-2;i+)

6、for(j=i+1,mi=i,mx=fabs(aij);jmx) mi=j; mx=fabs(aji); if(imi) tmp=bi;bi=bmi;bmi=tmp; for(j=i;jn;j+) tmp=aij; aij=amij; amij=tmp; for(j=i+1;jn;j+) tmp=-aji/aii; bj+=bi*tmp; for(k=i;k=0;i-) xi=bi; for(j=i+1;jn;j+) xi-=aij*xj; xi/=aii;for(i=0;in;i+)printf(answer:n x%d=%fn,i,xi);getch();return 0;#include

7、#include#define number 20#define esc 0x1b#define enter 0x0dfloat anumbernumber+1 ,ark;int flag,n;exchange(int r,int k);float max(int k);message();main() float xnumber; int r,k,i,j; char celect; clrscr(); printf(nnuse gauss.); printf(nn1.jie please press enter.); printf(nn2.exit press esc.); celect=g

8、etch(); if(celect=esc) exit(0); printf(nn input n=); scanf(%d,&n); printf( nninput matrix a and b:); for(i=1;i=n;i+) printf(nninput a%d1-a%d%d and b%d:,i,i,n,i); for(j=1;j=n+1;j+) scanf(%f,&aij); for(k=1;k=n-1;k+) ark=max(k); if(ark=0) printf(nnits wrong!);message(); else if(flag!=k) exchange(flag,k

9、); for(i=k+1;i=n;i+) for(j=k+1;j=1;k-) float me=0; for(j=k+1;j=n;j+) me=me+akj*xj; xk=(akn+1-me)/akk; for(i=1;i=n;i+) printf( nnx%d=%f,i,xi); message();exchange(int r,int k)int i;for(i=1;i=n+1;i+) a0i=ari;for(i=1;i=n+1;i+) ari=aki;for(i=1;i=n+1;i+) aki=a0i;float max(int k)int i;float temp=0;for(i=k;

10、itemp) temp=fabs(aik); flag=i; return temp;message()printf(nn go on enter ,exit press esc!);switch(getch() case enter: main(); case esc: exit(0); default:printf(nninput error!);message();(四)龙贝格求积公式:#include#include#define f(x) (sin(x)/x)#define n 20#define max 20#define a 2#define b 4#define e 0.000

11、01float lbg(float p,float q,int n) int i;float sum=0,h=(q-p)/n;for (i=1;in;i+)sum+=f(p+i*h);sum+=(f(p)+f(q)/2;return(h*sum);void main() int i; int n=n,m=0; float tmax+12; t01=lbg(a,b,n); n*=2; for(m=1;mmax;m+) for(i=0;im;i+) ti0=ti1; t01=lbg(a,b,n); n*=2; for(i=1;i=m;i+) ti1=ti-11+(ti-11-ti-10)/(pow

12、(2,2*m)-1); if(tm-11tm1-e) printf(answer=%fn,tm1); getch(); return ; (五)牛顿迭代公式:#include#include#include#define n 100#define ps 1e-5#define ta 1e-5float newton(float (*f)(float),float(*f1)(float),float x0 ) float x1,d=0;int k=0;do x1= x0-f(x0)/f1(x0); if(k+n)|(fabs(f1(x1)ps) printf(nfailed!); getch()

13、; exit(); d=(fabs(x1)ps&fabs(f(x1)ta) ;return x1;float f(float x) return x*x*x+x*x-3*x-3; float f1(float x) return 3.0*x*x+2*x-3; void main() float f(float);float f1(float);float x0,y0;printf(input x0: );scanf(%f,&x0);printf(x(0)=%fn,x0);y0=newton(f,f1,x0);printf(nthe root is x=%fn,y0);getch();(六)牛顿

14、-科特斯求积公式:#include#includeint nc(a,h,n,r,f)float (*a);float h;int n,f;float *r; int nn,i;float ds;if(n1000|n2) if (f) printf(n faild! check if 1n1000!n,n); return(-1);if(n=2) *r=0.5*(*a)0+(*a)1)*(h);return(0);if (n-4=0) *r=0;*r=*r+0.375*(h)*(*a)n-4+3*(*a)n-3+3*(*a)n-2+(*a)n-1);return(0);if(n/2-(n-1)/

15、2=0)nn=n;elsenn=n-3;ds=(*a)0-(*a)nn-1;for(i=2;inn)*r=*r+0.375*(h)*(*a)n-4+3*(*a)n-3+3*(*a)n-2+(*a)n-1);return(0);main()float h,r;int n,ntf,f;int i;float a16;printf(input the xi(16):n);for(i=0;i=15;i+)scanf(%d,&ai);h=0.2;f=0;ntf=nc(a,h,n,&r,f);if(ntf=0)printf(nr=%fn,r); elseprintf(n wrong!return code

16、=%dn,ntf); getch();(七)雅克比迭代:#include #include #define n 20#define max 100#define e 0.00001int main() int n;int i,j,k;float t;float ann,bnn,cn,gn,xn,hn;printf(ninput dim of n:); scanf(%d,&n);if(nn) printf(faild! check if 0nn!n); getch(); return 1; if(n=0)printf(faild! check if 0nn!n); getch(); return

17、 1;printf(input ai,j,i,j=0%d:n,n-1);for(i=0;in;i+) for(j=0;jn;j+) scanf(%f,&aij);printf(input ci,i=0%d:n,n-1);for(i=0;in;i+)scanf(%f,&ci);for(i=0;in;i+) for(j=0;jn;j+) bij=-aij/aii; gi=ci/aii; for(i=0;imax;i+) for(j=0;jn;j+) hj=gj; for(k=0;kn;k+) if(j=k) continue; hj+=bjk*xk; t=0; for(j=0;jn;j+) if(

18、tfabs(hj-xj) t=fabs(hj-xj); for(j=0;jn;j+) xj=hj; if(te) printf(x_i=n); for(i=0;in;i+)printf(x%d=%fn,i,xi); getch(); return 0; printf(after %d repeat , returnn,max); getch(); return 1; getch();10个重要的算法c语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 时间 : 2008-06-05 作者:佚名 编辑:本站点击: 8723 评论 (八)秦九

19、昭算法:#include float qin(float a,int n,float x) float r=0; int i; for(i=n;i=0;i-) r=r*x+ai; return r;main() float a50,x,r=0; int n,i; do printf(input frequency:); scanf(%d,&n); while(n1); printf(input value:); for(i=0;i=n;i+) scanf(%f,&ai); printf(input frequency:); scanf(%f,&x); r=qin(a,n,x); printf(

20、answer:%f,r); getch();(九)幂法:#include#include#define n 100#define e 0.00001#define n 3float xn=0,0,1;float ann=2,3,2,10,3,4,3,6,1;float yn;main() int i,j,k; float xm,oxm; oxm=0; for(k=0;kn;k+) for(j=0;jn;j+) yj=0; for(i=0;in;i+) yj+=aji*xi; xm=0; for(j=0;jxm) xm=fabs(yj); for(j=0;jn;j+) yj/=xm; for(j=0;jn;j+) xj=yj; if(fabs(xm-oxm)e) printf(max:%fnn,xm); printf(vi:n); for(k=0;kn;k+) printf(%fn,yk); break; oxm=xm; getch();10个重要的算法c语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 时间 : 2008-06-05 作者:佚名 编辑:本站点击: 8725 评论 (十)高斯塞德尔:#include#include#define n 20#define m 99

温馨提示

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

评论

0/150

提交评论