1217MATLAB几种题型的整理.docx
《1217MATLAB几种题型的整理.docx》由会员分享,可在线阅读,更多相关《1217MATLAB几种题型的整理.docx(16页珍藏版)》请在冰点文库上搜索。
1217MATLAB几种题型的整理
MATLAB几种题型的整理
说明:
最好都看一下,要不也好复制粘贴是吧?
蓝色字体是程序,可直接复制粘贴进matlab运行。
缺曲线拟合,实在不会!
希望大家都考过开心回家过年!
!
一、数组和矩阵
(1)一维数组的创建:
x=[123456],创建出来的是一个1行6列的向量。
可以在方程组AX=b中创建b的值用到。
(2)linspace的运用:
linspace(1,2,10)创建的是区间[1,2]中等划分10个份,可以用来创建坐标轴,一维的二维的都可以,如果划分的份数越多则图像拟合度越高,即越圆滑。
(3)矩阵的创建:
y=[123;456],分号代表矩阵换行,创建出2行3列的矩阵。
索引:
y(4)为矩阵从上到下,以列的形式数出的数,这里是1,4,2,5故y(4)=5,同样y(2,2)是y矩阵2行2列对应的数,为5。
(4)幂运算、指数运算、对数运算:
x=rand
(2)(生成随机二维矩阵)
y=x.^3(矩阵每个对应元素的3次幂)
z=exp(x)(表示
)
u=log(x)(表示
的对数)
(5)几种特殊矩阵的生成
全零阵:
zero(n)或zero(m,n),表示n维全零阵和m*n型全零阵。
单位阵:
eye(n)或eye(m,n)
全一阵:
ones(n)或ones(m,n)
随机阵:
rand(n)或rand(m,n)
魔方阵:
magic(n)
(6)矩阵加减乘除就不说了,直接相同维数x+y等就行。
说个Ax=b吧,求x的值:
A=[123;113]
b=[4;6]
x=A\b
再说个xA=b吧,求x的值:
A=[123;113]
b=[4;6]
x=b/A
(7)常见矩阵函数:
det(x),求x的行列式;
rank(x),求x的秩;
A’表示A的转制
B=inv(A)表示求A的逆矩阵。
二、平面数据绘图
(1)格式为:
1)先定义横坐标,可以用linspace(0,2*pi,30)或0:
pi/100:
2*pi等方式定义。
2)定义函数x=sin(t)等。
3)plot(自变量,因变量,’颜色:
线型’,自变量,因变量,’颜色:
线型’,自变量,因变量,’颜色:
线型’)
例:
t=linspace(0,2*pi,30);
x=sin(t);
y=cos(t);
z=tan(y);
plot(t,x,'r',t,y,'b',y,z,'g');%这里我没加线型,有要求的话plot(t,x,'r:
o',t,y,'b:
.',y,z,'g:
+');等
(2)分幅subplot(几行,几列,第几个位置),plot(自变量,因变量,’颜色:
线型’);
例:
t=linspace(0,2*pi,30);
x=sin(t);
y=cos(t);
z=tan(y);
subplot(2,2,1),plot(t,x,'r:
o');
subplot(2,2,2),plot(t,y,'b');
subplot(2,2,3),plot(y,z,'g');
(3)图形注释:
常用的有title(图形标题),text(标注数据点),xlable(x坐标轴标记),ylable(y坐标轴标记),grid(给图形加上网格)。
例1:
t=linspace(0,2*pi,30);
x=sin(t);
y=cos(t);
z=tan(y);
plot(t,x,t,y,y,z);
title('sincosandtancurves');
text(3*pi/4,sin(3*pi/4),'sin(t)');%在点(3*pi/4,sin(3*pi/4))处加标注sin(t)
text(3*pi/2,sin(3*pi/2),'cos(t)');%在点(3*pi/2,cos(3*pi/2))处加标注cos(t)
text(sin(3*pi/4),tan(sin(3*pi/4)),'tan(y)');%在点sin(3*pi/4),tan(sin(3*pi/4))处加标注tan(y)
legend('sin(t)','cos(t)','tan(y)');%加图例图如下
例2:
t=linspace(0,2*pi,30);
x=sin(t);
y=cos(t);
z=tan(y);
subplot(2,2,1),plot(t,x,'r:
o');title('x=sin(t)');%加标题sin(t)
subplot(2,2,2),plot(t,y,'b');title('y=cos(t)');
subplot(2,2,3),plot(y,z,'g');title('z=tan(y)');
图如下
三、三维绘图
mesh画的是网格曲面,surf画的是曲面数据矩阵。
直接做个案例说明吧
x=linspace(-4,4,40);%定义x的范围
y=linspace(-2,2,20);%定义y的范围
[X,Y]=meshgrid(x,y);%生成以x,y为长度的XY平面
Z=X.^2+2*sin(X*pi)+cos(Y*pi);%Z=f(X,Y)函数表达式
subplot(2,2,1);%分隔图像,在2行2列的第一个位置输出此图
surf(X,Y,Z);%输出此三维图
title('noshading');%图像名称命名
subplot(2,2,2);
surf(X,Y,Z);
shadingflat;
title('shadingflat');
subplot(2,2,3);
mesh(X,Y,Z);
shadingfaceted;
title('shadingfaceted');
subplot(2,2,4);
surf(X,Y,Z);
shadinginterp;
title('shadinginterp');
画单个图形就更简单了
例:
[x,y]=meshgrid(-4:
0.1:
4);
z=x.^2+y.^2;
surf(x,y,z);%surfc(x,y,z);是同时输出等高线,surfz(x,y,z);是同时生成围裙
title('抛物面');
holdon的用法,将两个三维函数画在一个图上。
例:
[x,y]=meshgrid(-4:
0.1:
4);
z=x.^2+y.^2;
u=x.^4+y.^4;
surf(x,y,z);
holdon
surf(x,y,u);
title('俩抛物面');
三维曲面加注释:
[x,y]=meshgrid(-4:
0.1:
4);
z=x.^2+y.^2;
u=x.^4+y.^4;
surf(x,y,z);
holdon
surf(x,y,u);
title('俩抛物面');
xlabel('x\in[-4,4]','fontweight','bold');%意思是x属于[-4,4],加粗
ylabel('y\in[-4,4]','fontweight','bold');
text(-4,-4,4^2+4^2,'x.^2+y.^2','fontsize',25);
text(-4,-4,4^4+4^4,'x.^4+y.^4','fontsize',25);%和二维的一样,在图像上选一个点,我选的(-4,-4,z(-4,-4))点和(-4,-4,u(-4,-4))点加标注,字体大小是25号字
注意,加网格和取消网格是gridon(开)和gridoff(关)。
不演示了。
四、矩阵分析与线性方程组
(1)特征值和特征向量
例一:
B=eye(4);%生成一个对角为1的对角矩阵
B(3,2)=2;%和前面讲的一样,给矩阵B的三行二列的数值赋值为2
B(4,2)=3;%同上
B%输出B
[v,d]=eig(B)%求特征值和特征向量,d角线对应特征值,v的列代表相应的特征向量,如果写成d=eig(B),则只输出特征值。
(2)矩阵对角化
例二:
A=[122;212;221];
[V,D]=eig(A)%求特征值及特征向量所组成的矩阵
inv(V)*A*V%都知道,这是用V的逆*A*V,对角化
(3)jordan标准型
Jordan(A)
(4)矩阵的几个常用的分解
LU分解(将一个矩阵分解成一个下三角矩阵L和一个上三角矩阵U的乘积)
A=[123;456;789];
[L,U]=lu(A);
[L,U,P]=lu(A)
QR分解(将一个矩阵分解成一个正交矩阵和一个上三角矩阵的乘积)
A=[123;456;789;101112];
[Q,R]=qr(A)
乔莱斯基分解(就是[R,P]=chol(A))
(5)线性方程组就是AX=b,建立A和b左除右除就行,上面第一部分有。
五、运筹优化
(1)线性规划(linearprogramming),用linprog命令。
这样的问题,[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub),定义好f,不等式系数矩阵A,不等式方程约束b,等式系数矩阵Aeq,等式方程约束beq,一般线性规划问题x都是大于等于0的,所以lb一般都是零向量zeros(n,1)
例一:
若是Max,先化min,约束化小于等于。
f=[-0.15;-0.1;-0.08;-0.12];
A=[1-1-1-1;0-1-11];
b=[1;3];
Aeq=[1111]%等式若多就Aeq=[1111;…;…],beq=[1;..;..]
beq=[1]
lb=zeros(4,1);%即为[0;0;0;0],表示xi都以0为下界,无上界
[x,fval]=linprog(f,A,b,Aeq,beq,lb)
(2)有约束的一元函数最小值,用fminbnd(函数f,求最小min,约束bound——bnd)
形式:
这样的问题,直接用[x,fval]=fminbnd(f,x1,x2)的形式也行,也可定义function文件[x,fval]=fminbnd(‘myfun’,x1,x2)的形式也行。
例一:
在(0,1)上求f(x)的最小值
方法1:
[x,fval]=fminbnd('(x^3+cos(x)+x*log(x))/exp(x)',0,1)
方法2:
先定义一个function文件f,我命名为ztfun1
functionf=ztfun1(x)
f=(x^3+cos(x)+x*log(x))/exp(x);
end
记得按F5进行并保存默认路径。
然后返回命令窗口输入
x=fminbnd('ztfun1',0,1)
(3)有约束的多元函数最小值(重要),用fmincon(函数f,求最小min,限定约束constrains——con)
这里面有很多的数,区别是将不等式约束的右边卫0的和不为0的分开写了,我随便举个代表性的例子吧,不一定能算出来,但程序没错就行,考试的时候多了少了上面自己改自己加。
例:
首先定义目标函数function文件,我定义的名字叫ztfun2:
functionf=ztfun2(x)
f=x
(1)^2+x
(2)^2-x
(1)*x
(2)-2*x
(1)-5*x
(2);
end
然后定义不等式右边为0的约束条件function文件,我定义的名字叫ztcon1:
function[c1,ceq]=ztcon1(x)%可以有ceq1、ceq2等,往[]加就行了
c1=(x
(1)-1)^2-x
(2);
ceq=0;
end
最后定义A,b,Aeq,beq,x0,lb,ub,然后调用fmincon:
A=[1,-5;-23;3-2];
b=[0;6;1];
Aeq=[43;1-1;2-1];
beq=[0;-1;2];
x0=[01];
lb=[00];
ub=[1010];
[x,fval]=fmincon('ztfun2',x0,A,b,Aeq,beq,lb,ub,'ztcon1')
(3)无约束多元函数最小值,用fminsearch,解决问题为没有约束条件,但是要求最小点。
例:
求y的最小值点
解法一:
X=fminsearch('2*x
(1)^3+4*x
(1)*x
(2)^3-10*x
(1)*x
(2)+x
(2)^2',[0,0])
解法二:
定义function
functiony=ztfun3(x)
y=2*x
(1)^3+4*x
(1)*x
(2)^3-10*x
(1)*x
(2)+x
(2)^2;
end
然后调用
X=fminsearch('ztfun3',[0,0])
(4)二次规划问题:
和(3)很像,可以说是相同的,数学模型是
例:
求解下面二次规划问题
这里的海色矩阵是自己求的,
H=[1-1;-12];
f=[-2;-6];
A=[11;-12;21];
b=[2;2;3];
lb=[0;0];%同zeros(2,1)
[x,fval]=quadprog(H,f,A,b,[],[],lb)%[]代表没有Aeq和beq约束对吧,有就定义,没有就不定义矩阵了。