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

下载本文档

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

文档简介

10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔 (转)1.拉格朗日插值多项式,用于离散数据的拟合 C/C+code#include#include#includefloatlagrange(float*x,float*y,floatxx,intn)/*拉格朗日插值算法*/inti,j;float*a,yy=0.0;/*a作为临时变量,记录拉格朗日插值多项式*/a=(float*)malloc(n*sizeof(float);for(i=0;i=n-1;i+)ai=yi;for(j=0;j=20)printf(Error!Thevalueofnmustin(0,20).);getch();return1;if(n=0)printf(Error!Thevalueofnmustin(0,20).);getch();return1;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(Inputxx:);scanf(%f,&xx);yy=lagrange(x,y,xx,n);printf(x=%f,y=%fn,xx,yy);getch();2.牛顿插值多项式,用于离散数据的拟合C/C+code#include#include#includevoiddifference(float*x,float*y,intn)float*f;intk,i;f=(float*)malloc(n*sizeof(float);for(k=1;k=n;k+)f0=yk;for(i=0;i=20)printf(Error!Thevalueofnmustin(0,20).);getch();return1;if(n=0)printf(Error!Thevalueofnmustin(0,20).);getch();return1;for(i=0;i=n-1;i+)printf(x%d:,i);scanf(%f,&xi);printf(n);for(i=0;i=0;i-)yy=yy*(xx-xi)+yi;printf(NewtonInter(%f)=%f,xx,yy);getch();3.高斯列主元消去法,求解其次线性方程组C/C+code#include#include#defineN20intmain()intn,i,j,k;intmi,tmp,mx;floataNN,bN,xN;printf(nInputn:);scanf(%d,&n);if(nN)printf(Theinputnshouldin(0,N)!n);getch();return1;if(n=0)printf(Theinputnshouldin(0,N)!n);getch();return1;printf(Nowinputa(i,j),i,j=0.%d:n,n-1);for(i=0;in;i+)for(j=0;jn;j+)scanf(%f,&aij);printf(Nowinputb(i),i,j=0.%d:n,n-1);for(i=0;in;i+)scanf(%f,&bi);for(i=0;in-2;i+)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:nx%d=%fn,i,xi);getch();return0;#include#include#defineNUMBER20#defineEsc0x1b#defineEnter0x0dfloatANUMBERNUMBER+1,ark;intflag,n;exchange(intr,intk);floatmax(intk);message();main()floatxNUMBER;intr,k,i,j;charcelect;clrscr();printf(nnUseGauss.);printf(nn1.JiepleasepressEnter.);printf(nn2.ExitpressEsc.);celect=getch();if(celect=Esc)exit(0);printf(nninputn=);scanf(%d,&n);printf(nnInputmatrixAandB:);for(i=1;i=n;i+)printf(nnInputa%d1-a%d%dandb%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(nnItswrong!);message();elseif(flag!=k)exchange(flag,k);for(i=k+1;i=n;i+)for(j=k+1;j=1;k-)floatme=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(intr,intk)inti;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;floatmax(intk)inti;floattemp=0;for(i=k;itemp)temp=fabs(Aik);flag=i;returntemp;message()printf(nnGoonEnter,ExitpressEsc!);switch(getch()caseEnter:main();caseEsc:exit(0);default:printf(nnInputerror!);message();4.龙贝格求积公式,求解定积分C/C+code#include#include#definef(x)(sin(x)/x)#defineN20#defineMAX20#definea2#defineb4#definee0.00001floatLBG(floatp,floatq,intn)inti;floatsum=0,h=(q-p)/n;for(i=1;in;i+)sum+=f(p+i*h);sum+=(f(p)+f(q)/2;return(h*sum);voidmain()inti;intn=N,m=0;floatTMAX+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(2,2*m)-1);if(Tm-11Tm1-e)printf(Answer=%fn,Tm1);getch();return;C/C+code5.牛顿迭代公式,求方程的近似解C/C+code#include#include#include#defineN100#definePS1e-5#defineTA1e-5floatNewton(float(*f)(float),float(*f1)(float),floatx0)floatx1,d=0;intk=0;dox1=x0-f(x0)/f1(x0);if(k+N)|(fabs(f1(x1)PS)printf(nFailed!);getch();exit();d=(fabs(x1)PS&fabs(f(x1)TA);returnx1;floatf(floatx)returnx*x*x+x*x-3*x-3;floatf1(floatx)return3.0*x*x+2*x-3;voidmain()floatf(float);floatf1(float);floatx0,y0;printf(Inputx0:);scanf(%f,&x0);printf(x(0)=%fn,x0);y0=Newton(f,f1,x0);printf(nTherootisx=%fn,y0);getch();6.牛顿-科特斯求积公式,求定积分C/C+code#include#includeintNC(a,h,n,r,f)float(*a);floath;intn,f;float*r;intnn,i;floatds;if(n1000|n2)if(f)printf(nFaild!Checkif1n1000!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)/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()floath,r;intn,ntf,f;inti;floata16;printf(Inputthexi(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(nWrong!Returncode=%dn,ntf);getch();7.雅克比迭代,求解方程近似解C/C+code#include#include#defineN20#defineMAX100#definee0.00001intmain()intn;inti,j,k;floatt;floataNN,bNN,cN,gN,xN,hN;printf(nInputdimofn:);scanf(%d,&n);if(nN)printf(Faild!Checkif0nN!n);getch();return1;if(n=0)printf(Faild!Checkif0nN!n);getch();return1;printf(Inputai,j,i,j=0%d:n,n-1);for(i=0;in;i+)for(j=0;jn;j+)scanf(%f,&aij);printf(Inputci,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(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();return0;printf(after%drepeat,returnn,MAX);getch();return1;getch();8.秦九昭算法C/C+code#includefloatqin(floata,intn,floatx)floatr=0;inti;for(i=n;i=0;i-)r=r*x+ai;returnr;main()floata50,x,r=0;intn,i;doprintf(Inputfrequency:);scanf(%d,&n);while(n1);printf(Inputvalue:);for(i=0;i=n;i+)scanf(%f,&ai);printf(Inputfrequency:);scanf(%f,&x);r=qin(a,n,x);printf(Answer:%f,r);getch();9.幂法C/C+code#include#include#defineN100#definee0.00001#definen3floatxn=0,0,1;floatann=2,3,2,10,3,4,3,6,1;floatyn;main()inti,j,k;floatxm,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/C+code#include#include#defineN20#defineM99floataNN;floa

温馨提示

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

评论

0/150

提交评论