收藏 分享(赏)

Matlab应用.ppt

上传人:11xg27ws 文档编号:5865283 上传时间:2019-03-20 格式:PPT 页数:91 大小:1.76MB
下载 相关 举报
Matlab应用.ppt_第1页
第1页 / 共91页
Matlab应用.ppt_第2页
第2页 / 共91页
Matlab应用.ppt_第3页
第3页 / 共91页
Matlab应用.ppt_第4页
第4页 / 共91页
Matlab应用.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

1、,Matlab软件,2/91,2019/3/20,Matlab: Matrix Laboratry 矩阵实验室,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头。,目前,Matlab 已经成为国际上最流行的科学与工程计算的软件工具,是一种具有广泛应用前景的全新的计算机高级编程语言了,有人称它为“第四代”计算机语言。 就影响而言,至今仍然没有一个别的计算软件可与 Matlab 匹敌。,Matlab 的最新版本,2010年, Matlab 7.11(R2010b),第一节 Matlab 介绍,3/91,2019/3/20,1.1 Matlab 的特点与功能,Matl

2、ab 具有很强的数值计算功能,Matlab 以矩阵作为数据操作的基本单位,但无需预先指定 矩阵维数(动态定维),按照 IEEE 的数值计算标准进行计算,提供十分丰富的数值计算函数,方便计算,提高效率,Matlab 命令与数学中的符号、公式非常接近,可读性强, 容易掌握,4/91,2019/3/20,5/91,2019/3/20,Matlab 丰富的工具箱(toolbox),根据专门领域中的特殊需要而设计的各种可选工具箱,6/91,2019/3/20,1.2 Matlab 的集成环境,Matlab 系统的退出,单击 Matlab 主窗口的“关闭”按钮,7/91,2019/3/20,Matlab

3、的工作界面,命令窗口,当前工作目录,当前工作空间,输入命令的历史记录,命令 提示符,8/91,2019/3/20,Matlab命令窗口(command window),在后键入命令,并按下enter键后, Matlab 就会解释执行所输入的命令,并在命令后面给出计算结果。默认的显示结果变量为ans.,command window是Matlab的主要交互窗口,用于:输入命令并显示除图形以外的所有执行结果。,命令 提示符,9/91,2019/3/20, 命令行的输入规则,命令行后以分号(;)结尾,表示不显示运行结果。 命令行后无符号或以逗号(,)结尾,表示显示运行结果,一个命令行可以输入若干条命令

4、,各命令之间以逗号或分号分隔,如果一个命令行很长,需要换行时,要加续行符(三个小黑点),标点符号一定要在英文状态下输入。,若需要在命令行后加注释,注释以%开始。,10/91,2019/3/20,1.3 Matlab帮助,例: help eig,lookfor 按指定的关键词查询与之相关的命令,例: lookfor eig,doc 以网页形式显示指定命令的帮助页,例: doc eig,11/91,2019/3/20,常用操作命令,clc: 清除命令窗口; clf: 清除当前图形; clear: 清除工作空间的变量和函数.,:可以将所用过的指令叫回来重复使用,Ctrl+C:可以用来中止执行中的Ma

5、tlab工作,12/91,2019/3/20,第二节 MATLAB语言基本操作,2.1 变量和赋值,2、变量命名原则:,以字母开头,后面可以跟 字母、数字 和 下划线,长度不超过 19 个字符,变量名 区分字母的 大小 写,MATLAB提供的标准函数名以及命令名必须用小写字母。,1、基本变量:矩阵,13/91,2019/3/20,在MATLAB工作空间中,还驻留几个由系统本身定义的变量。它们有特定的含义,在使用时,应尽量避免对这些变量重新赋值。例如:pi 、i、inf 等等。,3、预定义变量,14/91,2019/3/20,4、变量(矩阵)的建立,(1)直接输入法,A=1 2 3;4 5 6;

