第一章和第二章基本运算和符号运算_第1页
第一章和第二章基本运算和符号运算_第2页
第一章和第二章基本运算和符号运算_第3页
第一章和第二章基本运算和符号运算_第4页
第一章和第二章基本运算和符号运算_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab应用第一章Matlab的基本运算第二章Matlab的符号运算第三章Matlab的数学优化第四章Matlab的图形绘制第五章Matlab的Simulink仿真模拟基础第六章基于Simulink的控制系统仿真第七章基于SimEvents的排队系统仿真第八章神经网络工具箱的应用第一章Matlab的基本运算打开Matlab命令窗口在空白处即可敲入相应命令和语句打开Matlab编辑窗口在命令窗口敲入Edit即可打开编辑窗口。在编辑窗口可自定义函数,保存后,扩展名为.m。Matlab命令或语句的执行两种直接命令或语句的方式:在命令窗口的空白处可敲入相应命令和语句,打回车键来执行语句;在命令窗口的空白处直接敲入编辑窗口自定义的函数名,打回车键来执行自定义函数中的语句。鉴于求矩阵逆矩阵是非常困难的,Matlab提供了两种求逆矩阵的函数,可在命令窗口(commandwindows)下直接输入:1、inv(A)2、A^-1Matlab求矩阵逆如在命令窗口下输入:A=[1,2,5,3,7;2,4,7,9,1;2,5,8,3,6;3,4,1,7,9;3,4,3,8,5];inv(A)或A^-1即显示如下逆矩阵:

0.4201-1.22300.0074-1.69522.6989-0.64680.52040.31600.9554-1.29740.2100-0.11150.0037-0.34760.34940.01860.2379-0.14130.2082-0.27880.10970.0037-0.03350.1283-0.1450这里再来介绍几个矩阵的简单表述:1、A’:矩阵A的转置矩阵。2、tril(A):产生矩阵A的下三角矩阵。3、triu(A):产生矩阵A的上三角矩阵。4、A(m:n,p:q):产生新矩阵,该矩阵由矩阵A的m行到n行,p列到q列组成。A=1253724791258363417934385A(2:4,3:5)=7918361795、sum(A):得到一行向量,该行向量中各分量分别是矩阵A中每一列的和。6、diag(A):得到一个列向量,该列向量中各分量分别是矩阵A中对角线上的各元素。A=1253724791258363417934385sum(A)=1119243028

diag(A)=148757、rank(A):得到矩阵的秩。det(A):行列式size(A):得到矩阵的阶,得到矩阵的n行m列。sort(A):按列将矩阵A按升序排列。fliplr(A):将矩阵A翻转过来排序。sort(A)=

1213124335245763478735899fliplr(A)=

7352119742638529714358343A=1253724791258363417934385det(A)=538rank(A)=5Size(A)=558、cat(1,A,B):把矩阵A和矩阵B按上下顺序合并成新矩阵。A=[578;019;436]=578019436

B=[104;356;987]=104356987cat(1,A,B)=5780194361043569、cat(2,A,B):把矩阵A和矩阵B按左右顺序合并成新矩阵。A=[578;019;436]=578019436

B=[104;356;987]=104356987cat(2,A,B)=57810401935643698710、A*B:求矩阵A和B相乘。A=[578;019;436]=578019436

B=[104;356;987]=104356987

A*B=989911884776967637611、A.*B:求矩阵A和B中各分量分别相乘。A=[578;019;436]=578019436

B=[104;356;987]=104356987A.*B=5032055436244212、A/B:求矩阵A和B的逆矩阵相乘,即A/B=A*(inv(B))。A=[578;019;436]=578019436

B=[104;356;987]=104356987A/B=0.02061.10310.18561.60821.0412-0.52580.81440.07220.329913、A./B:求矩阵A中各分量除以B中各分量。A=[578;019;436]=578019436

B=[104;356;987]=104356987A./B=5.0000Inf2.000000.20001.50000.44440.37500.857114、A\B:求矩阵A的逆矩阵和B的相乘,即A\B=(inv(A))*B)。A=[578;019;436]=578019436

B=[104;356;987]=104356987

A\B=3.65223.04351.6783-3.2609-3.2174-1.59130.69570.91300.843515、A.\B:求矩阵B中各分量除以B中各分量。A=[578;019;436]=578019436

