2012级6班###(学号)计算机数值方法实验报告成绩册姓名:安元龙学号:2012060501成绩:实验编号实验名称实验学时实验成绩实验一Newton插值2实验二Romberg算法2实验三求拟合算法2实验四弦截断法2实验五Courant求解方程组2实验六超松弛迭代求解方程组2实验七幂法和反幂法2实验八R-K方法求解初值问题2数值计算方法与算法实验报告学期:2014至___2015第1学期2014年10月26日课程名称:__数值计算方法与算法__专业:信息与计算科学12级5班实验编号:1实验项目Neton插值多项式指导教师__孙峪怀姓名:安元龙学号:2012060501实验成绩:一、实验目的及要求实验目的:掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。实验要求:1.给出Newton插值算法2.用C语言实现算法二、实验内容三、实验步骤(该部分不够填写.请填写附页)1.算法分析:下面用伪码描述Newton插值多项式的算法:Step1输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x.Step2形成差商表fori=0tonforj=ntoif(j)=((f(j)-f(j-1)/(x(j)-x(j-1-i));Step3置初始值temp=1,newton=f(0)Step4fori=1tontemp=(x-x(i-1))*temp/*由temp(k)=(x-x(k-1))*temp(k-1)形成(x-x(0).....(x-x(i-1)*/Newton=newton+temp*f(i);Step5输出f(x)的近似数值newton(x)=newton.#includestdio.h#defineMAX_N20typedefstructtagPOINT{doublex;doubley;}POINT;intmain(){intn;inti,j;POINTpoints[MAX_N+1];doublediff[MAX_N+1];doublex,tmp,newton=0;printf(\nInputnvalue:);scanf(%d,&n);if(nMAX_N){printf(TheinputnislargerthenMAX_N,pleaseredefinetheMAX_N.\n);return1;}if(n=0){printf(Pleaseinputanumberbetween1and%d.\n,MAX_N);return1;}printf(Nowinputthe(x_i,y_i),i=0,...,%d:\n,n);for(i=0;i=n;i++)scanf(%lf%lf,&points[i].x,&points[i].y);printf(NowinputtheXvalue:);scanf(%lf,&x);for(i=0;i=n;i++)diff[i]=points[i].y;for(i=0;in;i++){for(j=n;ji;j--){diff[j]=(diff[j]-diff[j-1])/(points[j].x-points[j-1-i].x);}}tmp=1;newton=diff[0];for(i=0;in;i++){tmp=tmp*(x-points[i].x);newton=newton+tmp*diff[i+1];}printf(newton(%f)=%f\n,x,newton);return0;}数值计算方法与算法实验报告学期:2014至___2015第1学期2014年10月26日课程名称:__数值计算方法与算法__专业:信息与计算科学11级5班实验编号:2实验项目Romberg算法指导教师__孙峪怀姓名:安元龙学号:2012060501实验成绩:一、实验目的及要求实验目的:熟练掌握数值积分的基本思想和动手推导积分公式的能力,并写出自己设计的变步长算法,用此算法解决实际问题。主要锻炼分析问题及对数值方法产生的误差在实际执行算法中的变化,体会事前误差和事后误差的不同之处。实验要求:写出Romberg算法的描述,并用此算法计算下列定积分的值,要求满足给定误差。二、实验内容。(1)用变步长的Romberg方法计算定积分:10sinIxdx给定误差限为310*5.0三、实验步骤(该部分不够填写.请填写附页)1.算法分析:下面用伪码描述Romberg的算法描述:Sstep1输入区间端点a,b,精度控制值e,循环次数M,定义函数f(x),取n=1,h=b-a;Step2R1,1=(f(a)+f(b))*h/2;Step3fork=2toM{Rk,1=(R(k-1),1+h(k-1)*2212/)*)1*2((kihkiaf/*12/kkhh*/forj=2tok{)14/()(11,11,1,,jjkjkjkjkRRRR}ifeRRkkkk||1,1,退出循环}Step4输出kkR,.2.用C语言实现算法的程序代码#includestdio.h#includemath.h#definef(x)(sin(x))#defineN_H20#defineMAXREPT10#definea1.0#defineb2.0#defineepsilon0.00001doublecomputeT(doubleaa,doublebb,longintn)/*复化梯形公式*/{inti;doublesum,h=(bb-aa)/n;sum=0;for(i=1;in;i++)sum+=f(aa+i*h);sum+=(f(aa)+f(bb))/2;return(h*sum);}voidmain(){inti;longintn=N_H,m=0;doubleT[MAXREPT+1][2];T[0][1]=computeT(a,b,n);n*=2;for(m=1;mMAXREPT;m++){for(i=0;im;i++){T[i][0]=T[i][1];}T[0][1]=computeT(a,b,n);n*=2;for(i=1;i=m;i++)T[i][1]=T[i-1][1]+(T[i-1][1]-T[i-1][0])/(pow(2,2*m)-1);if((T[m-1][1]T[m][1]+epsilon)&&(T[m-1][1]T[m][1]-epsilon)){printf(TheIntegrateis%lf\n,T[m][1]);return;}}printf(Returnnosolved...\n);}3.运行结果数值计算方法与算法实验报告学期:2014至___2015第1学期2014年10月26日课程名称:__数值计算方法与算法__专业:信息与计算科学12级5班实验编号:3实验项目:求拟合算法指导教师__孙峪怀姓名:安元龙学号:2011060501实验成绩:一、实验目的及要求实验目的:学习了曲线拟合的最小二乘法,会求拟合曲线,线性拟合和二次拟合函数,还有形如aexp(bx)的曲线拟合,实验主要是求形如aexp(bx)的曲线拟合,并理解体会其意义。实验要求:1.形如aexp(bx)曲线拟合的算法;2.用C语言实现算法二、实验内容用形如p(x)=aexp(bx)的函数拟合给定()三、实验步骤(该部分不够填写.请填写附页)1.算法分析:拟合函数aexp(bx)的算法描述:Step1输入m值,及(xi,yi),i=1,2,...,m;Step2解方程组mmixi1miyi1loga=mixi1mixi12^bmiyixi1logStep3输出p(x)=aexp(bx)即所求拟合函数1.算法分析:2.用C语言实现算法的程序代码#includestdio.h#includemath.h#defineMAX_N25typedefstructtagPOINT{doublex;doubley;}POINT;intmain(){intm;inti;POINTpoints[MAX_N];staticdoubleu11,u12,u21,u22,c1,c2;doubleA,B,tmp;printf(\nInputemvalue:);scanf(%d,&m);if(m=MAX_N){printf(TheinputemislargerthanMAX_N,pleaseredefinetheMAN_N.\n);return1;}if(m=0){printf(Pleaseinputanumberbetween1and%d.\n,MAX_N);return1;}printf(NOWinputethe(x_i,y_i),i=1,...,%d:\n,m);for(i=1;i=m;i++){scanf(%lf,&tmp);points[i].x=tmp;scanf(%lf,&tmp);points[i].y=tmp;}for(i=1;i=m;i++){u21+=points[i].x;u22+=points[i].x*points[i].x;c1+=log(points[i].y);c2+=points[i].x*log(points[i].y);}u12=u21;u11=m;A=(c1*u22-c2*u12)/(u11*u22-u12*u21);B=(c1*u21-c2*u11)/(u21*u12-u22*u11);printf(Solve:p(x)=%lfexp(%lfx)\n,exp(A),B);return0;}3.实验输出结果:数值计算方法与算法实验报告学期:2014至___2015第1学期2014年10月27日课程名称:__数值计算方法与算法__专业:信息与计算科学12级5班实验编号:4实验项目弦截断法指导教师__孙峪怀姓名:安元龙学号:2012060501实验成绩:一、实验目的及要求实验目的:学习什么是弦截法,了解弦截法的用法,并学会用弦截法求方程的根。二、实验内容。用弦截法求f(x)在x0,x1附近的根三、实验步骤(该部分不够填写.请填写附页)1.算法分析:弦截法的算法描述:Sstep1定义函数f(x0,输入控制精度epsilon,迭代初始值x_k1,x_k计算f1:=f(x_k1)!x_k1,x_k2表示x(k-1),xkStep2fork=2toMAXREPT2.1f2:=f(x_k2)2.1x_k:=x_k2-f2(x_k2-x_k1)/(f2-f1)!x_k表示x(k+1)2.3if(|x_k-x_k2|epsilon)OR(|f(x_k)|epsilon)Then{输出满足给定精度的近似解x_k,结束}2.4f1:=f2!为下一次迭代准备数值x_k1:=x_k2X_k2:=x_kStep3输出:在初始值x_k1,x_k2附近f(x)无根4.用C语言实现算法的程序代码#includestdio.h#includemath.h#definef(x)(x*x*x-7.7*x*x+19.2*x-15.3)#definex00.0#definex11.0#defineMAXREPT1000#defineepsilon0.00001voidmain(){inti;doublex_k=x0,x_k1=x1,x_k2=x1;for(i=0;iMAXREPT;i++){printf(Got...%f\n,x_k2);x_k2=x_k1-(f(x_k1)*(x_k1-x_k))/(f(x_k1)-f(x_k));if(x_k2-x_k1epsilon&&x_k2-x_k1-epsilon){printf(!Root:%f\n,x_k2);return;}x_k=x_k1;x_k1=x_k2;}printf(After%drepeate,nosolved.\n,MAXREPT);}5.运行结果数值计算方法与算法实验报告学期:2014至___2