6、7 8 0,矩阵用方括号“ ”括起 矩阵同一行中的元素之间用 空格 或 逗号 分隔 矩阵行与行之间用 分号 分开 直接输入法中,分号可以用 回车 代替,或 A=1,2,34,5,67,8,0,例如,15/91,2019/3/20,(2) 利用MATLAB函数建立矩阵,几个产生特殊矩阵的函数: zeros:产生全0矩阵(零矩阵)。 ones:产生全1矩阵(幺矩阵)。 eye:产生单位矩阵。 rand:产生01间均匀分布的随机矩阵。 randn:产生均值为0,方差为1的标准正态随机矩阵。 magic:产生魔方阵 pascal:产生帕斯卡阵,16/91,2019/3/20, 这几个函数的调用格式相似

7、,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:zeros(m) 产生mm零矩阵zeros(m,n) 产生mn零矩阵zeros(size(A) 产生与矩阵A同样大小的零矩阵,size(A) 列出矩阵 A 的行数和列数,17/91,2019/3/20,大矩阵可以由方括号将小矩阵或向量建立。 例: A=1,2,3;4,5,6;7,8,9; B=1:3 C=A;B,(3) 通过矩阵扩展建立矩阵,18/91,2019/3/20,x=logspace(a,b,n) 创建从10a开始,到10b结束,有n个元素的对数分隔行向量.,(4) 创建行向量,直接产生:x=a b c d e f 创建包

8、含指定元素的行向量,利用冒号表达式产生:x=a:h:b 创建从a开始,以h为步长,到b结束的行向量,缺省时h=1,x=linspace(a,b,n) 与a:(b-a)/(n-1):b等价创建从a开始,到b结束,有n个元素的行向量,19/91,2019/3/20,(5)创建列向量,直接产生 例 c=1;2;3;4,产生列向量有两种方法:,说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.,转置产生 例 b=1 2 3 4; c=b,20/91,2019/3/20,矩阵单个元素的提取,利用小括弧和元素所在的位置(下标),A(i, j):矩阵 A 中的第 i 行

9、,第 j 列元素 A(i):矩阵 A 中的第i个元素,它表示矩阵A中从第一列开始从上到下数,接着在从第二列 开始从上到下数,依次下去,直到数到第i个。,5、元素的提取,例: A=1,2,3,4;4,5,6,7;5,7,9,0,b1= A(3,2)b2=A(6),结果: b1= 7b2= 7,21/91,2019/3/20,矩阵多个元素的提取 冒号运算符,A(:) 或 A(:,:) 提取A的所有元素,A(:,k) 提取 A的第 k 列全部元素A(k,:) 提取A的第 k 行全部元素,A(i:j,m:n) 提取 A 的第 i 到第 j 行和第 m 到第 n列交叉线上的元素组成的子矩阵。,A(k:m

10、) 提取A的第 k 到第 m 个元素,A(:,k:m) 提取A的第 k列 到第 m 列元素A(i:j,:) 提取A的第 i 行到第 j 行元素,22/91,2019/3/20,(3)直接使用元素编址序号: x(a b c d) 表示提取向量x的第a、b、c、d个元素构成一个新的向量 x(a) x(b) x(c) x(d).,(2)提取一块元素: x (a :b :c)表示提取向量x的从第a个元素开始,以b为步长,到第c个元素(但不超过c)结束的这些元素,b可以为负数,b缺省时为1.,(1)提取一个元素: x(i)表示提取向量x的第i个元素.,向量元素的提取,23/91,2019/3/20,或,

11、表达式,24/91,2019/3/20,2.2 Matlab常用数学函数,三角函数和双曲函数,复数函数,25/91,2019/3/20,指数函数,其它函数,26/91,2019/3/20,2.3 Matlab运算,1、 算术运算,(1) 基本算术运算,、*(乘)、 (左除)、 /(右除)、(乘方),如:, 2/3 或 3 2,注意:运算是在矩阵意义下进行的,单个数据的算术运算只是矩阵运算的一种特例。,对于矩阵 A/B:AB-1AB:A-1B,两矩阵进行点运算是指它们的对应位置上的元素进行相关运算,要求两矩阵的维数相同。,(2) 点运算,.*、./、.、.,27/91,2019/3/20,(2)

12、关系运算符的运算法则:,2、关系运算,(1)MATLAB提供了6种关系运算符: (大于)、=(大于或等于)、=(等于)、=(不等于)。它们的含义不难理解,但要注意其书写方法与数学中的不等式符号不尽相同。,当两个比较量都是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0。,28/91,2019/3/20,当两个维数相同的矩阵比较时,相同位置上的元素按标量关系运算规则逐个进行。,当参与比较的一个是标量,而另一个是矩阵时,把标量与矩阵的每一个元素按标量关系运算规则逐个比较。,29/91,2019/3/20,3、逻辑运算,(1)MATLAB提供了3种逻辑运算符:&(与)、|(或)和

13、(非)。,(2)逻辑运算符的运算法则:,在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。,当参与逻辑运算的是两个标量a和b,那么, a&b: a,b全为非零时,结果为1,否则为0。 a|b : a,b中只要有一个非零,结果为1。 a: 当a是零时,结果为1;当a非零时,结果为0。,30/91,2019/3/20,当两个维数相同的矩阵做逻辑运算 时,相同位置上的元素按标量关系运算规则逐个进行。,当参与逻辑运算的一个是标量,而另一个是矩阵时,把标量与矩阵的每一个元素按标量关系运算规则逐个进行。,各运算符的优先级,算术 关系 逻辑,31/91,2019/3/20,size(A) 求出

14、矩阵 A 的行数和列数,length(x) 返回向量 X 的长度,1、查看矩阵的大小:,2.4 矩阵的相关操作的函数,2、 矩阵的转置与共轭转置,点与单引号之间不能有空格!,32/91,2019/3/20,例如 A=1 2;2i 3iB=AC=A.,3、 删除矩阵元素,A=1 2 3;4 5 6;7 8 9A(:,2)=结果: A=1 34 67 9,注:如要删除单个元素不能:A(1,2)= ;可用A(4)= 不过剩下的元素将排成一组数,而非矩阵。,A=1 2 3;4 5 6;7 8 9A(4)=结果: A =1 4 7 5 8 3 6 9,33/91,2019/3/20,4、向量和矩阵的范数

15、norm(V)或norm(V,2) 求向量V(或矩阵V )的2范数norm(V,1) 求向量V(或矩阵V)的1范数norm(V,inf) 求向量V(或矩阵V)的范数,5、求方阵A的行列式: det(A),6、求方阵A的逆矩阵: inv(A),7、求矩阵A的迹: trace(A),8、求矩阵A的秩: rank(A),9、求矩阵A的特征值和特征向量: d=eig(A)V,D=eig(A),34/91,2019/3/20,10、矩阵分解 三角分解 :L,U=lu(A)其中:L是由对角线元素全为1的下三角阵经转化而成,U为上三角阵,满足A=LU 正交分解:Q,R=qr(A)其中:Q是正交阵,R为上三角

16、阵,满足A=QR,11、其他常用命令 max(A) 求A各列最大元素 min(A) 求A各列的最小值 mean(A) 求A各列的平均值 sum(A) 求A各列元素之和 prod(A) 求A的各列元素之积 sort(A) 使A各列元素按递增排序,35/91,2019/3/20,median(A) 求A各列的中位元素 std(A) 求A各列的标准差 var(A) 求A各列的方差 find(A) 找出矩阵A中非零元素所在的下标 find(条件) 找出符合条件的元素所在的位置 diag(A) 提取矩阵A 的主对角线上元素,生成一个列向量 diag(A,k) 提取矩阵A第k条对角线的元素 diag(V)

17、 以向量V的元素为主对角线上的元素构造的对角矩阵 diag(V,k) 以向量V的元素为第k条对角线上的元素的构造的对角阵,36/91,2019/3/20,12、向量与多项式,例:建立多项式,p1=2,5,0,4,1,4;,p1=2,5,0,4,1,4;p2=0,1,0,2,0,4;p1+p2p1-p2,求,37/91,2019/3/20,多项式的乘法conv(P1,P2) 求多项式P1和P2的乘积多项式的除法Q,r=deconv(P1,P2) 求P1/P2;其中Q为商式,r为余式。多项式求根roots(P) P是多项式 p(x)的系数向量,该函数返回 p(x)=0 的全部根(含重根,复根)多项

18、式求函数值polyval(P, x) 求多项式 P在某点或某些点的函数值; 若x为一数值,则求多项式P在该点处的值;若x为向量或矩阵,则求多项式P在向量或矩阵中的每个元素处的值,38/91,2019/3/20,第三节 MATLAB程序设计,用 Matlab 语言编写的程序称为 M 文件。,M 文件以 .m 为扩展名。,3.1 M文件,39/91,2019/3/20,M 文件的建立、打开、运行,40/91,2019/3/20,41/91,2019/3/20,function 输出形参列表=函数名(输入形参列表) % 注释说明部分(可选) 函数体语句(必须),第一行为引导行,表示该 M文件是函数文

19、件函数名的命名规则与变量名相同 ( 必须以字母开头 )当输出行参只有一个时,可省略方括号函数必须是一个单独的 M文件函数文件名必须与函数名一致以百分号开始的语句为注释语句,3.2 函数文件,函数文件的结构:由 function 语句引导,42/91,2019/3/20,函数调用,输出实参列表=函数名(输入实参列表),函数调用时,实参的顺序应与函数定义时的形参的顺序一致。,函数文件如下: function s,p=fcircle(r)%circe calculate the area and perimeter of a circle of radii r% r 圆半径; s 圆面积;p 圆周长

20、s=pi*r*r; p=2*pi*r;,例 编写函数文件求半径为r的圆的面积和周长。,以文件名fcircle.m存入c:matlab71work下,,然后在MATLAB命令窗口调用该函数: s,p=fcircle(10),43/91,2019/3/20,程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。,顺序结构,3.3 M文件控制结构,选择结构 是根据给定的条件成立或不成立,分别执行不同的语句。Matlab 用于实现选择结构的语句有 if 语句、switch 语句和try语句 。,选择结构,44/91,2019/3/20,单分支结构,if 条件语句组 e

21、nd,if 条件语句,45/91,2019/3/20,if 条件1语句组1 elseif 条件2语句组2. . elseif 条件m语句组m else语句组 end,多分支结构,46/91,2019/3/20,根据表达式的不同取值,分别执行不同的语句。,switch 表达式case 表达式1语句组1case 表达式2语句组2. .case 表达式m语句组motherwise语句组 end,switch 语句,47/91,2019/3/20,Matlab 首先计算 表达式的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch 结构

22、。,switch 后面的表达式 表达式的值可以是一个标量或字符串。,switch 语句,otherwise 指令可以不出现。,如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch 结构。,48/91,2019/3/20,try 语句,try语句组1 %语句组1若正确则跳出该结构 catch语句组2 end,try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。,49/91,2019/3/20,for 循环变量=初值:步长:终值循环体 end,循环结构,注意:for 循环适合循环次数确

23、定的情况;while循环适合循环次数不确定的情况 while循环容易出现死循环,使用时一定要注意.若出现死循环,则按键盘:Ctrl+C强制结束程序.,while 条件循环体 end,提示:与各种编程语言一样,各种结构之间可以嵌套使用.,50/91,2019/3/20,例 已知y的表达式 ,当n=100时,求y的值。,程序如下:y=0;n=100;for i=1:ny=y+1/i/i;endy,在实际MATLAB编程中,为提高程序的执行速度,常用向量运算来代替循环操作:n=100; i=1:n;f=1./i.2;y=sum(f),51/91,2019/3/20,第四节 MATLAB绘图,52/9

24、1,2019/3/20,1、 法1:plot(x,y),x 是向量, y 是矩阵,若 x 的长度与 y 的行数相等,则将 x 与 y 中的各列相对应,绘制多条平面曲线;否则,若 x 的长度与 y 的列数相等,则将 x 与 y 中的各行相对应,绘制多条平面曲线。此时 x 的长度必须等于 y 的行数或列数。,x, y 都是矩阵,则将 x和 y的对应列组合,绘制多条平面曲线。此时 x, y 必须具有相同的大小。,x, y 都是向量,则以 x 中元素为横坐标, y 中元素为纵坐标作平面曲线。此时 x, y 必须具有相同长度。,4.1 二维图形,53/91,2019/3/20,输入参数都为向量时,x1和

25、y1,, xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。,plot(x1,y1,选项1,xn,yn,选项n),当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数,54/91,2019/3/20,图形的基本属性,help plot 查看,55/91,2019/3/20, x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,b:+,x,y2,g-.*),例:,56/91,2019/3/20,法2、二维曲线的绘制: ezplot,缺省