B=[104;356;987]=104356987A.\B=0.200000.5000Inf5.00000.66672.25002.66671.166716、size(A):得到矩阵A的行数和列数。17、rank(A):得到矩阵A的秩。18、det(A):得到矩阵A的行列式值。19、sort(A):把矩阵A按各元素的升序排列。A=[578;019;436]=578019436sort(A)=016438579A=[9,3,5,3,7,4,8,3,9,1,4]93537483914sort(A)=[9;3;5;3;7;4;8;3;9;1;4]93537483914sort(A)1333445789920、eye(n,n):产生n行n列的单位矩阵,矩阵中对角线上的分量为1,其余均为0。21、zeros(m,n):产生m行n列的0矩阵,矩阵中各分量均为0。22、ones(m,n):产生m行n列的1矩阵,矩阵中各分量均为1。23、linspace(x1,x2,N)用于创建向量。

功能:用于产生x1,x2之间的N点行矢量。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。

linspace(1,100,5)ans=1.000025.750050.500075.2500100.000024、normrnd(MU,SIGMA,m,n):产生m行n列的矩阵,矩阵中的数据符合正态,数学期望值为MU,方差为SIGMA。normrnd(0,1,5,8)=0.5377-1.3077-1.3499-0.20500.67151.03470.88841.43841.8339-0.43363.0349-0.1241-1.20750.7269-1.14710.3252-2.25880.34260.72541.48970.7172-0.3034-1.0689-0.75490.86223.5784-0.06311.40901.63020.2939-0.80951.37030.31882.76940.71471.41720.4889-0.7873-2.9443-1.7115产5行8列的矩阵,矩阵中数据的数学期望(平均值)为0,方差为1。25、rand:用均匀分布在[0,1]内产生的随机数。26、rand(n):产生一个n阶的随机矩阵,矩阵中元素均在0和1之间,符合均匀分布。27、rand(m,n):产生一个m*n阶的随机矩阵,矩阵中元素均在0和1之间,符合均匀分布。28、randn(n):产生一个n阶的随机矩阵,矩阵中的元素数学期望为0,方差为1,符合正态分布。29、randn(m,n):产生一个m*n阶的随机矩阵,矩阵中的元素数学期望为0,方差为1,符合正态分布。30、randi([min,max],m,n):产生m*n阶的随机矩阵,矩阵中各元素均为整数,符合均匀分布,最大值为max,最小值为min。31、poissrnd(LAMBDA,m,n):产生m行n列的矩阵,矩阵中各分量符合泊松分布,参数为LAMBDA。poissrnd(5,6,8)=883753485541168584536564425545626413841256564445532、用matlab编程中常用的几个语句:(1)if条件语句if<逻辑表达式>语句集elseif<逻辑表达式>语句集else

语句集end(2)for循环语句for<循环参数>=<初态>:<步长>:<终态>

循环体end当步长=1时,步长可以省略。fori=1:100forj=1:200ifi==ja(i,j)=2;elseifmin([i,j])==1a(i,j)=1;elsea(i,j)=0;endendend(3)while循环语句while<逻辑表达式>

循环体

end

(4)情景切换语句switch(变量或表达式)casev1

语句

casev2

语句

.......otherwise

语句end第二章Matlab的符号运算符号运算什么是符号运算?直接对抽象的符号对象进行计算,结果以标准的符号形式来表示。可以获得比数值计算更一般的结果。符号运算的特点:运算以推理解析的方式进行,因此不受计算误差积累问题困扰;计算结果或给出完全正确的封闭解,或给出任意精度的数值解(当封闭解不存在时);符号计算指令的调用比较简单,经典教科书公式相近;计算所需时间较长,有时难以忍受。MATLAB符号运算是通过集成在MATLAB中的符号运算工具箱(symbolicmathtoolbox)来实现的。符号数学工具箱中的工具是建立在功能强大的称作Maple软件的基础上。它最初是由加拿大的滑铁卢(Waterloo)大学开发的。当要求MATLAB进行符号运算时,它就请求Maple去计算并将结果返回到MATLAB命令窗口。符号数学工具箱是操作和解决符号表达式的符号数学工具箱(函数)集合,有符号表达式的运算,复合、简化、微分、积分以及求解代数方程和微分方程的工具。主要内容符号计算基础符号函数及其应用符号积分级数符号方程求解其他常用命令符号计算基础MATLAB定义了一种符号数据类型运算对象为符号对象符号常量:无变量的符号表达式称作符号常量符号变量符号表达式建立符号对象x=sym(‘x’)创建单个符号常量/变量x符号常量:x不为变量符号变量:x为字符、字符串、表达式或字符表达式syms用于方便地一次创建多个符号变量,调用格式为:

