matla 课件.docx
- 文档编号:23068121
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:32
- 大小:105.49KB
matla 课件.docx
《matla 课件.docx》由会员分享,可在线阅读,更多相关《matla 课件.docx(32页珍藏版)》请在冰豆网上搜索。
matla课件
777777777试验一MATLAB基础知识
一、MATLAB简介
二、MATLAB基础知识
1、命令窗口是用户与MATLAB进行交互作业的主要场所,用户输入的MATLAB交互命令均在命令窗口执行。
例如:
在MATLAB命令窗口下键入
a=[323;476;759]
按回车键后,显示结果
a=
323
476
759
2、求逆矩阵命令
格式:
[变量]=inv(参数)
例如:
输入b=inv(a),按回车后,显示
b=1.3750-0.1250-0.3750
0.25000.2500-0.2500
-1.2083-0.04170.5417
3、MATLAB系统还具有保存历史纪录的功能,它将本次启动MATLAB系统之后,用户输入的命令和创建的所有变量的值保存起来,用户通过方向键可查找所需的命令。
MATLAB提供了存储变量和删除变量的命令。
SAVE[文件名][变量名1,变量名2,....]
功能:
将命令中的变量保存在给出的文件中。
说明:
(1)若过文件名省略,默认保存在MATLAB.MAT中。
(2)若变量名省略,则保存所有的变量到指定的文件中。
(3)若文件名和变量名都省略,则保存所有定义过的变量到MATLAB.MAT中。
例如:
SAVEAA.MATabc%将变量abc保存在文件AA.MAT中。
SAVEBB.MAT%将所有的变量保存到文件BB.MAT中。
SAVE%将所有变量保存到文件MATLAB.MAT中。
clear[变量名1变量名2,...]
功能:
删除指定的变量。
说明:
若变量名表省略,表明删除当前工作空间中的所有变量。
例如:
clearabc%删除变量abc
clear%删除当前工作空间的所有变量。
MATLAB还提供了一些命令,专门管理和控制命令窗口。
例如:
clc
格式:
clc
功能:
清除命令窗口。
home
格式:
home
功能:
光标移动到左上角
who
格式:
who
功能:
查看当前的所有变量,只给出变量名。
whos
格式:
whos
功能:
查看当前的所有变量,给出变量的详细信息。
信息同变量浏览器。
clear
格式:
clear[变量名]
功能:
删除后面列出的变量,如果变量名省略,则删除所有的变量。
4、MATLAB中的常量
MATLAB提供了整数、实数、复数和字符四种类型数据。
对应的常量类型也是这四种。
实数在屏幕显时默认的小数位数为4位。
可以用命令改变实数的显示格式。
命令format
格式:
format‘格式’
例如:
formatlong:
输出实数为16位
formatshorte:
5位加指数
formatlonge:
16位加指数
formatrat:
有理数近似
矩阵操作
1、提取矩阵的元素
例如:
A=[1233;3241;3456]
执行b=A(1,2),结果为:
b=2
执行v=A([1,2],[3,4]),结果为:
v=33
41
2、矩阵的修改
例如:
执行A(1,2)=3后,结果为:
A=1333
3241
3456
作用:
修改了第一行第二列的元素值。
执行A(:
3)=[]后,结果为:
A=133
321
346
相当于删除了第三列。
接着执行A(2,:
)=[]后,结果为:
A=133
346
相当于删除了第二行。
说明:
只能删除矩阵的某一行或某一列,不能删除某一个元素。
3、有关矩阵的其他操作
(1)提取矩阵的上三角矩阵和下三角矩阵
A=133
421
446
执行B=triu(A)后,结果为:
B=133
021
006
执行C=tril(A)后,结果为:
C=100
420
446
(2)提取矩阵的对角元素
执行B=diag(A)后,结果为:
B=126
(3)利用向量建立对角矩阵
执行C=diag(B)后,结果为:
C=100
020
006
(4)矩阵的秩、特征向量和特阵值
A=133
424
345
执行rank(A)后,结果为:
%求矩阵的秩
ans=2
执行eig(A)后,结果为:
%求矩阵的特征值
ans=
10.0000
-2.0000
-0.0000
执行[v,d]=eig(A)后,结果为:
%求矩阵的特征向量和对应的特征值组成的对角阵
v=
-0.42430.58830.4243
-0.5657-0.78450.5657
-0.70710.1961-0.7071
d=
10.000000
0-2.00000
00-0.0000
(5)矩阵的算术运算和矩阵元素之间的运算
a=12
32
b=21
12
执行c=a+b后,结果为:
c=33
44
执行d=a-b后,结果为:
d=-11
20
执行e=a*b后,结果为:
执行f=a.*b后,结果为:
f=22
34
执行g=a.\b后,结果为:
g=21/2
1/31
执行h=a./b后,结果为:
h=1/22
31
执行j=a.^b后,结果为:
j=12
34
执行k=b.^3后,结果为:
k=81
18
试验二MATLAB程序设计
1、关系运算符
<小于<=小于等于>大于>=大于等于==等于~=不等于
格式:
A关系运算符B
例如:
a=[-124;548];b=[015;512];
则c=a>b
c=010
011
2、逻辑运算符
逻辑与:
&,格式:
c=a&b
逻辑或:
|,格式:
c=a|b
逻辑非:
~,格式:
c=~a
例如:
c=a&b
c=011
111
c=a|b
c=111
111
3、程序的控制结构
选择结构:
(1)if语句
格式1:
if<表达式>
<语句组1>
end
格式2:
if<表达式>
<语句组1>
else
<语句组2>
end
格式3:
if<表达式>
<语句组1>
elseif<表达式2>
<语句组2>
............
elseif<表达式n>
<语句组n>
else
<语句组n+1>
end
格式4:
if<表达式>
if<表达式1>
<语句组1>
else
<语句组2>
end
elseif<表达式2>
<语句组3>
else
<语句组4>
end
end
(2)switch语句
格式:
switch表达式
case表达式值1
语句组1
case表达式值2
语句组2
............
case表达式值n
语句组n
otherwise
语句组n+1
end
例1:
data=input(‘inputthevalueofdata’);
n=mod(data,5);
switchn
case1
y=1;
case2
y=2;
case3
y=3;
case4
y=4
otherwise
y=n;
end
y
例2:
var=input(‘inputanumber’);
switchvar
case1
disp(‘1’)
case{2,3,4}
disp(‘2or3or4’)
case5
disp(‘5’)
otherwise
disp(‘somethingelse’)
end
(3)while语句
格式:
while(表达式)
语句组
end
例3:
使用while语句求1+2+3......+100。
i=1;
sum=0;
while(i<=100)
sum=sum+i:
i=i+1;
end
str=[‘计算结果为:
’num2str(sum)];
(4)for循环语句
格式:
for循环变量=初始值:
增量:
终值
语句组;
end
例4:
使用for语句求1+2+3......+100。
sum=0;
fori=1:
100
sum=sum+i;
end
str=[‘计算结果为:
’num2str(sum)];
disp(str)
4、函数M-文件
格式:
function[输出参数表]=函数名(形式参数)
语句组
end
说明:
(1)函数M-文件独自保存为一个文件,文件名就是函数名。
(2)调用格式:
[输出参数表]=函数名(实际参数)
(3)输出参数可以是多个变量,两两之间用逗号隔开,它们表示要计算的项;
(4)形式参数是一组形式变量,本身没有任何意义,也不代表任何内容,只有在调用时赋予它实际值,才有意义。
例5:
求向量的平均值和标准差
function[mean,stdev]=stat(x)
n=length(x);
mean=sum(x)/n;
stdev=sqrt(sum(x.^2)/n-mean.^2);
end
说明:
函数M-文件保存为stat.m。
length(x):
求向量x的长度。
sum(x):
求向量x中各个元素的总和,如果x是一矩阵,则按列求和。
sqrt(x):
求x的平均值。
调用:
重新打开一m文件,输入:
x=[123;621;-1-6-4];
[mean,stdev]=stat(x);
然后保存为任一文件名即可。
(除函数名外)
试验三函数极限与导数
1、函数的极限
格式:
limit(表达式,变量,常量,’right’和‘left’)
含义:
当‘变量’趋向于‘常量’时,‘表达式’的左极限或‘右极限’。
说明:
(1)当变量省略时,默认的变量是x,没有x时,找字母表中离x最近的字母作为变量。
(2)当常量省略时,默认为0。
(3)在不说明是左极限还是右极限时,求表达式的极限。
例如:
symsxath
limit(sin(x)/x);
limit((x-2)/(x^2-4),2);
limit((1+x)/(x)^(2*x),x,inf);
v=[(1+a/x)^x,exp(-x)];
limit(v,x,inf,’left’);
2、导数与微分
求导公式
格式:
diff(表达式,变量,阶数)
功能:
它表示将“表达式”按照“变量”求“阶数”阶导数。
说明:
若阶数省略,则表示求一阶导数。
例如:
symsx
f=log(x);
diff(f)
diff(f,4)
g=(x+exp(x)*sin(x))^(1/2);
diff(g)
pretty(ans)
diff(g,2)
simplify(ans)
pretty(ans)
3、积分
格式:
int(被积函数,积分变量,积分下限,积分上限)
功能:
求“被积函数”对“积分变量”从“积分下限”到“积分上限”的定积分。
说明:
当积分上下限省略时,求“被积函数”的不定积分。
例如:
symsxab
int(x*log(x))
int(1/(1+sqrt(1-x^2)))
int(cos(log(x)))
eval(int(exp(-x^2),x,-1,1))
eval(int(exp(-x^2),x,-inf,1))
eval(int(exp(-x^2),x,-inf,inf))
试验四微分方程、多元函数微积分
一、解方程
1、代数方程
格式:
solve(f,t)
功能:
对变量t解方程f=0,t缺省时默认为x或最接近字母x的符号变量。
例如:
求解一元二次方程f=a*x^2+b*x+c的实根,执行
solve(f,x)
结果为:
ans=[1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[1/2/a*(-b-(b^2-4*a*c)^(1/2))]
又如:
求解一元二次方程g=4*x^2+6*x-9的实根,执行
solve(g,x);
eval(ans)
结果为:
0.9271,-2.4271
2、微分方程
(1)常微分方程的通解
当微分方程中不含任何附加条件(初值条件)时,其解就是该方程的通解。
格式:
dsolve(‘微分方程’,‘自变量’)
说明:
其中“微分方程”和“自变量”都按字符串形式给出,并用单引号括住,且当自变量为t时可省略。
例如:
symsxyztab
dsolve(‘Dy+x*Dy=a*(y^2+Dy)’,’x’)
注:
Dy<=>y’,D2y<=>y”,D3y<=>y”’,依次类推。
dsolve(‘D3y=exp(2*x)-cos(x)’,’x’)
(2)常微分方程的特解
格式:
dsolve(‘微分方程’,‘初值条件1,初值条件2,.....’,‘自变量’)
说明:
y(x0)=y0<=>y|x=x0=y0;Dy(x0)=y1<=>y’|x=x0=y1。
例如:
symsxyztab
dsolve(‘Dx=a*x*(b-x)’,’x(0)=x0’);自变量为t
dsolve(‘x*D2y+Dy=0’,’y
(1)=1,Dy
(1)=6’,’x’)
(3)常微分方程组求解
对于无初值条件的微分方程组,其通解的求法格式为:
dsolve(‘微分方程1,微分方程2,…’,’自变量’)
对于带初值条件的微分方程组,其特解的求解格式为:
dsolve(‘微分方程1,微分方程2,…’,’条件1,条件2,…’,
’自变量’)
例如:
求
的通解和特解,其命令如下:
symsxfgh
[f1,g1]=dsolve(‘D2f+3*g=sin(x),Df+Dg=cos(x)’,’x’)
[f,g]=dsolve(‘D2f+3*g=sin(x),Df+Dg=cos(x)’,’Df
(2)=0,
f(0)=0,g(0)=0’,’x’)
二、多元函数微积分
1、多元函数极限
这里我们仅对极限存在的函数,求沿坐标轴方向的极限。
,即将求多元函数极限问题,化成求多次单极限的问题。
例如:
symsxyztab
limit(limit((x^2+y^2)/(sin(x)+cos(y)),0),pi)
limit(limit(limit((x+y*z+exp(sin(x*z)))/(x+y/z),1),2),3)
2、多元函数偏导数
对多元函数中的某一变量求偏导数,等价于将其余变量看作常量,仅对该变量求导数。
symsxyztuv
diff(x^3+2*x*y+y^2-6,x)
diff(diff(x^3+2*x*y+y^2-6,x),y)
试验五绘图和级数
一、化简和代换
simplify利用各种恒等式化简代数式
expand将乘积展开为和式
factor把多项式转换为乘积形式
collet合并同类项
horner把多项式转换为嵌套表示形式
例如:
合并同类项:
collect(3*x^3-0.5*x^3+3*x^2)
结果为:
ans=5/2*x^3+3*x^2
进行因式分解执行:
factor(3*x^3-0.5*x^3+3*x^2)
结果为:
ans=1/2*x^2*(5*x+6)
展开多项式执行:
expand((x-a)*(x-b))
结果为:
ans=x^2-x*b-a*x+a*b
把多项式转换成嵌套表示形式执行:
horner(x^3-6*x^2+11*x-6)
结果为:
ans=-6+(11+(-6+x)*x)*x
二、绘图命令
matlab提供了两个非常简便的绘图命令,分别如下:
1、格式:
ezplot(f,xmin,xmax)
功能:
绘出以x为横坐标的曲线f,x在[xmin,xmax]内取值,当xmin和xmax缺省时,默认xmin=-2*pi,xmax=2*pi。
例如:
描述函数cos(2*x)在区间[-2*pi,2*pi]上的图形,执行命令如下:
ezplot(cos(2*x),-2*pi,2*pi)
2、格式:
plot(x,y,‘格式串’,…)
功能:
绘出以x为横坐标y为纵坐标的散点图或折线图。
其中,x和y为同维向量,“格式串”指定图形格式,包括颜色、线形等。
例如:
执行
x=[12358];
y=[114192237];
plot(x,y,‘-*k’)
其中,‘-*k’表示黑色实线,点用“*”表示。
初等函数的图形:
x=linspace(-pi,pi,60);
z=linspace(0.1,2*pi,60);
t=linspace(-1,1,60);
u=linspace(-10,10,60);
y1=x;y2=x.^2;y3=x.^3;y4=x.^4;
subplot(3,2,1);
plot(x,y1,’-‘,x,y2,’:
’,x,y3,’-.’,x,y4,’--‘);
axis([-pipi-25]);
text(-0.5,4,’幂函数‘);
三、级数
1、常数项级数
格式:
symsum(一般项,变量,起始,终止)
功能:
用指定变量从“起始”到“终止”求级数和。
当“终止”值取有限值时,可求出级数指定项数的部分和。
例如:
symsum(1/n^2,n,1,10);
symsum(1/n,n,1,10);
symsum((1+n)/(1+n^2),n,1,10);
当“终止”值为inf时,可求出级数的收敛和。
例如:
symsum(1/n^2,n,1,inf);
symsum(1/n,n,1,inf);
symsum((1+n)/(1+n^2),n,1,inf);
当“终止”值为变量,比如取m时,可求得级数部分和数列的一般项,该一般项以m为变量,当
时,取得极限即为收敛和。
例如:
symsum(1/n,n,1,m)
symsum(1/n^2,n,1,m);
symsum((1+n)/(1+n^2),n,1,m);
2、幂级数
幂级数的收敛半径:
,求的收敛半径,用与求常数项级数收敛和相同的办法求幂级数的收敛和函数。
例如:
symsxn
limit((n+1)/n,n,inf)
symsum((-1)^(n-1)*x^n/n,n,1,inf)
limit((2^(n+1)*(n+1))/(2^n*n),n,inf)
symsum((x-1)^n/(2^n*n),n,1,inf)
3、将函数展开成幂级数
格式:
taylor(函数,阶数n,x0点,变量x)
功能:
将给定“函数”在“x0点”处按“变量x”展开成n-1阶的泰勒级数。
说明:
(1)阶数n省略,默认为6;
(2)x0点省略,默认为0;
(3)“变量x”省略,默认用findsym(f)查找默认变量。
(4)后面的三个参数顺序还可以打乱次序,但若x0点和阶数均为整数时,必须阶数在前,x0点在后。
例如:
taylor(exp(-x),x,8,7)
表示将
在x0=7点处展开为七阶泰勒级数。
taylor(exp(x))%将
在x=0点展开成5阶泰勒级数。
taylor(exp(-x^2),x,n)%将
在x=n点展开成5阶泰勒级数.
taylor(cos(x),8)%将cos(x)在x=0点展开成7阶泰勒级数
注:
参数终止给出一个整数,认为是阶数。
四、傅立叶级数
三角级数:
其中,
,
(n=0,1,2,3,…),
(n=0,1,2,3,…),
正弦级数:
(n=0,1,2,3,…)
余弦级数:
(n=0,1,2,3,…)
在matlab中,编写以下四个函数mfourier(f),msin(f),mcos(f)和mlfourier(f,l),分别用于求函数f的傅立叶级数、正弦级数、余弦级数,以及周期为2l的傅立叶级数的系数。
function[a0,an,bn]=mfourier(f)
symsnx
a0=int(f,-pi,pi)/pi;
an=int(f*cos(n*x),-pi,pi)/pi;
bn=int(f*sin(n*x),-pi,pi)/pi;
end
functionbn=msin(f)
symsnx
bn=int(f*sin(n*x),-pi,pi)/pi;
end
function[a0,an]=mcos(f)
symsnx
a0=int(f,-l,l)/pi;
an=int(f*cos(n*x),-pi,pi)/pi;
end
function[a0,an,bn]=mlfourier(f,l)
symsnx
a0=int(f,-pi,pi)/pi;
an=int(f*cos(n*pi*x/l),-l,l)/l;
bn=int(f*sin(n*pi*x/l),-l,l)/l;
end
说明:
以上四个函数分别保存在四个M-文件中,以函数名作为文件名。
试验六方程组求解和数值微积分
一、欠定方程组的求解
若有方程组AX=B,其中X为m个变量构成的列向量,一共有n个方程,则A为n*m矩阵。
若rank(A) 若b中元素全为0,称方程组为其次线形方程组。 1、齐次线性方程组的求解 如方程组: 在MATLAB中输入 A=[1-23-4;01-11;-10-12;1-34-5]; a=null(A)%返回矩阵A的零空间的标准正交基组成的矩阵a。 a=0.7888-0.2110 -0.4999-0.2889 -0.2110-0.7888 0.2889-0.4999 因而,原方程的通解为: %其中k1与k2为任意常数。 2、欠定方程组的求解 从理论上说,欠定方程组有无穷多组解。 这时,我们仍然可用广义逆矩阵法和矩阵除法求解方程组。 前者所求的解是所有解种范数最小的一个,而后者求的解是所有解中含零个数最多的一个。 他们求出的解是所有解系中的一个特解。 要求其通解,则先解其对应的齐次方程的通解,然后再加上自身的一个特解即可。 如: A=[1-23;01-1;-10-1;1-34]; b=[4-3-41]’; x=pinv(A)*b x=-2.2549 1.2157 1.0392 y=A\b waring: rankdeficient,rank=2tol=4.6151e-015. y=0 3.4706 3.2941 B=null(A) B=0.5774 -0.5774 -0.5774 故方程组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matla 课件
![提示](https://static.bdocx.com/images/bang_tan.gif)