第一节MATLAB中的矩阵的输入.docx
- 文档编号:5487949
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:31
- 大小:124.04KB
第一节MATLAB中的矩阵的输入.docx
《第一节MATLAB中的矩阵的输入.docx》由会员分享,可在线阅读,更多相关《第一节MATLAB中的矩阵的输入.docx(31页珍藏版)》请在冰豆网上搜索。
第一节MATLAB中的矩阵的输入
第一节MATLAB中的矩阵的输入
§1直接输入
一、直接在工作窗中输入:
A=[2,4,6,8;1357;0000;1,0,1,0]
其意义是概念了矩阵
二、若是矩阵中的元素是等步长的,能够用下面的方式
A=[1:
0.2:
2;1:
6;2:
2:
12]
A=[1:
5]'
“'”号在那个地址表示为转置,而1:
5中间少了一个循环步长,现在将步长自动取为1。
§2增删改
设已经概念A=[12345;108642];B=[01;10];C=[12;24],即已概念
A=B=C=
123450112
1086421024
那么命令:
A=[[A(:
1:
4);[C,B]],[0204]']将A概念成:
A=而A(:
3)=[];将删除A的第三列,得
12340A=1240
10864210842
120101210
241042404
§3命令生成
利用MATLAB命令生成矩阵一样利用下面的命令
1命令linspace,它有两个格式:
a1=linspace(1,100)
%生成一个从1到100的有100个元素的向量
a2=linspace(0,1)
%仍然是有100个元素可是是从0到1的向量
a3=linspace(0,-1)%请与上一个向量进行比较
上面是第一种格式linspace(a,b),它是将a到b等分成100份形成的向量。
第二种格式linspace(a,b,n)中的n为一个正整数,表示是从a到b等分成n份后形成的向量。
例如
a4=linspace(1,100,11)
%从1到100但只形成11个元素的向量
a5=linspace(1,100,10)%自己体会那个命令作用
a6=linspace(0,1,11)'%加上了“'”表示转置
a7=linspace(0,-1,10)%自己体会那个命令作用
2命令ones,zeros别离形成元素全为1或全为零的矩阵它也有两种格式。
请观看它们的作用:
ones(6,3)%生成6×3阶元素全为1的矩阵
ones(5)%生成5阶元素全为1的方阵
zeros(3,6)%生成3×6阶元素全为零的矩阵
zeros(4)%生成四阶元素全为零的方阵
3命令diag生成对角阵及从矩阵的主对角线生成向量,例如:
diag([1357])%生成了以1357为主对角线的方阵:
ans=
1000
0300
0050
1007
相反若是先概念了一个三阶方阵:
A=[123;456;789]
显示:
A=
123
456
789
那么命令a8=diag(A)将用A的主对角线生成新的列向量:
a8=
1
5
9
命令eye(n)生成n阶单位方阵,即主对角线上元素为1,其余元素为零的方阵。
例如键入:
A=eye(5)将取得:
A=
10000
01000
00100
00010
00001
第二节MATLAB文件处置
§1文件编辑
若是要在MATLAB的工作窗概念矩阵,那么用鼠标点击屏幕左上方的File选择项,再从当选择New中的M-file项而且用鼠标点击它,就打开了MATLAB文件编辑窗而且能够在此窗中概念MATLAB矩阵了(注意关于已有的文件,能够选择open来打开它,然后对其进行修改)。
在MATLAB文件编辑窗中概念的矩阵与工作窗中概念的方式是完全一样。
而且能够在MATLAB文件编辑窗的菜单中利用菜单命令直接运行。
能够在MATLAB中利用菜单中的“File”中的“Setpath”将当前工作文件夹概念在你正在工作的文件夹。
§2MATLAB工作窗中变量值的保留与挪用
MATLAB工作窗中的变量在退出MATLAB工作状态后值不能保留,若是需要保留,能够利用命令save将其存储到磁盘上,命令格式有两种:
第一种是用二进制格式来存储。
例如先概念三个矩阵:
A1=[0:
3;2*ones(4);4:
-1:
1];A2=[1324];A3=zeros(3,1);
生成以下矩阵与向量:
键入:
savefile1A1A2A3
%用二进制格式以文件名file1.mat存储A1,A2,A3
savefile2.mA1A3–ascii
%用ascii码以文件名file2.m存储A1,A3
咱们还要注意:
用二进制格式存储的文件连变量名一路存储并可再从头调入时恢复变量的值,而用ASCII码存储的文件只存储了变量的值,而变量名是没有的。
用二进制格式存储的变量,可用命令load挪用,挪用格式为:
load<磁盘文件名>
例如,前面用savefile1存储了所有变量A1,A2,A3,调历时只要键入
loadfile1即可。
第三节MATLAB中的矩阵运算
§1矩阵运算命令与通常线性代数命令运算的异同
一、MATLAB在运行时是以矩阵为单位进行运算的。
它通常有两种运算,第一种是矩阵运算,运算时知足线性代数中矩阵运算所规定一切运算法那么,如加、减、乘,乘方即幂运算(固然运算要符合规定的条件,例如矩阵A与矩阵B相乘,必需A的列数等于B的行数),运算符号:
A+B,A-B,AB(注意“*”不能少)A^n
二、不同的地方:
一、与通常矩阵运算不同的地方在:
在线性代数中矩阵不能与数相加减,而在MATLAB的矩阵运算中许诺矩阵与数相加减。
二、函数命令能够直接作用到矩阵的每一个元素。
3、线性代数中矩阵没有除法,而MATLAB中有矩阵除法,例如:
输入A=[1:
3;4:
6;7:
9];b=[14,32,50]';c=A\b
显示:
c=
2
0
4
4、函数作用到矩阵的每一个元素,例如若是令A=[11/21/3;1/21/41/8]*pi,即概念
则
三、MATLAB中除法运算的规定与意义:
一、运算概念:
设已经概念好矩阵A与矩阵B,若是矩阵A与矩阵B的行的维数相同,那么MATLAB中能够用矩阵A左除矩阵B,即能够令:
X=A\B
若是矩阵A与矩阵B的列的维数相同,那么MATLAB中能够用矩阵A右除矩阵B,即能够令:
X=B/A
2、矩阵除法的意义
给出线性方程组AX=B,那么X=A给出线性方程组的一个解。
而X=B/A给出了线性方程组XA=B的一个解。
目前咱们用MATLAB求线性方程组的解只有三个方式:
当A是可逆方阵时,X=inv(A)*B给出线性方程组AX=B的唯一解。
可是A不可逆时方式失效。
可用命令rref化线性方程组AX=B的增广矩阵为行最简阶梯矩阵方式来求解,但线性方程组可能显现无解(称为“超定”)、唯一解(称为“恰定”)及无穷多解(称为“欠定”)的情形。
不管A是不是可逆都可用MATLAB除法求解,而且不管何种情形都是唯一解。
当方程存在唯一解时,三种方式求出的解是一样的。
可是用除法作的解一样精度更高。
方程为“超定”或“欠定”时解意义那么不同。
线性方程组AX=b为欠按时有无穷个解,X=A\b取得其中解分量中零元素为最多的一个特解。
线性方程组AX=b为超按时是无解的,用
X=A\b
取得的是使范数||AX-b||为最小的解。
咱们不详细说明那个范数的意义,可明白得为使AX-b最接近于零的解。
例如方程组
通解为:
输入A=[1:
3;4:
6;7:
9];b=[14,32,50]';c=A\b
显示:
c=
2
0
4
是其中有一个零分量的特解。
输入d=[03250]';g=A\d
显示g=
1.0e+017*
再输入h=A*g-d
显示h=32
96
14
因此g不知足A*g=d,只是使A*g-d尽可能接近于零。
§2经常使用的数学运算命令
以下是一些在MATLAB中最经常使用的数学运算命令(均用小写字母,命令的作用可在MATLAB顶用help<命令>查询其作用与格式):
一、大体函数运算命令
1、三角函数:
sincostancotseccsc
二、反三角函数:
asinacosatanacotasecacscatan2(四象限终归切)
3、双曲函数:
sinhcoshtanhcothsechcsch
4、反双曲函数:
asinhacoshatanhacothasechacsch
5、复数:
realimagconjangle
6、小数取整:
fix(朝零方向),ceil(朝正无穷方向),floor(朝负无穷方向),round(四舍五入)
7、对数与指数:
log10logexp
八、其它:
sqrtabssignsumprodsolve
二、线性代数运算命令:
一、detinvrankrrefeigcond
行列式求值命令det,矩阵求秩命令rank,求方阵的逆方阵命令,inv求矩阵行最简阶梯阵命令rref,求特点值与特点向量命令eig,求矩阵条件数命令cond
三、多项式运算命令
MATLAB顶用向量表示多项式,如a=[12304]表示多项式:
经常使用的多项式运算命令有:
一、多项式加减法:
在次低的向量前面加零后使其元素个数相同,再按向量加减法运算命令进行。
二、多项式a与多项式b相乘:
c=conv(a,b);
3、多项式a除以多项式b:
[q,r]=deconv(a,b)q是商,r余项)
4、多项式求值:
p1=polyval(a,x)(多项式a在点x处的值)
5、方阵多项式求值:
p2=polyvalm(a,A)(矩阵多项式a在方阵A处的值)
6、多项式求根:
p3=roots(a)(求多项式a的根)
7、多项式微分:
p4=polyder(a)
八、多项式拟合:
p5=polyfit(x,y,n)
例:
x=[11.234.25];y=x.^3-2*x.^2+3*x-1;p5=polyfit(x,y,3)
将得出:
p5=1.0000-2.00003.0000-
四、高等数学中的数值运算命令
在MATLAB数值计算中很少有高等数学中的运算命令,下面只介绍两个:
一、求数值积分:
trapz
2、差分:
diff
MATLAB中也有很多符号运算命令。
但不在本课程中。
在那些符号运算命令中能实现许多高等数学中的运算。
五、显示格式
有formatrat,formatlong,formatshort,formatlongg,formatshortg,
formatlonge,formatshorte,formathex等等。
第四节MATLAB的数组操作
前面咱们谈到了MATLAB中有数与矩阵的加减法,这是线性代数中所没有的。
MATLAB中还有许多与高等数学中内容不同的运算。
这些运算关于求解实际问题很有作用,它使编程比其它语言要简单方便得多。
MATLAB中的数组运算确实是其它运算机语言中所没有的使编程变得十分简单的运算。
MATLAB中的数组运算只在同阶矩阵中进行。
设A,B是两个已经概念好的同阶矩阵:
那么数组运算A.*B,A./B,A.^B的值别离是:
除前面讲过的数与矩阵的加减法(不算数组运算)外,数与矩阵之间还有下面的数组运算:
从上面表达可见矩阵与同阶矩阵之间(及数与矩阵之间)的数组运算的概念特点是:
1概念在两个同阶矩阵或数与矩阵之间进行;
2概念方式是前面一项与后面一项用小数点加运算符连结;
3概念的实质是:
当概念的运算在矩阵之间时,是相同位置上的元素进行由运算符规定的运算。
当概念的运算是矩阵与数之间,那么是矩阵中的每一个元素与数进行运算符规定的运算。
关于其他运算机语言,这些运算常常要通过双重循环才能完成,而在MATLAB中只要简单地用“.”加运算符即可表示,这是MATLAB专门方便的地方。
数组运算及函数运算概念容易经历与利用,它在编程中十分方便,咱们看后面的例。
若是要画函数e-xsinx2+1在区间[0,3]上的图形,操作进程是:
x=0:
0.01:
3;%概念自变量x在区间[0,3]上的值
y=exp(x).*sin(x.^2)+1%用数组运算计算函数值y
plot(x,y)%作平面上的曲线图。
只用简单三行命令完成了在其他运算机语言中要用很长程序才能完成的程序,这是MATLAB语言超级简便好用的缘故。
第五节MATLAB作图
下面介绍MATLAB中的作图命令。
§1二维作图命令plot
一、MATLAB二维作图命令最经常使用的是plot,除作图外,还有如下可操纵的操作:
1、一张图上画多条曲线(能够利用hold命令)。
二、一个屏幕上开多个窗口作图(利用subplot命令)。
3、曲线选择线型、颜色(在每条曲线后加,’.b’或,’color’,[1,0,0.5]等)。
4、标注文字,利用命令:
title(‘字符’)图形题目
xlabel(‘字符’)x轴标注,ylabel(‘字符’)y轴标注,zlabel(‘字符’)z轴标注,
legend(‘字符’,‘字符’,…)可移动标注
text(x,y,(z),‘字符’)在指定坐标标注
gtext(‘字符’)用鼠标在图形当选择地址标注
五、坐标网格线显示与关闭命令grid
二、坐标轴操纵(也适用于三维作图)axis
一、坐标轴刻度范围操纵axis(xmin,xmax,ymin,ymax(,zmin,zmax))。
二、关闭坐标轴显示开关axis(‘off’)或axisoff,axis(‘on’)或axison
3、坐标轴等刻度命令axis(‘equal’)或axisequal
4、坐标轴等长寿令axis(‘square’)或axissqual
5、使坐标等刻度与等长寿令失效命令axis(‘normal’)或axisnormal
三、下面介绍一个在实际应用中超级有效的命令:
ginput
该命令在三维空间中仍然可用,但成效不如二维空间中那么好。
四、背景色操纵命令
figure(‘color’,[r,g,b])三维空间中此命令仍然适用。
五、程序标注
在程序中“%”后的部份用作标注。
六、还有许多二维作图命令,请大伙儿参看有关参考书。
咱们仅就利用二维等值线contour命令用于求解线性方程组的例子。
MATLAB二维作图命令contour能够用于求二维超越方程组的数值解。
请看exmaple1.m:
:
2.4995];
y=[0:
0.01:
2.4995]';
A=(0*y+1)*sin(x)+y.^2*(0*x+1)+log(5-(0*y+1)*x-y*(0*x+1))-7;
contour(x,y,A,[0,0])
holdon
B=3*(0*y+1)*x+2.^y*(0*x+1)-(5-(0*y+1)*x-y*(0*x+1)).^3+1;
contour(x,y,B,[0,0])
holdoff
此程序用于求方程组:
的数值解。
此方式的优势是:
能够看到图形全貌,能够求出多解情形,能够获极高精度。
练习1:
求曲线
与曲线
在区间[0,π]上的所有交点。
练习2:
求方程组
的数值解。
要求将解代入方程后每一个方程左方减去右方后的绝对值小于。
§2三维作图命令
一、MATLAB三维作图曲线作图命令最经常使用的是plot3,contour3。
除作图外,还有如下可操纵的操作:
三维曲线作图是对参数式为
作图。
例如螺旋线:
作图命令是
t=[0:
0.01:
10*pi];x=cos(t);y=sin(t);z=t/2;plot3(x,y,z)
contour3是三维等值线作图。
二、三维曲面作图
经常使用的三维曲面作图命令有:
mesh,surf,meshc,meshz,waterfall,咱们重点介绍mesh与surf。
这两个命令都是作曲面图形,可是mesh是用网格作图,而surf是用曲面片作图。
成效有少量不同,但作图编程是相同的(那个作图进程比较复杂)。
事实上它们都是用曲面参数式
作的图,因此要画曲面图形,第一得会写上面的参数式。
然后会用上面的参数式编程。
注意在编程时z都是二维矩阵,行数与向量u的维数相同,列数与v的维数相同,x,y能够是与z维数相同的二维矩阵也能够是向量。
请看下面马鞍面
的作图进程:
y=[-1:
0.1:
1]’;x=y’;z=(0*y+1)*x..^2-y.^2*(0*x+1);mesh(x,y,z);
那个命令等价于
y=[-1:
0.1:
1]’;x=y’;z=ones(size(y))*x.^2-y.^2*ones(size(x));surf(x,y,z);
上面作的图是以z的高度作为图形色彩数据的(这是缺省时的数据)。
若是加上颜色、光照、纹理、视角等设置,能够得出十分漂亮的图形。
请看。
有时作图的参数式要利用比较复杂的数学运算,例如2001年全国数学建模竞赛时要求从血管的100张切片中读出血管的中心与半径。
竞赛中要求将血管中心线向三个坐标平面投影。
可是咱们依照血管中心线可画出血管的三维图象。
显然这更好看更直观。
曲面参数式的推导见《广西大学学报》2003年第3期,而程序请看example3.m。
练习3:
画一个求生圈的图。
提示:
求生圈的曲面参数方程为:
练习4:
画出在二维区域x2+y2≤1上的马鞍面z=x2-y2。
练习5:
作曲面z=x2+y2与平面4x+2y+5z=20相交的图(要求平面只画出被曲面截出的部份,参考右图)。
练习6:
作圆柱面x2+z2=1与圆柱面y2+z2=1相交的图(要求平面只画出在每卦限的部份)。
§3MATLAB动画
MATLAB中的动画功能不是太强,而且需要利用MATLAB的底层作图命令,即图形的句柄操作。
MATLAB中的作图命令若是利用了赋值语句,即将作图赋给了某个变量,那么该变量即为此张图形的句柄。
能够对此句柄设置一些图形属性,关于句柄图形咱们在前面已经用到了,例如马鞍面的图形中的赋值语句
aa=surf(X,Y,Z);
确实是将曲面的句柄赋给aa了,然后用
set(aa,'Facecolor',[0,0.7,0],bb,'Facecolor',[0.7,0,0.7])
设置曲面颜色。
MATLAB动画事实上确实是在句柄中设置了图形将是被复盖仍是改写等属性,然后在作图时按不同的位置画图(同时擦除前面的图形或复盖前面的图形以实现动画)。
由于作动画一样要涉及编程,咱们将此部份内容放到第四节中。
在图形的属性操纵中要注意区分各类图形对象:
figure,axes,line,patch,surface,image,text等等。
§4MATLAB图象处置
MATLAB可对图象作处置,经常使用的简单命令有:
imread,image,colormap
imread能够读出图象数据,而image能够将图象数据显示为图象,而colormap能够设置图象色彩。
练习7:
本文件夹中有一张图“figure0”,是2002年全国数学建模大赛中的一张图,要求从图中读出图形的内切圆圆心与半径。
在MATLAB图象处置中还有光照、色彩、视角等许多处置。
由于水平与时刻关系,只能简单介绍。
第六节MATLAB编程
一、MATLAB编程
MATLAB能够单步运行,也能够编程运行。
与所有软件编程一样,MATLAB中也有条件、分支、循环等语句。
条件语句:
if…end或if…else…end
循环语句:
for…end或while…end
需要指出,在其他许多语言中需要循环的地址在MATLAB中是不需要循环的。
下面咱们看一个动画程序:
画单摆的运动程序:
。
figure('color',[111])
plot([-0.2;0.2],[0;0],'color','y','linestyle','-','linewidth',10);%画悬线的横梁
g=9.8;%重力加速度
l=1;%线长
theta0=pi/6;%初始角度
x0=l*sin(theta0);%初始x值
y0=-l*cos(theta0);%初始y值
axis([-0.75,0.75,-1.25,0]);%画坐标范围
axis('off');%关闭坐标显示
head=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',40);%概念小球格式
body=line([0;x0],[0;y0],'color','b','linestyle','-','erasemode','xor');%概念悬线格式
t=0;%时刻初值
dt=0.0005;%时刻增量
while1%死循环(关闭窗口后中止循环)
t=t+dt;
theta=theta0*cos(sqrt(g/l)*t);%计算时刻t时的幅角
x=l*sin(theta);%计算时刻t时的x坐标
y=-l*cos(theta);%计算时刻t时的y坐标
set(head,'xdata',x,'ydata',y);%计算时刻t时小球的位置
set(body,'xdata',[0;x],'ydata',[0;y]);%计算时刻t时悬线的位置
drawnow;%重画小球与悬线
end
二、程序与函数
将MATLAB运行中的每一句写在扩展名为“m”的文本文件中,就取得MATLAB程序文件。
程序中的变量值都在工作窗中。
若是是写成
function[u,v,…]=fun(x,y,…)
那么是MATLAB函数,函数参数x,y能够是变量、向量或矩阵,返回值u,v也能够是变量、向量或矩阵,存储时函数名必需与存储文件名相同。
例如,运行redotree(n,B)(设的初值为B=[00;01],取n=5或n=6),能够画出一棵树的图形。
而运行leafage1(n)能够画出一张树叶。
练习8:
作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第一节 MATLAB 中的 矩阵 输入
![提示](https://static.bdocx.com/images/bang_tan.gif)