symsabcd.这种格式定义符号变量时不需要在变量名上加字符分界符('),变量间用空格而不要用逗号分隔。书写简洁意义清楚,建议使用。符号表达式含有符号对象的表达式称为符号表达式MATLAB在内部把符号表达式表示成字符串,以与数字变量或运算相区别;否则,这些符号表达式几乎完全象基本的MATLAB命令。符号表达式例子以及MATLAB等效表达式符号表达式MATLAB表达式

'1/(2*x^n)'y='1/sqrt(2*x)'

'cos(x^2)-sin(2*x)'M=sym('[a,b;c,d]')考察符号变量和数值变量的差别例

a=sym('a');b=sym('b');c=sym('c');d=sym('d');%定义4个符号变量w=10;x=5;y=-8;z=11;%定义4个数值变量A=[a,b;c,d]%建立符号矩阵AB=[w,x;y,z]%建立数值矩阵Bdet(A)%计算符号矩阵A的行列式det(B)%计算数值矩阵B的行列式比较符号常数与数值在代数运算时的差别例pi1=sym('pi');k1=sym('8');k2=sym('2');k3=sym('3');%定义符号变量pi2=pi;r1=8;r2=2;r3=3;%定义数值变量sin(pi1/3)%计算符号表达式值sin(pi2/3)%计算数值表达式值sqrt(k1)%计算符号表达式值sqrt(r1)%计算数值表达式值sqrt(k3+sqrt(k2))%计算符号表达式值sqrt(r3+sqrt(r2))%计算数值表达式值基本的符号运算符号表达式的四则运算+,-,*,/。符号表达式的提取分子和分母运算numden因式分解与展开factor,expand表达式化简simplify,simple符号表达式与数值表达式之间的转换sym,numeric,eval符号表达式的四则运算符号表达式的四则运算和其他表达式的运算并无不同,但要注意,其运算结果依然是一个符号表达式。例f=sym('2*x^2+3*x-5')g=sym('x^2-x+7')f+gf-gf*gf/gf^3符号表达式的提取分子和分母运算(分式通分)如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:[n,d]=numden(s)该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。例对表达式f=x/y+y/x进行通分。symsxyf=x/y+y/x;[n,d]=numden(f)n=x^2+y^2d=y*x因式分解与展开factor(S)

对S分解因式,S是符号表达式或符号矩阵。expand(S)

对S进行展开,S是符号表达式或符号矩阵。collect(S)

对S合并同类项,S是符号表达式或符号矩阵。collect(S,v)

对S按变量v合并同类项,S是符号表达式或符号矩阵例1:对表达式f=x9-1进行因式分解。symsxf=factor(x^9-1)例2:对大整数12345678901234567890进行因式分解factor(sym('12345678901234567890'))表达式展开:expand(S)例

展开表达式f=(x+1)5和f=sin(x+y)symsxyf=(x+1)^5;expand(f)f=sin(x+y);expand(f)符号表达式的同类项合并:collect(S,n)

将符号表达式中自变量的同次幂项的系数合并。例:对于表达式f=x(x(x-6)+12)t,分别将自变量x和t的同类项合并。symsxtf=x*(x*(x-6)+12)*t;collect(f)collect(f,t)符号表达式化简simplify(S):应用函数规则对S进行化简。simple(S):调用MATLAB的其他函数对表达式进行综合化简,选择在结果表达式中含有最少字符的那种形式,并显示化简过程。[r,how]=simple(S)函数可寻找符号表达式S的最简型,r为返回的简化形式,how为化简过程中使用的主要方法,simple函数综合使用了下列化简方法:simplify函数对表达式进行化简radsimp函数对含根式(surd)的表达式进行化简combine函数对表达式中以求和、乘积、幂运算等形式出现的项进行合并collect合并同类项factor函数实现因式分解convert函数完成表达式形式的转换例1:对表达式f=sin2(x)+cos2(x)进行化简.symsxf=sin(x)^2+cos(x)^2;simplify(f)例2观察最简表达式的获得symsxtf=cos(x)^2-sin(x)^2;simple(f)[r,how]=simple(f)r=cos(2*x)how=combine(trig)符号表达式与数值表达式之间的转换Sym:可以将数值表达式变换成它的符号表达式。eval:可以将符号表达式变换成数值表达式。例sym(1.5)sym(3.14)a=‘(1+sqrt(5))/2’eval(‘234/5’)符号表达式中变量的确定findsym:可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:findsym(S,n)函数返回符号表达式S中的n个符号变量,若没有指定n,则返回S中的全部符号变量。例symsxayzb;s1=3*x+y;s2=a*y+b;findsym(s1)findsym(s2,2)findsym(5*x+2)c=sym(‘3’)findsym(a*x+b*y+c)在求函数的极限、导数和积分时,如果用户没有明确指定自变量,MATLAB将按缺省原则确定主变量并对其进行相应微积分运算。可用findsym(S,1)查找系统的缺省变量,事实上MATLAB按离字符‘x’最近原则确定缺省变量。例symsabyzwfindsym(a*y+b*w,1)findsym(a*z+b*w,1)findsym(a*5+b,1)符号矩阵符号矩阵也是一种符号表达式前述符号表达式运算的函数分别作用于矩阵的每一个元素例:创建一个循环矩阵。symsabcdn=[abcd;bcda;cdab;dabc]n=[a,b,c,d][b,c,d,a][c,d,a,b][d,a,b,c]注意:符号矩阵的每一行的两端都有方括号,这是与matlab数值矩阵的一个重要区别。

例:将3阶Hilbert矩阵转换为符号矩阵。h=hilb(3)h1=sym(h)h=1.00000.50000.33330.50000.33330.25000.33330.25000.2000h1=[1,1/2,1/3][1/2,1/3,1/4][1/3,1/4,1/5]应用于数值矩阵的函数diag,triu,tril,inv,det,rank,eig也可直接应用于符号矩阵专用于符号矩阵的函数transpose(S)返回S矩阵的转置矩阵。A=sym(‘[sin(x),cos(x);acos(x),asin(x)]’)B=transpose(A)D=det(A)E=inv(A)主要内容符号计算基础符号函数及其应用符号积分级数符号方程求解其他常用命令符号函数求极限符号函数求极限limit(f,x,a)计算符号表达式f在x→a条件下的极限;limit(f,a)计算符号表达式f中由默认自变量趋向于a条件下的极限;limit(f)计算符号表达式f在默认自变量趋向于0条件下的极限;limit(f,x,a,‘right’)和limit(f,x,a,’left’)计算符号表达式f在x→a条件下的右极限和左极限。例求极限symsamx;f=(x^(1/m)-a^(1/m))/(x-a);limit(f,x,a)%求极限(1)f=(sin(a+x)-sin(a-x))/x;limit(f)%求极限(2)f=x*(sqrt(x^2+1)-x);limit(f,x,inf,'left')%求极限(3)f=(sqrt(x)-sqrt(a)-sqrt(x-a))/sqrt(x*x-a*a);limit(f,x,a,'right')%求极限(4)符号函数求导符号函数求导及其应用MATLAB中求导的函数为:diff(f,x,n)求函数f对变量x的n阶导数。参数x缺省,取默认变量n的缺省值是1例1求函数的导数symsxy;f=sqrt(1+exp(x));diff(f)%求(1)。未指定求导变量和阶数,按缺省规则处理f=x*cos(x);diff(f,x,2)%求(2)。求f对x的二阶导数diff(f,x,3)%求(2)。求f对x的三阶导数例2求函数的导数symsabtxyz;f1=a*cos(t);f2=b*sin(t);diff(f2)/diff(f1)%求(3)。按参数方程求导公式求y对x的导数(diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2))/(diff(f1))^2%求(3)。求y对x的二阶导数f=x*exp(y)/y^2;diff(f,x)%求(4)。z对x的偏导数diff(f,y)%求(4)。z对y的偏导数主要内容符号计算基础符号函数及其应用符号积分级数符号方程求解其他常用命令积分数值计算:近似解符号计算:解析解求不定积分int(f)求符号表达式f对于默认自变量的不定积分;int(f,v)求符号表达式f对于自变量v的不定积分;例

