资源描述:
《MATLAB程序设计(1)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、一.多项式拟合多项式拟合是多项式运算的一个重要组成部分,在工程及科研工作中都等到了广泛的应用。其实现一方面可以由矩阵的除法求解超定方程来进行;另一方面在MATLAB中还提供了专门的拟合函数polyfit,其常用调用格式如下:polyfit(X,Y,n):其中X,Y为拟合数据,n为拟合多项式的阶数。[p,s]=polyfit(X,Y,n):其中p为拟合多项式系数常量,s为拟合多项式系数常量的结构信息。1.用5阶多项式对[0,pi/2]上的正弦函数进行最小二乘拟合。x=0:pi/20:pi/2;y=sin(x);a=polyfit(x,y,5);x1=
2、0:pi/30:pi*2;y1=sin(x1);y2=a(1)*x1.^5+a(2)*x1.^4+a(3)*x1.^3+a(4)*x1.^2+a(5)*x1+a(6);plot(x1,y1,'b-',x1,y2,'r*')legend('原曲线','拟合曲线')axis([0,7,-1.2,4])2.设原始数据为x,在11个点上测得的y值如下:X=[-2.0-1.6-1.2-0.8-0.400.40.81.21.62.0];Y=[2.82.962.543.443.565.46.08.49.513.315];采用2阶和10阶多项式拟合,并画图比较x=
3、[-2.0-1.6-1.2-0.8-0.400.40.81.21.62.0];y=[2.82.962.543.443.565.46.08.49.513.315];a=polyfit(x,y,2);x1=-2:0.01:2;y2=a(1)*x1.^2+a(2)*x1+a(3);plot(x,y,'b-',x1,y2,'r--')x=[-2.0-1.6-1.2-0.8-0.400.40.81.21.62.0];y=[2.82.962.543.443.565.46.08.49.513.315];a=polyfit(x,y,10);x1=-2:0.01:2
4、;y2=a(1)*x1.^10+a(2)*x1.^9+a(3)*x1.^8+a(4)*x1.^7+a(5)*x1.^6+a(6)*x1.^5+a(7)*x1.^4+a(8)*x1.^3+a(9)*x1.^2+a(10)*x1+a(11);plot(x,y,'b-',x1,y2,'r--')二.图形的保持与子图1.在4个子图中绘制不同的三角函数图。(二维子图的绘制)x=0:0.1*pi:2*pi;subplot(2,2,1);plot(x,sin(x),'-*');title('sin(x)');subplot(2,2,2);plot(x,cos(x
5、),'-o');title('cos(x)');subplot(2,2,3);plot(x,sin(x).*cos(x),'-x');title('sin(x)*cos(x)');subplot(2,2,4);plot(x,sin(x)+cos(x),'-h');title('sin(x)+cos(x)')2.对于函数,的取值范围0~2,的取值范围~0,画出四个三维子图,其中;;;;要求每一个子图有标题。[x,y]=meshgrid(0:0.1:2,-2:0.1:0);subplot(2,2,1);z=(x-1).^2+(y+1).^2;mesh(
6、z);title('子图1');subplot(2,2,2);z=2*(x-1).^2+(y+1).^2;mesh(z);title('子图2');subplot(2,2,3);z=(x-1).^2+2*(y+1).^2;mesh(z);title('子图3');subplot(2,2,4);z=0.8*(x-1).^2+0.5*(y+1).^2;mesh(z);title('子图4');三.龙格-库塔方法1.用经典的R-K方法求解y’=-2y+2x2+2x。其中(0<=x<=0.5),y(0)=1.编制函数文件(fun.m)fun.mfuncti
7、onf=fun(x,y)f=-2*y+2*x.^2+2*x在命令窗口输入[x,y]=ode23('fun',[0,0.5],1);x'00.04000.09000.14000.19000.24000.29000.34000.39000.44000.49000.5000y'1.00000.92470.84340.77540.71990.67640.64400.62220.61050.60840.61540.6179再输入:plot(x,y,'-o')可等到图形如下:2.解刚性方程解如下刚性方程:(见课本251页)编制f.m文件functionf=f(
8、x,y)f=[-21;998-999]*y+[2*sin(x);999*(cos(x)-sin(x))]在程序窗口输入:t