26、的绘图区间为 -2, 2,缺省的绘图区间为 0, 2,缺省的绘图区间为 -2, 2,57/91,2019/3/20,例:,ezplot 作图,58/91,2019/3/20,4.2 三维曲线 : plot3,绘制一条三维曲线:x=x(t),y=y(t),z=z(t),则:,plot3的用法与 plot 类似,plot3(x,y,z,选项),plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,xn,yn,zn,选项n),绘制多条三维曲线:,三维曲线的简捷绘制: ezplot3,缺省的绘图区间为 0, 2,59/91,2019/3/20,4.3 三维曲面,绘制由函数 z=z(x,y)

27、确定的曲面时,步骤如下:,setp1:,x=a:dx:b;y=c:dy:d; X,Y=meshgrid(x,y);,setp2: 再计算函数z=z(x,y)在各网格点上的值,Z= ;注意此处采用点运算,setp3:,其中,X, Y 是网格划分后得到的网格矩阵,若 x = y, 则可简写为 X,Y= meshgrid(x),mesh(X,Y,Z,C) 或 surf(X,Y,Z,C) 或 其它绘图函数,绘制由矩阵 X,Y,Z 所确定的曲面网格图(或着色的表面图),矩阵 C 用于确定网格颜色,省略时 C=Z。,60/91,2019/3/20,例:“墨西哥帽子”,( a x a, -a y a ),6

