编写函数M文件Romberg如下:funcitont=Romberg(fname,a,b,e)%Rom%Romberg法求函数的积分%fname是被积函数,a是上限,b是下限,e为精度(默认1e-4)Ifnargin4,e=1e-4;endi=1;j=1;h=b-a;T(i,1)=h/2*(feval(fname,a)+feval(fname,b));T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2;T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1);whileabs(T(i+1,i+1)-T(i,i))ei=i+1;h=h/2;T(i+1,1)=T(i,1)/2+sum(feval(fname,a+h/2:h:b-h/2+0.001*h))*h/2;Forj=1:iT(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1);endendTt=T(i+1,j+1)formatlong;Romberg(inline('sin(x)./x'),eps,1,0.5e-6);formatshort;T=0.920735492403950000.939793284806180.94614588227395000.944513521665390.946083004063670.946086933951790t=0.94608307038722实验名称:龙格—库塔方法(实验三)指导教师:实验时数:2实验设备:安装了Matlab、C++、VF软件的计算机实验日期:200年月日实验地点:第五教学楼北802实验目的:掌握三阶、四阶龙格—库塔方法,能够用三阶和四阶经典公式求解微分方程。实验准备:1.在开始本实验之前,请回顾教科书的相关内容;2.需要一台准备安装WindowsXPProfessional操作系统和装有VC++6.0的计算机。实验内容及要求取步长,写出用经典四阶龙格—库塔方法求解初值问题0.945690863582700.946083310888470.946083069350920.94608307038722的计算公式.实验过程(参考程序):编写命令M文件chap8_3:a=0;y0=2;h=0.25;n=0;x_rec(1)=a;y_rec(1)=y0;fprintf('x[%2.0f]=%10.6fy[%2.0f]=%10.6f',n,x_rec(1),n,y_rec(1))x=a,y=y0;whilex5n=n+1;k1=fun1_chap8(x,y);k2=fun1_chap8(x+h/2,y+h*k1/2);k3=fun1_chap8(x+h/2,y+h*k2/2);k4=fun1_chap8(x+h,y+h*k3);y=y+h*(k1+2*k2+2*k3+k4)/6;x=a+n*h;y_rec(n+1)=y;x_rec(n+1)=x;fprintf('x[%2.0f]=%10.6fy[%2.0f]=%10.6f',n,x_rec(1),n,y_rec(n+1))endplto(x_rec,y_rec)在命令窗口调用M文件chap8_3,输出结果:chap8_3x[0]=0.000000y[0]=2.000000x[1]=0.250000y[1]=1.882308x[2]=0.500000y[2]=1.599896x[3]=0.750000y[3]=1.279948x[4]=1.000000y[4]=1.000027x[5]=1.250000y[5]=0.780556x[6]=1.500000y[6]=0.615459x[7]=1.750000y[7]=0.492374x[8]=2.000000y[8]=0.400054x[9]=2.250000y[9]=0.329940x[10]=2.500000y[10]=0.275895x[11]=2.750000y[11]=0.233602x[12]=3.000000y[12]=0.200020x[13]=3.250000y[13]=0.172989x[14]=3.500000y[14]=0.150956x[15]=3.750000y[15]=0.132790x[16]=4.000000y[16]=0.117655x[17]=4.250000y[17]=0.104924x[18]=4.500000y[18]=0.094123x[19]=4.750000y[19]=0.084885x[20]=5.000000y[20]=0.076927实验名称:Newton方法(实验四)指导教师:实验时数:2实验设备:安装了Matlab、C++、VF软件的计算机实验日期:200年月日实验地点:第五教学楼北802实验目的:掌握Newton迭代算法,能够根据所给方程求出在某一点附近的根。实验准备:3.在开始本实验之前,请回顾教科书的相关内容;4.需要一台准备安装WindowsXPProfessional操作系统和装有VC++6.0的计算机。实验内容及要求公元1225年,Lenardo宣布他求得方程的一个根.当时颇为轰动,但无人知道他是用什么方法得到的.现在,请你试试用Newton迭代法求解这个结果.实验过程(参考程序):编写Matlab函数M文件Newton如下:Functionx=Newton(fname,dfname,x0,e,N)%用途:Newton迭代法解非线性方程f(x)=0%fname和dfname分别表示f(x)及其导数函数的M函数句柄或内嵌函数表达式,%x0为迭代初值,e为精度(默认值le-4),%x0为返回数值解,并显示计算过程,设置迭代次数上限N以防发散(默认500次)Ifnargin5,N=500;endIfnargin4,e=le-4;endX=x0;x0=x+2﹡e;k=0;Fprintf(‘It.no=%2dx%[2d]=%12.9f`,k,k,x)Whileabs(x0-x)e£kNSPANK=K+1X0=x;x=x0-feval(fname,x0)/feval(dfname,x0);Fprintf(It.no=%2dx[%2d]=%12.9f`,k,k,x)EndIfk==N,fprintf(`已达到迭代次数上限`);end在命令窗口编写内嵌函数表达式,并调用函数M文件Newton:fun=inline(,x^3+2﹡x^2+10﹡x-20`);dfun=inline(3﹡x^2+4﹡x+10);Newton(fun,dfun,1.5,0.5e-6);It.no=0x[0]=1.500000000It.no=1x[1]=1.373626374It.no=2x[2]=1.368814820It.no=3x[3]=1.368808108It.no=4x[4]=1.368808108五、弦截法例4.15用弦截法求方程f(x)=x(x+1)2-1=0在0.4附近的一个实根.初始值x0=0.4,x1=0.6,精确指4位有效数字.编写Matlab函数M文件XianjieMethod和chap4-fun如下:Functionf=XianjieMethod(x0,x1)X2=x1-chap4-fun(x1)*(x1-x0)/chap4—fun(x1)—chap—fun(x0));Eps=le—4;N==0;rprintf('迭代次数x—nfeval(x—n)'')rprintf('n=%3.0fx--%d=%10.5f%10.6e',n,n,xx0,chap4—fun(x0))whileabs(x1—x0)eps&(n600)x0=x1;x1=x2;x2=x1—chap4—fun(x1)*(x1-x0)/(chap4—fun(x1)—chap4-fun(x0));n=n+1fprintf('n=%3.0fx--%10.5f%10.6e',n,n,x0,chap4—fun(x0))endfprintf('迭代次数n=%3.0fx﹡=%10.5f',nx0)functionf=chap4—fun(x)f=x*(x+1)^2-1;取x0=0.4,x1=0.6在命令窗口调用函数M文件XianjieMeethod输出结果如下:XianjieMethod(0.4,0.6)迭代次数x-nfeval(x-n)n=0x-0=0.40000-2.160000e-001n=1x-1=0.600005.360000e-001n=2x-2=0.45745-2.831381e-002n=3x-3=0.46460-3.410914e-003n=4x-4=0.4655582.698819e-005迭代次数n=4x*=0.46558实验名称:列主元的高斯消去法(实验五)指导教师:实验时数:2实验设备:安装了Matlab、C++、VF软件的计算机实验日期:200年月日实验地点:第五教学楼北802实验目的:掌握列主元的高斯消去法思想,能够利用列主元的高斯消去法求解任意阶数的线性方程组。实验准备:5.在开始本实验之前,请回顾教科书的相关内容;6.需要一台准备安装WindowsXPProfessional操作系统和装有VC++6.0的计算机。实验内容及要求解下列方程组实验过程(参考程序):编写Matlab命令M文件chap3_1如下:ClearFprintf(‘增广矩阵’)A=[0.792,0.81,0.9,0.6867;1,1,1,0.8338;1.331,1.21,1,1,1.000]%输入增广距阵%第一次选主元,第三行和第一行交换fprintf(’第一次选主元后的增广距阵’)tempo=A(3,:);A(3,:)=A(1,:);A(1,:)=tampo;A%第一次消元Fprintf(‘第一次消元后的增广距阵’)A(2,:)=A(2,:)-A(1,:)*A(2,1)/A(1,1);A(3,:)=A(3,:)-A(1,:)*A(3,1)/A(1,1);A%第二次选主元,第三行和第二行交换Fprintf(‘第二次消元后的增广距阵’)tempo=A(3,:);A(3,:)=A(2,:);A(2,:)=tampo%第二次消元Fprintf(‘第二次消元后的增广距阵’)A(3,:)=A(3,:)-A(2,:)*A(3,2)/A(2,2);A%回代求解Fprintf(‘回代求解’)x(3)=A(3,4)/A(3,3);x(2)=(A(2.4)-A(2,3)*x(3))/A(2,2);x(1)=(A(1,4)-A(1,2,3)*x(2:3)’)/A(1,1)x在命令窗口调用M文件chap3_1chap3_1增广距阵A=0.72900.81000.90000.68671.00001.00001.00000.83381.33101.21001.10001.0000第一次选主元后的增广距阵A=1.33101.21001.10001.00001.00001.00001.00000.83380.72900.81000.90000.6867第一次消元后的增广距阵A=1.33101.21001.10001.000000.09090.17630.082500.14730.29750.1390第二次选主元后的增广距阵A=1.33101.21001.10001.000000.14730.29750.139000.09090.17630.0825第二次消元后的增广距阵A=1.33101.21001.10001.000000.14730.29750.139000-0.0101-0.0033回带求解X=0.22450.28140.3279