MATLAB 知识点.docx
- 文档编号:12119090
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:16
- 大小:100.21KB
MATLAB 知识点.docx
《MATLAB 知识点.docx》由会员分享,可在线阅读,更多相关《MATLAB 知识点.docx(16页珍藏版)》请在冰豆网上搜索。
MATLAB知识点
1,计算矩阵的特征值和特征向量
【V,D】=eig(A)其中A指的是矩阵V指的是特征向量组成的矩阵D指的是特征值所组成的矩阵
A=[010;101;010];
>>[V,D]=eig(A)
V=
0.5000-0.70710.5000
-0.70710.00000.7071
0.50000.70710.5000
D=
-1.414200
0-0.00000
001.4142
2,求线性方程的解
这是一个非齐次方程方程,对于线性代数来讲,很难求解,但是利用MATLAB来求
A=[123;3-54;789];1
B=[14550];2
x=A\B3
B=[14;5;50];4
这4个语句的区别,特别是2.3两句的区别,2语句中B表示的是1行3列,但是4语句中的表示的3行1列。
同时,X=A\B很X=A/B也是很有能区别的,具体的区别如下:
X=A\B表示的是A*X=B的解
X=A/B表示的是X*A=B的解,在这里,具体解释如下;A*X=B,在线性代数中,X=A^(-1)B,所以X=A\B。
X*A=B的解为X=BA^(-1),就是X=B/A。
3,一元方程求根
这个在计算中是个难题,一元多次方程式很难求解的,对于纯粹的手工计算来说,所以有MATLAB比较方便,具体语句如下:
P=[0.695520.4360.6681.35];
>>X=roots(P)
X=
0.2817+1.2456i
0.2817-1.2456i
-1.1902+0.0000i
对于这个方程来说,要注意的是,在构成向量时,一定要从告辞往低次排列,中间缺少次数的,用0代替,求解语句是roots(P)。
4,图形处理功能
A,可以绘制函数图像,具体的语句如下:
>>x=linspace(0,6);这个表示X轴,在0到6内取100个点,这是默认的数值100。
当然还有可以设定数值的方法linspace(0,6,100)表示的是在0到6内取等间隔取100个点。
>>y1=sin(2.*x);
>>plot(x,y1)这是绘制函数sin(2X)的图像,在这里要注意的,这个乘号的作用,其中还有一个“点号”。
这是和普通的数学中的乘法不同的地方。
y1=sin(2.*x);y2=sin(x.^2);y3=(sin(x)).^2这是其他的图像,分别是sin2xsin(x^2)(sinx)^2,但是在这3个式中,用MATLAB表达时,总会用到“点号”这个符号,这是要注意的地方。
绘图用plot函数就可以吧。
B,在同一个窗口绘制多个函数的图像,但是并不是在同一个坐标系中绘制。
具体语句如下:
例题:
用四种方法描述cos(x)*sin(y)图形,分别采用以下的集中函数,分别是surf,mesh,meshc,waterfall进行函数图像的绘制
具体语句如下:
x=linspace(-10,10,100);
y=linspace(-10,10,100);
[x1,y1]=meshgrid(x,y);
x是n为向量,y是m维向量,
如x1=[1;2;3];y1=[4;5]
则[x1,y1]就产生一系列坐标点,
(1,4),(1,5)
(2,4),(2,5)
(3,4),(3,5)
一般在作3D图像的时候遇到,这是为了把XY变成矩阵,如果不这样做,就会产生报错。
但是在前面做2D图像时就不会用到meshgrid函数,这是在做3D图像时要注意到的地方。
z=cos(x1).*sin(y1);
subplot(2,2,1);surf(x1,y1,z);
subplot(2,2,2);mesh(x1,y1,z);subplot(2,2,3);meshc(x1,y1,z);
subplot(2,2,4);waterfall(x1,y1,z)当没有用surf,mesh,meshc,waterfall时,图像时画不出来的。
当我们确实waterfall(x1,y1,z)语句时,绘制的图像具体如下,第四幅图缺失了图像。
5,矩阵的加法
具体的语句如下,只要注意不要把矩阵的表示方法搞错了就可以了
a=[1,2,3;4,5,6;7,8,9];
>>b=[1,1,1;2,2,2;3,3,3];
>>a+b
ans=
234
678
101112
6,矩阵的乘法
在这之前,首先要注意的是A*B和A.*B是不同的计算,所以不能够乱用。
A*B表示的是我们学习的数学中的算法。
但是A.*B表示的是两个矩阵中相同的位置相乘,是不同的用法,要注意。
具体的算法如下;
a=[1,2,3;4,5,6;7,8,9];
>c=[123;456;789];
a*c
ans=
303642
668196
102126150
>>a.*c
ans=
149
162536
496481
7,超定系统
首先要了解什么是超定系统,超定系统是对于解决多元方程而言的,同时方程的个数要多于自变量的个数,这个就是超定方程
x1+2x2=1
2x1+3x2=2
3x1+4x2=3如何去解这个方程,具体的语句如下:
a=[12;23;34];b=[1;2;3];
>>a\b
ans=
1.0000
0.0000
有超定方程,那么必然就有欠定方程,欠定方程的定义是,方程的个数小于自变量的个数。
如下;
x1+2x2+3x3=1
2x1+3x2+4x3=2
a=[123;234];b=[1;2];a\b
ans=
1
0
0
8,矩阵的幂运算
a=[123;234];
C=a^1.5;
和普通计算的区别不是很大
9,矩阵的转置
分为共轭转置和非共轭转置两种情况,共轭转置用语句“a’”,非共轭转置用“a.’”.有个在前面用过的逗号运算符‘.’.
a=[1+2i2+4i];
>>a'(共轭转置,不仅进行了转置,还进行了共轭的处理)
ans=
1.0000-2.0000i
2.0000-4.0000i
>>a.'
ans=1.0000+2.0000i
2.0000+4.0000i
10,矩阵的关系和逻辑运算
>a=[0-12];
>>b=[-312];
>>a
ans=010
>>a<=b
ans=011
>a>b
ans=100
>>a>=b
ans=101
>>a==b
ans=001
>>a~=b
ans=110
也就是比较两个矩阵的关系,当矩阵的关系是真的时候,则输出为1。
当矩阵的关系是假的时候,就会输出为0。
当然,还存在或与非3种逻辑运算。
11,矩阵的函数运算
具体的使用函数如下:
inv
矩阵求逆
det
行列式的值
eig
矩阵的特征值和特征矢量
diag
对角矩阵
trace
矩阵的迹
rank
矩阵的秩
pinv
矩阵的伪逆
norm
矩阵或矢量的范数
求解方程的解法,主要是利用rank函数,rank函数是求解这个矩阵的秩的。
来判断这个方程是不是有一个解,当系数矩阵和增广矩阵有相同的秩的时候,只有一个解,但是当他们的秩是不同的时候,要根据法则来判断,具体的事例如下:
c=
52-9-18
-9-22-7
67329
>>rank(c)
ans=
3
12,矩阵的分解
A,特征值得分解
利用eig函数,事例[c,d]=eig(A),这个在前面已经解释过了,参看前面的解释。
B.奇异值分解
利用svd函数,[u,s,v]=svd(A)
C,三角分解
[l,u]=lu(A),其中l代表下三角,u代表上三角
D,Cholesky(乔里斯基)分解
如果A为n阶对称正定矩阵,则存在一个非奇异的上三角实矩阵L,使:
。
当限定L的对角元素为正时,这种分解时唯一的,称为Cholesky分解。
使用chol(a)就可以了。
E,QR分解(也称为正交分解)
实矩阵A可以写成
的形式,其中Q为正交阵,R为上三角阵。
规定若R的对角元为正数,则分解唯一。
[q,r]=qr(A)
13,矩阵的特殊操作
特殊矩阵:
空阵:
[]——创建空阵。
全0阵:
各个元素都为零的矩阵,函数zeros。
a=zeros(M,N),生成M行N列的矩阵。
a=zeros(size(B)),生成与矩阵B维数相同的矩阵。
单位阵:
对角线元素为1,其他元素为0的矩阵,函数eye(m,n)。
全1阵:
各个元素都为1的矩阵,函数ones。
随机阵:
矩阵元素由随机数构成的矩阵。
函数rand、randn。
rand(M,N),生成M行N列随机矩阵,矩阵元素值在区间(0,1)之间。
randn(M,N),生成M行N列随机矩阵,矩阵元素值服从正态分布
N(0,1)。
14,变维操作
一般先排列,在排行。
a=[1:
12]
a=
123456789101112
reshape(a,3,4)
ans=
14710
25811
36912
15,矩阵的翻转
对矩阵进行左右、上下翻转、旋转等操作。
fliplr:
左右翻转
flpdim:
第n维翻转
flipud:
上下翻转
rot90:
逆时针旋转90°
16,矩阵的抽取
函数diag实现矩阵对角元素的抽取:
c=diag(a,n),c为抽取矩阵a的第n条对角线所创建的元素矢量。
a=diag(c,n),创建对角矩阵a,使矢量c成为a的第n条对角线矢量。
n=0或不指定n时,为主对角线。
函数tril实现下三角矩阵抽取:
c=tril(a,n),抽取矩阵a的第n条对角线下面的部分,包括第n条对角线。
函数triu实现上三角矩阵抽取:
c=triu(a,n),抽取矩阵a的第n条对角线上面的部分,包括第n条对角线。
17,如何取出矩阵A中的数组
b=A(3:
5,1:
2)表示的是把A矩阵的3到5行,1到2列取出来。
18,如何取出数组A中的某个元素
x=rand(1,5)
x=
0.75770.74310.39220.65550.1712
>>x(3)
ans=
0.3922
x(1:
3)取出数组的元素的前3个
ans=
0.75770.74310.3922
>>x([135])取出数组的元素的第1,3,5个
ans=
0.75770.39220.171
符号运算功能
18,创建符号矩阵
利用sym(‘[]’),方括号中是符号。
查找函数findsym(A,N),在矩阵A中找到N个与X相近的数字。
19,求导数
Diff(f,x)这句话表示的是F函数中,对X进行求导数。
具体的语句如下:
Symsxn%定义两个自变量字符
f=x^n%定义函数f的定义式
Diff(f,x)%对f中x求导数
ans=
n*x^(n-1)
diff(f,n)%定义对f中的n求导数
ans=
x^n*log(x)
20,关于多项式的乘法和除法
具体的语句如下:
a=[1-53-42];
>>b=[12-53];
>>conv(a,b)%乘法语句conv()
ans=1-3-1230-3633-226
>>deconv(ans,b)%除法语句deconv()
ans=1-53-42
21,因式分解
函数是factor(F),F表示的是函数。
具体的例子如下:
symx;
>>f=x^9-1;
>>factor(f)
ans=
[x-1,x^2+x+1,x^6+x^3+1]
22,算式展开
利用expand函数,具体的例子如下:
symsxy
>>f=(x+1)^5;
>>expand(f)
ans=x^5+5*x^4+10*x^3+10*x^2+5*x+1
>>f=sin(x+y);
>>expand(f)
ans=cos(x)*sin(y)+cos(y)*sin(x)
但是在这里要注意的关于sym和syms函数的区别,sym适合定义一个符号,但是syms适合定义多个运算符号。
23,合并同类项
Collect函数,具体的语句如下:
symsxt
>>f=x*[x*(x-6)+12]*t;
>>expand(f)
ans=
t*x^3-6*t*x^2+12*t*x
>>collect(f)
ans=
t*x^3-6*t*x^2+12*t*x
>>factor(f)
ans=
[t,x,x^2-6*x+12]
24,分式的通分
symsxy
>>f=x/y+y/x;
>>numden(f)
ans=
x^2+y^2
>>[n,d]=numden(f)
n=x^2+y^2
d=x*y
25,讲多项式写成嵌套的形式
symx
ans=
x
>>f=x^3+6x^2+11x-6;
f=x^3+6x^2+11x-6;
↑
错误:
不应为MATLAB表达式。
是不是想输入:
>>f=x^3+6*x^2+11*x-6;
>>horner(f)
ans=
x*(x*(x+6)+11)-6
>>
26,替换函数
subs(‘函数式’,‘要替换的字符’,‘带入的字符’)
具体的语句如下:
Symsab
Subs(a+4*b,a,3)
Ans=3+4*b
还有另外一种写法:
就是不用syms函数来定义字符
Subs(‘a+4*b’,’a’,3)
Ans=3+4*b
我们在没有使用syms函数式,所以a,b就必须要用‘’这个符号要定义。
27,精度的控制
可控精度运算:
函数vpa
vpa(S),显示符号表达式S在当前精度D下的值。
D是使用digits函数设置的数值精度。
vpa(S,D),显示符号表达式S在精度D下的值,D不是当前的精度值,而是临时使用digits函数设置为D位精度。
设定所用数值的精度:
函数digits
digits(D),设置数值的精度为D位。
digits,在命令窗口显示当前设定的数值精度。
具体的语句如下:
a=[1/4,exp
(1);log(3),7/3]
a=
0.25002.7183
1.09862.3333
>>vpa(a,10)
ans=
[0.25,2.718281828]
[1.098612289,2.333333333]
>>a=sym('[1/4,exp
(1);log(3),7/3]')
警告:
Supportofstringsthatarenotvalidvariablenamesordefineanumberwillberemovedinafuturerelease.Tocreatesymbolic
expressions,firstcreatesymbolicvariablesandthenuseoperationsonthem.
>Insym>convertExpression(line1536)
Insym>convertChar(line1441)
Insym>tomupad(line1198)
Insym(line177)
a=
[1/4,exp
(1)]
[log(3),7/3]
>>vpa(a,10)
ans=
[0.25,2.718281828]
[1.098612289,2.333333333]
在这里,有两种写法,sym和没有sym,一个是有精度的,一个是没有精度的。
可以从上面的例子可以看出来的。
没有sym,系统会自动把按照精度来写。
下面来谈谈vpa和digits的区别;首先,这两个函数的表达形式,
Vpa(a,10)或者vpa(a),这是临时定义的。
我们会定义一个数据的精度digits(10),这个digits所定义的数据精度是对所有的函数有用的,但是,当出现vpa(10)时,精度会临时的变化,会遵循这个临时的vpa()所带的精度。
但是在经过vpa语句过后,再用vpa(a),{这个a表示的是算式},这个精度是前面digits()定义的精度。
28,符号微积分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 知识点