28、1/91,2019/3/20,a=8 时的曲面图形, x=-8:0.5:8; y=-8:0.5:8; X,Y=meshgrid(x,y); r=sqrt(X.2+Y.2)+eps; Z=sin(r)./r; subplot(1,2,1), mesh(X,Y,Z) subplot(1,2,2), surf(X,Y,Z),62/91,2019/3/20,mesh 与 surf 的比较,63/91,2019/3/20,三维曲面的简捷绘制: ezmesh、ezsurf,ezmesh(z,a,b,c,d),ezmesh(x,y,z,a,b,c,d),64/91,2019/3/20,标题标注,title(

29、text, 属性1, 属性1的值, 属性2, 属性2的值, .),4.4 辅助操作(适合二维和三维图形),坐标轴标注 xlabel 、ylabel、zlabel,65/91,2019/3/20,添加图例 legend,在指定位置(x,y)处添加文本,text(x,y,string1,string2, .),显示网格,grid on/off 画/不画网格线 grid 在两种状态之间切换,66/91,2019/3/20,将一个绘图窗口分割成 m*n 个子区域,并 按行 从左至右 依次编号 。并指定第p 个为图形的绘图区域。,67/91,2019/3/20,上机练习一,计算一条氨基酸序列的出现频率同

30、时计算多条序列的出现频率,TXT文本格式FASTA格式,68/91,2019/3/20,第五节 MATLAB数值计算功能,1、求解线性方程组 Ax=B 命令:x=ABxA=B 命令: x=B/A对Am*n m=n 正定矩阵 给出唯一解mn 超定矩阵 给出最小二乘解mn 不定矩阵 只能求最多具有m个非零元素的基解,69/91,2019/3/20,2、数据的拟合与插值 多项式最小二乘法拟合 polyfit(X,Y,n):X,Y为原始数据,n为拟合的次数一维插值y0= interp1(X,Y,X0,插值方法):插值方法可取为:nearest 最近点插值 linear 线性插值 spline 3次样条

