1、数 值 计 算 方 法实 验 指 导 书陕西科技大学信息与计算科学教研室目录实验 1 代数插值实验(一) .1实验 2 代数插值实验(二) .3实验 3 数据拟合实验 .6实验 4 数值积分实验 .8实验 5 解非线性方程实验 .10实验 6 解线性方程组实验 .12实验 7 解非线性方程组实验 14实验 8 解常微分方程组-导弹跟踪问题仿真实验 .161实验 0 Matlab 基础实验专业班级 学号 姓名 成绩 .实验类型:验证性实验 综合性实验 设计性实验实验目的:熟悉 MATLAB 系统的启动、退出、演示系统、帮助系统、MATLAB 的运行环境,掌握 Matlab 矩阵及其运算基础知识实
2、验内容: 矩阵的建立、矩阵的拆分、特殊矩阵、矩阵求逆,求行列式的值,矩阵算符及其表达式表示和计算、常用数学函数、画图函数应用实验报告:根据实验情况和结果撰写并递交实验报告。2实验 1 代数插值实验(一)实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握 Lagrange 插值算法,提高编程能力和解决插值问题的实践技能。实验内容:依照 Lagrange 算法编写基于 N+!个点的 的 N 次Nkyx0),(Lagrange 插值多项式系数计算的程序实验原理已知 N+!个点的 Nkyx0),(计算 Lagrange 插值基函数 (k=0,N)NkjjNjjKxxxL00, )(/
3、)()(计算 N 次 Lagrange 插值多项式函数 P(x)=NkkLy0,)(实验说明 需要建立两个数组 X,Y 分别存放( , , ( ,1x)n1y)n需要考虑多项式乘积运算的算法或者函数。实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结 实验报告:根据实验情况和结果撰写并递交实验报告。参考程序(MATLAB 程序)function C,L=lagran(X,Y)%Input - X is a vector that contain
4、s a list of abscissas% - Y is a vector that contains a list of ordinates%Output - C is a matrix that contains the coefficents of% the Lagrange interpolatory polynomial% - L is a matrix that contains the Lagrange% coefficient polynomials% NUMERICAL METHODS: Matlab Programs% (c) 2004 by John H. Mathew
5、s and Kurtis D. Fink% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition3% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458w=length(X);n=w-1;L=zeros(w,w);%Form the Lagrange coefficient polynomialsfor k=1:n+1V=
6、1;for j=1:n+1if k=jV=conv(V,poly(X(j)/(X(k)-X(j);endendL(k,:)=V;end%Determine the coefficients of the Lagrange interpolator%polynomialC=Y*L;4实验 2 代数插值实验(二)实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握 spline(样条)插值算法,提高编程能力和解决插值问题的实践技能。实验内容:编写程序用计算机求解三次压紧样条曲线,经过点(0,0.0) ,(1,0.5) , (2,2.0)和(3,1.5) ,而且一阶导数边界条件 S(
7、0)=0.2 和 S(3)=-1实验原理 若已知 N+!个点的 及其一阶导数的边界条件 S(a)= 和 SNkyx0),( 0d(b)= ,则存在唯一的三次样条曲线。Nd求解下列线性方程组 )(3)23( 2,)23 11111 001210 NNNNN kkkkk dxSumhmh ,)()()()( 133,22,1,0, kkkkkk xsxsxsxS; ; ; kys0, 611, khd2,kkkhms613,实验说明 需要建立两个数组 X,Y 分别存放( , , ( , ,建立1x)n1y)n两个变量 dxo、 dxn 分别存放左右端点的一阶导数 dxo = S(x0) , dxn
8、 = S(xn)实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告: 根据实验情况和结果撰写并递交实验报告。参考程序(MATLAB 程序)function S=csfit(X,Y,dx0,dxn)%Input - X is the 1xn abscissa vector% - Y is the 1xn ordinate vector% - dxo = S(x0) first derivative boundary condition%
9、- dxn = S(xn) first derivative boundary condition5%Output - S: rows of S are the coefficients for the cubic interpolants% NUMERICAL METHODS: Matlab Programs% (c) 2004 by John H. Mathews and Kurtis D. Fink% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edi
10、tion% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458N=length(X)-1;H=diff(X);D=diff(Y)./H;A=H(2:N-1);B=2*(H(1:N-1)+H(2:N);C=H(2:N);C=H(2:N);U=6*diff(D);%Clamped spline endpoint constraintsB(1)=B(1)-H(1)/2;U(1)=U(1)-3*(D(1)-dx0);B(N-1)=B(N-1)-H(N)/2;U(N-1)=
11、U(N-1)-3*(dxn-D(N);for k=2:N-1temp=A(k-1)/B(k-1);B(k)=B(k)-temp*C(k-1);U(k)=U(k)-temp*U(k-1);endM(N)=U(N-1)/B(N-1);for k=N-2:-1:1M(k+1)=(U(k)-C(k)*M(k+2)/B(k);end%Clamped spline endpoint constraintsM(1)=3*(D(1)-dx0)/H(1)-M(2)/2;M(N+1)=3*(dxn-D(N)/H(N)-M(N)/2;6for k=0:N-1S(k+1,1)=(M(k+2)-M(k+1)/(6*H(
12、k+1);S(k+1,2)=M(k+1)/2;S(k+1,3)=D(k+1)-H(k+1)*(2*M(k+1)+M(k+2)/6;S(k+1,4)=Y(k+1);end7实验 3 数据拟合实验实验类型:验证性实验 综合性实验 设计性实验实验目的: 进一步熟练掌握最小二乘多项式拟合算法,提高编程能力和解决拟合问题的实践技能。实验内容:对下列数据,求解最小二乘抛物线 CBxAxf2)(kx-3 -1 1 3y15 5 1 5实验原理: 求使得偏差平方和最小的多项式实验说明:要求输入拟合点,输出拟合多项式的系数实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出
13、现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序function C = lspoly(X,Y,M)%Input - X is the 1xn abscissa vector% - Y is the 1xn ordinate vector% - M is the degree of the least-squares polynomial% Output - C is the coefficient list for the polynomial% NUMERICAL MET
14、HODS: Matlab Programs% (c) 2004 by John H. Mathews and Kurtis D. Fink% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458n=length(X);B=zeros(1:M+1);F=zeros(n,M
15、+1);8%Fill the columns of F with the powers of Xfor k=1:M+1F(:,k)=X.(k-1);end%Solve the linear system from (25)A=F*F;B=F*Y;C=AB;C=flipud(C);9实验 4 数值积分实验实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握变步长数值积分算法,提高编程能力和解决定积分问题的实践技能。实验内容:用龙贝格积分算法计算 102dx实验原理 14),(),(),(),( kjRjkjRj实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程
16、序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序function R,quad,err,h=romber(f,a,b,n,tol)%Input - f is the integrand % - a and b are upper and lower limits of integration% - n is the maximum number of rows in the table% - tol is the tolerance%Output - R
17、is the Romberg table% - quad is the quadrature value% - err is the error estimate% - h is the smallest step size used%If f is defined as an M-file function use the notation% call R,quad,err,h=romber(f,a,b,n,tol).%If f is defined as an anonymous function use the% call R,quad,err,h=romber(f,a,b,n,tol)
18、.% NUMERICAL METHODS: Matlab Programs% (c) 2004 by John H. Mathews and Kurtis D. Fink% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition% ISBN: 0-13-065248-210% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458M=1;h=b-a;err=1;J=0;
19、R=zeros(4,4);R(1,1)=h*(f(a)+f(b)/2;while(errtol)h=h/2;s=0;for p=1:Mx=a+h*(2*p-1);s=s+f(x);endR(J+1,1)=R(J,1)/2+h*s;M=2*M;for K=1:JR(J+1,K+1)=R(J+1,K)+(R(J+1,K)-R(J,K)/(4K-1);enderr=abs(R(J,J)-R(J+1,K+1);endquad=R(J+1,J+1);11实验 5 解非线性方程实验实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握解非线性方程牛顿迭代算法,提高编程能力和解算非线性方程问题
20、的实践技能。实验内容:用牛顿迭代法求平方根,计算 5实验原理 令 Axf2)( )(/)(111kkkxff实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序function p0,err,k,y=newton(f,df,p0,delta,epsilon,max1)%Input - f is the object function % - df is the derivative of f
21、 % - p0 is the initial approximation to a zero of f% - delta is the tolerance for p0% - epsilon is the tolerance for the function values y% - max1 is the maximum number of iterations%Output - p0 is the Newton-Raphson approximation to the zero% - err is the error estimate for p0% - k is the number of
22、 iterations% - y is the function value f(p0)%If f and df are defined as M-file functions use the notation% call p0,err,k,y=newton(f,df,p0,delta,epsilon,max1).%If f and df are defined as anonymous functions use the% call p0,err,k,y=newton(f,df,p0,delta,epsilon,max1).% NUMERICAL METHODS: Matlab Progra
23、ms12% (c) 2004 by John H. Mathews and Kurtis D. Fink% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458for k=1:max1p1=p0-f(p0)/df(p0);err=abs(p1-p0);relerr=2*
24、err/(abs(p1)+delta);p0=p1;y=f(p0);if (errdelta)|(relerrdelta)|(abs(y)epsilon),break,endend13实验 6 解线性方程组实验实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握解线性方程组高斯列主元算法,提高编程能力和解算线性方程组问题的实践技能。实验内容:用高斯列主元算法解线性方程组52310546431x实验原理:高斯列主元算法实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。
25、5 记录运行时的输入和输出。 实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序function X = uptrbk(A,B)%Input - A is an N x N nonsingular matrix% - B is an N x 1 matrix%Output - X is an N x 1 matrix containing the solution to AX=B.% NUMERICAL METHODS: Matlab Programs% (c) 2004 by John H. Mathews and Kurtis D. Fink% Complementary S
26、oftware to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458%Initialize X and the temporary storage matrix C N N=size(A);X=zeros(N,1);C=zeros(1,N+1);%Form the augmented matrix: Aug=A|B
27、Aug=A B;14for p=1:N-1%Partial pivoting for column pY,j=max(abs(Aug(p:N,p);%Interchange row p and jC=Aug(p,:);Aug(p,:)=Aug(j+p-1,:);Aug(j+p-1,:)=C;if Aug(p,p)=0A was singular. No unique solutionbreakend%Elimination process for column pfor k=p+1:Nm=Aug(k,p)/Aug(p,p);Aug(k,p:N+1)=Aug(k,p:N+1)-m*Aug(p,p
28、:N+1);endend%Back Substitution on U|Y using Program 3.1X=backsub(Aug(1:N,1:N),Aug(1:N,N+1);15实验 7 解非线性方程组实验实验类型:验证性实验 综合性实验 设计性实验实验目的:进一步熟练掌握解非线性方程组牛顿迭代算法,提高编程能力和解算非线性方程组问题的实践技能。实验内容:设有非线性方程组 045.2yx设初始值 误差小于 0.001)25.,(,0实验原理 )()(111nnnPFJP实验说明实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的
29、过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告:根据实验情况和结果撰写并递交实验报告。参考程序function P,iter,err=newdim(F,JF,P,delta,epsilon,max1)%Input -F is the system saved as the M-file F.m% -JF is the Jacobian of F saved as the M-file JF.M% -P is the inital approximation to the solution% -delta is the tolerance f
30、or P% -epsilon is the tolerance for F(P)% -max1 is the maximum number of iterations%Output -P is the approximation to the solution% -iter is the number of iterations required% -err is the error estimate for P%Use the notation call%P,iter,err=newdim(F, JF, P, delta, epsilon, max1).% NUMERICAL METHODS
31、: Matlab Programs% (c) 2004 by John H. Mathews and Kurtis D. Fink16% Complementary Software to accompany the textbook:% NUMERICAL METHODS: Using Matlab, Fourth Edition% ISBN: 0-13-065248-2% Prentice-Hall Pub. Inc.% One Lake Street% Upper Saddle River, NJ 07458Y=F(P);for k=1:max1J=JF(P);Q=P-(JY);Z=F(
32、Q);err=norm(Q-P);relerr=err/(norm(Q)+eps);P=Q;Y=Z;iter=k;if (errdelta)|(relerrdelta)|(abs(Y)epsilon)breakendend17实验 8 解常微分方程组-导弹跟踪问题仿真实验实验类型:验证性实验 综合性实验 设计性实验实验目的: 使学生在应用数学知识建立数学模型方面得到训练,使学生能够对由实际问题建立起的数学模型提出求解的算法,进而能进行计算机编程、计算得到实际问题的解,学生也可以结合计算过程以图形方式直观仿真动态过程,从而使得学生对计算机仿真有初步认识。实验内容:某军的一导弹基地发现正北方向 1
33、20 km 处海面上有敌艇一艘以 90 km/h 的速度向正东方向行驶. 该基地立即发射导弹跟踪追击敌艇 , 导弹速度为 450 km/h,自动导航系统使导弹在任一时刻都能对准敌艇.试问导弹在何时何处击中敌艇?当t =0时 ,导弹位于原点 O,敌艇位于(0, H)点, H= 120 (km). P(x, y)当时刻t ,导弹位于P(x (t),y(t)敌艇位于(90 t,H)点O120120x 东y北实验原理:微分方程组建模,微分方程组数值算法(EULER) ,计算机仿真实验说明:首先建立坐标系、分析并建立数学模型-常微分方程组;选定常微分方程组数值算法;用 Matlab 编写程序、运行并仿真
34、动态过程。查阅有关计算机仿真的资料,分析仿真方法与常微分方程组欧拉(EULER)算法的异同。如果当基地发射导弹的同时,敌艇立即由仪器发觉. 假定敌艇为一高速快艇,它即刻以 135 km/h 的速度与导弹方向垂直的方向逃逸,问导弹何时何地击中敌舰? 若导弹的追踪过程中,飞行角度每秒钟改变 时,其速度衰减 2,问导弹何时何地击中敌舰?(导弹和敌艇自180/身有长度可认为距离为 1 米时即为 击中)实验步骤1 要求上机实验前先编写出程序代码 2 编辑录入程序3 调试程序并记录调试过程中出现的问题及修改程序的过程4 经反复调试后,运行程序并验证程序运行是否正确。5 记录运行时的输入和输出。 实验总结实验报告参考程序18