求不定积分。x=sym('x');f=(3-x^2)^3;int(f)%求不定积分(1)f=5*x*t/(1+x^2);int(f,t)%求不定积分(2)g=simple(ans)%调用simple函数对结果化简求定积分int(f,x,a,b):a,b分别表示定积分的上限和下限可以是具体的数,返回一个数值也可以是符号表达式,返回一个符号函数,还可以是无穷(inf),返回一个广义积分例

求定积分x=sym('x');t=sym('t');int(abs(1-x),1,2)%求定积分(1)f=1/(1+x^2);int(f,-inf,inf)%求定积分(2)int(4*x/t,x,2,sin(x))%求定积分(3)f=x^3/(x-1)^10;I=int(f,2,3)%用符号积分的方法求定积分(4)double(I)%将上述符号结果转换为数值积分变换通过积分运算把一个函数f(原函数)变成另一个函数F(像函数),变换过程是其中,二元函数K(x,t)称为变换的核,决定了不同的变换傅立叶(Fourier)变换拉普拉斯(Laplace)变换Z变换变换的目的例:解微分方程,先求解出F,进而在求解出f傅立叶(Fourier)变换当积分变量的核为

傅立叶变换傅立叶逆变换在MATLAB中,进行傅立叶变换的函数是fourier(fx,x,t)求函数f(x)的傅立叶像函数F(t)。ifourier(F(t),t,x)求傅立叶像函数F(t)的原函数f(x)。