31、插值(推荐使用) pchip 3次Hermite插值 cubic 同上,70/91,2019/3/20,例:假设已知的数据点来自函数,试根据生成的数据进行插值,得到较光滑的曲线,x=0:0.12:1; y=(x.2-3*x+5).*exp(-5*x).*sin(x); x1=0:0.02:1; y1=interp1(x,y,x1); y2=interp1(x,y,x1,cubic); y3=interp1(x,y,x1,spline); y4=interp1(x,y,x1,nearest); y0=(x1.2-3*x1+5).*exp(-5*x1).*sin(x1); plot(x1,y1,r

32、:,x1,y2,g:,x1,y3,m:,x1,y4,b:,x,y,mo,x1,y0,k),71/91,2019/3/20,interp1默认的linear插值得到的曲线和plot画出来的曲线一样粗糙, 而nearest选项得到的插值效果就更差了。 而采用cubic和spline选项得到的插值更接近与理论值.,72/91,2019/3/20,3、MATLAB中的数值积分命令,(2)quad:采用自适应变步长的辛普森法,格式为quad(fun,a,b,tol) 其中,fun为被积函数,可以是一个fun.m的函数文件名,该函数一般格式为y=fun(x),或用inline函数定义a,b为定积分的上下限

33、,tol为用户指定的误差限,缺省值为10-6,数值求解定积分的命令,(1)trapz:采用梯形法,精度不高,73/91,2019/3/20,(3) quadl:采用Lobbato算法,其精度和速度远高于quad()函数,故在追求高精度数值解时可采用该函数,其调用格式与quad()完全一致推荐使用quadl,早期matlab版本中有基于8阶Newton-Cotes算法的函数quad8,精度和速度均高于quad(),现在已经被quadl替代,74/91,2019/3/20,例 试用quad()和quadl()函数分别求解定积分,法1-1: f=inline(cos(15*x),x);tic,I1=

