MATLAB实习教学提纲.doc
Good is good, but better carries it.精益求精,善益求善。MATLAB实习-1 矩阵运算 矩阵建立,转置、加、减、乘、求逆等运算。计算A+B,AB、|A|、AB.>>A+Bans=043569342>>det(A)ans=12>>A.-1ans=1.00000.50000.33330.25000.20000.16671.00000.33331.0000>>ABans=1.1667-1.83331.50000.66670.66670-1.16670.8333-0.5000>>A*Bans=77913192146102.编写M文件的编写与运行输出闰年i=1;for(j=1000:3000)if(rem(j,100)=0)if(rem(j,400)=0)a(i)=ji=i+1;endelseif(rem(j,4)=0)a(i)=ji=i+1;endendk=i-1end部分数据:Columns463through4692908291229162920292429282932Columns470through4762936294029442948295229562960Columns477through4832964296829722976298029842988Columns484through48529922996 3 数据文件的建立与读取 例:建立班级一门课成绩数据库,编程读取并排序、另存。学号123456789成绩859685875665968575S.sc=859685875665968575,S.num=123456789S=sc:859685875665968575S=sc:859685875665968575num:123456789fori=1:9forj=i:9ifS.sc(i)<S.sc(j)temp=S.sc(i)S.sc(i)=S.sc(j);S.sc(j)=tempendendendS=sc:969687858585756556num:1234567894 绘二维、三维图 例:画双纽线,螺线,球面。极坐标第一次命令t=5(-1:0.01:1)*pi/4;r=sqrt(25*cos(2*t),polar(t,r,'k')第二次命令t=(-1:0.01:1)*pi/4;r=sqrt(25*cos(2*t),polar(t,r,'k')参数方程p=-2*pi:0.01:2*pi;r=sqrt(cos(2*p);x=r.*cos(p);y=r.*sin(p);plot(x,y)螺线a=2;t=0:.1:20;r=a*t;polar(t,r)球面X,Y=meshgrid(-1:.05:1);%生成网格点,从-1到1间隔0.05Z=sqrt(1-X.2-Y.2)+eps;%求出每个点上对应的Z值Z(X.2+Y.2)>1)=0;%在满足x2+y2>1的网格点上的Z值变成0mesh(X,Y,abs(Z)%画图title('球面x.2+y.2+z.2=1')%加标题axis(-12-1101)%设置X,Y,Z轴坐标范围>>5 多项式运算 例:多项式运算求值、求根。 +x-3=0a=111-3a=111-3>>r=poly(a)r=10-68-3>>q1=poly2str(a,'x')q1=x3+x2+x3f=inline('x3+x2+x-3','x')f=Inlinefunction:f(x)=x3+x2+x-3>>f(3)ans=366 曲线拟合 例:数据的多项式拟合X0.51.01.52.02.53.0y1.752.453.814.807.008.60使用了MATLAB中curvefitting,进行了该多形式的拟合。由图可知这些点是五阶多项式linearmodelPoly5:f(x)=p1*x5+p2*x4+p3*x3+p4*x2+p5*x+p6Coefficients:p1=-1.6p2=13.74p3=-44.07p4=65.67p5=-42.63p6=11.35 7 .线性规划 例:线性规划求解(如教材中)。Min-5x1-4x2-6x3s.tx1-x2+x3<=20;3x1+2x2+4x3<=42;3x1+2x2<=30;x1、x2、x3>=0A=1-11;324;320A=1-11324320>>b=20;42;30b=204230>>x,fval,exitflag,output,lambda=linprog(f,A,b,lb)Optimizationterminated.x=0.000015.00003.0000fval=-78.0000exitflag=1output=iterations:6algorithm:'large-scale:interiorpoint'cgiterations:0message:'Optimizationterminated.'lambda=ineqlin:3x1doubleeqlin:0x1doubleupper:3x1doublelower:3x1double>>lambda.ineqlinans=0.00001.50000.5000 8 微分方程数值解 例:常微分方程数值解。求解该微分方程X精确解RK解误差01101/5,1.01873075,1.07001364,.512828904e-12/5,1.07032005,1.15254655,.822265010e-13/5,1.14881164,1.24639295,.975813184e-14/5,1.24932896,1.35046324,.1011342741,1.36787944,1.46377272,.958932744e-16/5,1.50119421,1.58543154,.842373280e-17/5,1.64659696,1.71463557,.680386042e-18/5,1.80189652,1.85065811,.487615877e-19/5,1.96529889,1.99284245,.275435594e-12,2.13533528,2.14059514,.525985426e-211/5,2.31080316,2.29337988,.174232823e-113/5,2.67427358,2.61215359,.621199906e-114/5,2.86081006,2.77730880,.835012599e-13,3.04978707,2.94581999,.103967076 9 插值问题 例:样条插值。X1.02.03.04.05.0y3.54.65.53.22.6xx=1:1:5yx=3.54.65.53.22xxi=1:0.5:5f0=interp1(xx,yx,xxi)f1=interp1(xx,yx,xxi,'linear')f2=interp1(xx,yx,xxi,'cubic')f3=interp1(xx,yx,xxi,'spline')f4=interp1(xx,yx,xxi,'neareat')f0,f1,f2,f3,f4yx=3.50004.60005.50003.20002.0000xxi=1.00001.50002.00002.50003.00003.50004.00004.50005.0000f0=3.50004.05004.60005.05005.50004.35003.20002.60002.0000f1=3.50004.05004.60005.05005.50004.35003.20002.60002.0000f2=3.50004.07624.60005.17385.50004.54713.20002.48412.0000f3=3.50003.77344.60005.37665.50004.59533.20002.07972.0000f4=3.50004.60004.60005.50005.50003.20003.20002.00002.0000f0=3.50004.05004.60005.05005.50004.35003.20002.60002.0000f1=3.50004.05004.60005.05005.50004.35003.20002.60002.0000f2=3.50004.07624.60005.17385.50004.54713.20002.48412.0000f3=3.50003.77344.60005.37665.50004.59533.20002.07972.0000f4=3.50004.60004.60005.50005.50003.20003.20002.00002.0000plot(xxi,f1,xxi,f2,xxi,f3,xxi,f4)legend('线性插值','三次插值','样条插值','最近区域差值')10综合练习:计算机模拟例1追逐问题: 如图,正方形ABCD的四个顶点各有一人.在某一时刻,四人同时出发以匀速v=1米/秒按顺时针方向追逐下一人,如果他们始终保持对准目标,则最终按螺旋状曲线于中心点O.试求出这种情况下每个人的行进轨迹. )模拟步骤(1)建立平面直角坐标系:A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4)。(2)取时间间隔为t,在每一时刻t计算每人在下一时刻t+t的坐标。例如,甲的追逐目标是乙,在t时刻,甲的坐标为(x1,y1),乙的坐标为(x2,y2),则甲在t+t时刻的坐标为(x1+vtcosa,y+vtsina),其中cosa=(x2-x1)/d,sina=(y2-y1)/d, d=(3)选取足够小的,模拟到距离d<时为止。(4)连接四人在各时刻的位置,即得所求的运动轨迹。v=1;dt=0.05;d=10;x=00d10;y=010100;fori=1:4plot(x(i),y(i),'.')holdonwhile(d>0.1)x(5)=x(1);y(5)=y(1);fori=1:4d=sqrt(x(i+1)-x(i)2+(y(i+1)-y(i)2);x(i)=x(i)+v*dt*(x(i+1)-x(i)/d;y(i)=y(i)+v*dt*(y(i+1)-y(i)/d;plot(x(i),y(i),'.')holdonendendend轨迹如图例2 导弹追踪问题:设位于坐标原点的甲舰向位于x轴上点A(1, 0)处的乙舰发射导弹,导弹头始终对准乙舰.如果乙舰以最大的速度(是常数)沿平行于y轴的直线行驶,导弹的速度是5,模拟导弹运行的轨迹.又乙舰行驶多远时,导弹将它击中?查资料知道:舰艇的速度在每小时40节左右,即80kM/h,而导弹在2400km/h.他们速度之比为30:1.于此令乙减速度为a=0.167.导弹的速度v=5.在某一时刻导弹的水平速度为.(1)竖直速度(2)速度的积分路程,通过(1)(2)对时间t积分得到某一时刻的位置X=5*log(a2*t/(a2)(1/2)+(1+a2*t2)(1/2)/(a2)(1/2)Y=5/a*(1+a2*t2)(1/2)-29.9401dt=0.05,i=1,a=0.167%a为舰艇速度fort=0:0.05:0.25x(i)=5*log(a2*t/(a2)(1/2)+(1+a2*t2)(1/2)/(a2)(1/2)y(i)=5/a*(1+a2*t2)(1/2)-29.9401i=i+1endk=i;i=1:k-1plot(x(i),y(i),'b:')v=0:0.001:0.25holdonv=0:0.0001:0.05plot(1,v,'K-')由图可知舰艇在0.0173处被击中-