求函数y=的傅立叶变换及其逆变换。命令如下:symsxt;y=abs(x);Ft=fourier(y,x,t)%求y的傅立叶变换fx=ifourier(Ft,t,x)%求Ft的傅立叶逆变换拉普拉斯(Laplace)变换当积分变量的核为拉普拉斯变换拉普拉斯逆变换在MATLAB中,进行拉普拉斯变换的函数是laplace(f,x,t)求函数f(x)的拉普拉斯像函数F(t)。ilaplace(F,t,x)求拉普拉斯像函数F(t)的原函数f(x)。例

计算y=x2的拉普拉斯变换及其逆变换.命令如下:x=sym('x');y=x^2;Ft=laplace(y,x,t)%对函数y进行拉普拉斯变换fx=ilaplace(Ft,t,x)%对函数Ft进行拉普拉斯逆变换Z变换当函数f(x)呈现为一个离散的数列f(n)时,z变换Z逆变换对数列f(n)进行z变换的MATLAB函数是:ztrans(fn,n,z)求fn的Z变换像函数F(z)iztrans(Fz,z,n)求Fz的z变换原函数f(n)例求数列fn=e-n的Z变换及其逆变换。命令如下:symsnzfn=exp(-n);Fz=ztrans(fn,n,z)%求fn的Z变换f=iztrans(Fz,z,n)%求Fz的逆Z变换主要内容符号计算基础符号函数及其应用符号积分级数符号方程求解其他常用命令级数求和有穷级数求和:sum无穷级数求和:symsum级数符号求和函数symsum,调用格式为:symsum(a,v,m,n)a表示级数的通项,是一个符号表达式v是求和变量m和n分别为求和的开始项和末项例

求级数之和命令如下:n=sym('n');s1=symsum(1/n^2,n,1,inf)%求s1s2=symsum((-1)^(n+1)/n,1,inf)%求s2。未指定求和变量,缺省为ns3=symsum(n*x^n,n,1,inf)%求s3。此处的求和变量n不能省略。s4=symsum(n^2,1,100)%求s4。计算有限级数的和函数的泰勒级数泰勒级数将一个任意函数表示为一个幂级数实例:通常情况下,取幂级数的前有限项表示该函数,精度已经足够MATLAB中提供了将函数展开为幂级数的函数taylor,其调用格式为:taylor(f,v,n,a)函数f按变量v展开为泰勒级数,展开到第n项(即变量v的第n-1次幂)为止,n默认为6a指定将函数f在自变量v=a处展开,默认值为0函数f(x)=ex

展开成x

的幂级数为:例1求的5阶泰勒级数展开式x=sym('x');f1=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);taylor(f1,x,5)%展开到x的4次幂时应选择n=5例2将在x=1处按5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论