34、quad(f,0,3*pi/2),toc 结果: I1 = 6.666665694139176e-002Elapsed time is 0.177297 seconds. 可见,这样的计算精度并不高,不是很令人满意,现在设置精度为10-15,看看结果如何,75/91,2019/3/20,法1-2: f=inline(cos(15*x),x);tic,I2=quad(f,0,3*pi/2,1e-15),toc 结果为: Warning: Maximum function count exceeded; singularity likely. In quad at 110 I2 = -4.1198

35、66644515864e-001 Elapsed time is 1.733378 seconds. 可见,当设置精度为10-15时,该方法失效 下面试试quadl,在精度为10-15时,是否会失效,76/91,2019/3/20,法2-1: f=inline(cos(15*x),x);tic,I3=quadl(f,0,3*pi/2,1e-15),toc 结果为: I3 = 6.666666666666668e-002Elapsed time is 0.830788 seconds. 可见,当设置精度为10-15时,quadl并未失效 当设置精度为10-20时,quadl会失效吗,77/91,

36、2019/3/20,法2-2: f=inline(cos(15*x),x);tic,I4=quadl(f,0,3*pi/2,1e-20),toc 结果为: Warning: Maximum function count exceeded; singularity likely.I4 = 0.4803 Elapsed time is 0.578557. 可见,当设置精度为10-20时,quadl失效 其实本题可以用符号工具箱求出更精确的解 法4: syms x;I=vpa(int(cos(15*x),0,3*pi/2),60)结果: I =.666666666666666666666666666

