10个重要的算法C语言实现源代码.doc

上传人:laozhun 文档编号:2384206 上传时间:2023-02-17 格式:DOC 页数:14 大小:33KB
返回 下载 相关 举报
10个重要的算法C语言实现源代码.doc_第1页
第1页 / 共14页
10个重要的算法C语言实现源代码.doc_第2页
第2页 / 共14页
10个重要的算法C语言实现源代码.doc_第3页
第3页 / 共14页
10个重要的算法C语言实现源代码.doc_第4页
第4页 / 共14页
10个重要的算法C语言实现源代码.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《10个重要的算法C语言实现源代码.doc》由会员分享,可在线阅读,更多相关《10个重要的算法C语言实现源代码.doc(14页珍藏版)》请在三一办公上搜索。

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

21、=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 99float aNN;float bN;int ma

22、in() int i,j,k,n; float sum,no,d,s,xN; 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 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 bi,i=0%d:n,n-1);for(i

23、=0;in;i+) scanf(%f,&bi); for(i=0;in;i+) xi=0;k=0;printf(nk=%dx=,k);for(i=0;iM)printf(nError!n”);getch(); break;no=0.0;for(i=0;in;i+) s=xi; sum=0.0; for(j=0;jn;j+) if (j!=i) sum=sum+aij*xj; xi=(bi-sum)/aii; d=fabs(xi-s); if (nod) no=d;printf(nk=%2dx=,k);for(i=0;i=0.1e-6);if(no0.1e-6) printf(nn answer=n); printf(nk=%d,k); for (i=0;in;i+) printf(n x%d=%12.8f,i,xi);getch();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号