37、666666666666666666666666666666667e-1,78/91,2019/3/20,数值求解二重积分的命令,dblquad(fun,x1,x2,y1,y2,tol) 求被积函数fun在矩形区域x1,x2y1,y2的二重积分;其他参数和quad完全相同,例,f=inline(exp(-x.2/2).*sin(x.2+y),x,y);I=dblquad(f,-2,2,-1,1),遗憾的是,matlab中并没有提供求下面二重积分的函数,79/91,2019/3/20,数值求解三重积分的命令,triplequad(fun,x1,x2,y1,y2,z1.z2.tol,quadl),

38、在The MathWorks网站提供了免费数值求解积分的工具箱NIT,可解决matlab数值求解不了的积分,80/91,2019/3/20,roots(p):多项式的所有零点,p 是多项式系数向量。,fzero(f,x0):求 f=0 在 x0 附近的根, f 可以使用 inline、字符串,但不能是方程或符号表达式!,4、数值求解非线性方程命令, fzero(x3-3*x+1,1) fzero(x3-3*x+1,1,2),ode23:采用二三阶R-K方法ode45:采用四五阶R-K方法,5、数值求解微分方程初值问题命令,81/91,2019/3/20,第六节 MATLAB符号计算功能,1、符

39、号变量、表达式的定义 符号变量的定义 sym(a) sym(a*x+b) %用sym直接定义符号表达式; syms x y z t %用syms函数定义多个符号变量 符号表达式输入 syms x y=f(x)或 sym(f(x),82/91,2019/3/20,2、微积分运算 极限,limit(f,x,x0,right或left或inf) 注:先定义求极限的函数为符号表达式,例 求, syms x limit(x-2)/(x2-4),x,2) 结果为 ans =1/4,83/91,2019/3/20,微分 diff(f,x,n) 求f(x)对变量x的n阶导数值,n缺省为1,例求,的导数及二阶导

40、数,diff(x-1)3/(x+1) diff(x-1)3/(x+1),2),求, int(1/(1+x2),求, int(1/x,1,2),积分 int(f,x,a,b),84/91,2019/3/20,3、方程(组)求解:一般方程(组) v1,v2,vn=solve(eq1,eq2,eqn,v1,v2,vn),求解,x=solve(sin(x)+cos(x) ),t,z=solve(t*x+z*y-1,2*t*x-3*z*y+2,t,z),微分方程(组) 求通解 dsolve(deq1,deqn,v1,vn) 求特解 dsolve(deq1,deqn,y(x0)=y0,Dy(x0)=y1,

41、D2y(x0)=y2,,v1,vn),85/91,2019/3/20,求解,dsolve(Dx=-a*x,x(0)=1),dsolve(Dy)2+y2=1,y(0)=0),dsolve(D3y=-y,y(0)=1,Dy(0)=0,D2y(0)=0),86/91,2019/3/20,第七节 用MATLAB求解规划问题,1、线性规划标准模型:,X,fval=linprog(f,A,b,Aeq,beq,lb,ub,X0,opti),X0为初始点(可省略),opti为控制参数,用于控制 精度,输出形式,算法选择,迭代次数等(可省略),87/91,2019/3/20,例求解线性规划,f=-5,-4,-6

42、; A=1 -1 1;3 2 4;3 2 0; b=20;42;30; lb=zeros(3,1); x,fval=linprog(f,A,b,lb),x =0.000015.00003.0000 fval =-78.0000,88/91,2019/3/20,2、大规模二次规划,X,fval=quadprog(H,f,A,b,Aeq,beq,lb,ub,X0,opti),89/91,2019/3/20,例求解二次规划问题,90/91,2019/3/20,例,H=6 0;0 6; f=-4 4; A=1 1;2 3; b=20;35; lb=0;0; X,fval=quadprog(H,f,A,b,lb,),X =0.66670 fval =-1.3333,91/91,2019/3/20,优化工具箱常用函数及语法,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报