课堂授课专题1:MATLAB语言基础.ppt

上传人:小飞机 文档编号:6345539 上传时间:2023-10-19 格式:PPT 页数:39 大小:1.91MB
返回 下载 相关 举报
课堂授课专题1:MATLAB语言基础.ppt_第1页
第1页 / 共39页
课堂授课专题1:MATLAB语言基础.ppt_第2页
第2页 / 共39页
课堂授课专题1:MATLAB语言基础.ppt_第3页
第3页 / 共39页
课堂授课专题1:MATLAB语言基础.ppt_第4页
第4页 / 共39页
课堂授课专题1:MATLAB语言基础.ppt_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《课堂授课专题1:MATLAB语言基础.ppt》由会员分享,可在线阅读,更多相关《课堂授课专题1:MATLAB语言基础.ppt(39页珍藏版)》请在三一办公上搜索。

1、数学物理建模与计算机辅助设计,专题1:MATLAB语言基础,Page 2,本专题主要内容与参考资料,主要内容Matlab语言和工作环境介绍Matlab语言的数据及运算Matlab语言的符号运算参考资料张志涌,Matlab教程,北京航天航空大学出版社薛定宇,高等应用数学问题的Matlab求解,清华大学出版社Matlab技术论坛Matlab中国论坛Matlab中文论坛Matlab爱好者,Page 3,初步体验MATLAB的功能,例1:已知函数,如何求导及高阶导数?,问题:求导过程很繁杂,容易出错,怎么办?,思路:由分式求导公式,得出,逐次求导则可以得出,使用Matlab的符号运算功能syms xd

2、iff(sin(x)/(x2+4*x+3),4)ans=sin(x)/(x2+4*x+3)+4*cos(x)/(x2+4*x+3)2*(2*x+4)-12*sin(x)/(x2+4*x+3)3*(2*x+4)2+12*sin(x)/(x2+4*x+3)2-24*cos(x)/(x2+4*x+3)4*(2*x+4)3+48*cos(x)/(x2+4*x+3)3*(2*x+4)+24*sin(x)/(x2+4*x+3)5*(2*x+4)4-72*sin(x)/(x2+4*x+3)4*(2*x+4)2+24*sin(x)/(x2+4*x+3)3,初步体验MATLAB的功能,计算积分,Page 4,P

3、age 5,初步体验MATLAB的功能,例2:如何编写一个能求出两个矩阵相乘的计算机通用子程序?,C语言解决方案for(i=0;jn;i+)for(j=0;jm;j+)cij=0;for(k=0;kL;k+)cij=cij+aik*bki;,使用Matlab语言的矩阵运算功能C=A*B,Page 6,初步体验MATLAB的功能,例3:用四种方法描述cos(x)*sin(y)图形,Page 7,初步体验MATLAB的功能,例4:Matlab的强大表现能力,Page 8,MATLAB的发展历程,MATLAB由MATrix和 LABoratory 两词的词头合成。1980年美国的Cleve Mole

4、r博士首先开发MATLAB。初衷是解决“线性代数”课程的矩阵运算问题。最初MATLAB用FORTRAN编写。1984年Moler与其合作者Little和Steve Bangert成立MathWorks公司把MATLAB推向市场。采用C语言编写MATLAB的内核。新增了数据图视功能。版本历程:1993年4.0版本,1997年5.x版本问世,2000年推出6.0版本,2003年推出6.5版本,2004年7月推出的7.0版本,Page 9,MATLAB的特点,MATLAB是一种直译式的高级语言比其它程序设计语言容易MATLAB的结合性易用性+可靠性通用性+专业性一般目的的应用+高深的科学技术应用MA

5、TLAB丰富多彩矩阵实验室+科学计算+图象处理+声音处理+Windows编程功能强大,风格超群,应用于各工程学科的研究领域MATLAB是美国大学工科生必修的计算机语言之一C,FORTRAN,ASSEMBLER,MATLAB,Page 10,MATLAB的典型应用,数学计算;算法开发;数据采集;系统建模和仿真;数据分析和可视化;科学和工程绘图;应用软件开发。,Page 11,MATLAB的集成开发环境,命令窗口,历史命令,菜单栏,为提示符,在当前提示符后输入命令按Enter后,Matlab将给出结果.,可调整窗口布局,编辑器,Page 12,MATLAB的常用的命令,ans 预设计算结果变量名,

6、输入后显示上一次未指定变量名的计算结果whos 变量查询函数,列出在Matlab工作空间中 已经驻留的变量名清单clear 清除所有定义过的变量名clc 清屏type可显示指定文件的全部内容help 显示当前帮助系统中所有主题help显示函数的使用方法,help+函数名,Page 13,MATLAB的数据类型,Matlab数据类型主要包括数值 1 1.2 3.1415926字符串 A a China Hello world!矩阵 单元数组类型结构体类型 根据属性名组织起来的不同类型数据的集合Matlab不要求事先声明要使用的变量Matlab不需要指定变量类型,Page 14,MATLAB的变量

7、和常量,变量命名规则由一个字母开头,后面可以为字母,数字,下划线区分大小写 AbcABc变量名长度不超过31个字符,31个字符之后将被忽略变量的作用域默认一切变量为局部变量,本M文件内有效关键字global定义全局变量,可以在多个M文件间有效Matlab预定义一些常量,Page 15,MATLAB的算术运算,基本算术运算符号加法+减法-乘法*除法/乘方 开方 sqrt基本算术运算符号的优先级和sqrt*和/+和-,Page 16,MATLAB的运算结果的显示,输出控制开关;258*369ans=95202%这里ans指当前计算结果x=258*369;%这里;控制不输出计算结果x=258*369

8、 x=95202%计算结果赋给变量xxx=95202%输出变量x的值,可用于查询变量x的值输出格式控制format 格式x=sqrt(2)x=1.4142format longx,Page 17,MATLAB的向量的生成,向量的生成的三种方式1 直接输入向量a=1 2 3 4 5 6 7 8 9b=1;2;3;4;5;6;7;8;9用空格或逗号生成行向量,用分号生成列向量2 利用冒号表达式基本形式:x=x1:step:xna=1:2:12a=1 3 5 7 9 113 线性等分向量生成 基本格式y=linspace(x1,x2,n)y=linspace(0,100,6)y=0 20 40 60

9、 80 100,Page 18,MATLAB的向量的运算,加减与数加减运算A+BA-BA+bA-b加减规则:(1)长度相同;(2)对应元素加减数加减规则:每个元素都加减同一个数数乘除运算A*bA/b运算规则:每个元素都乘除以同一个数带点乘除运算A.*BA./B运算规则:(1)长度相同;(2)对应元素相乘除点积和叉积运算点积:c=dot(a,b)返回A和B的数量点积,A和B须同维度叉积:c=cross(a,b)返回A和B叉积,A和B维度必须同为3,A=1,2,3;B=3,4,5;C=dot(A,B);D=cross(A,B);,Page 19,MATLAB的矩阵的生成,生成矩阵的四种方式直接输入

10、小矩阵A=1 2 3;4 5 6;7 8 9利用特殊矩阵生成函数生成矩阵,Page 20,MATLAB的矩阵的生成,利用已有矩阵构建新矩阵 矩阵的合并 C1=A B 在水平方向合并矩阵A和B C2=A;B 在竖直方向合并矩阵A和B a=ones(2,3)a=1 1 1 1 1 1 b=zeros(2,3)b=0 0 0 0 0 0,c1=a bc1=1 1 1 0 0 0 1 1 1 0 0 0,c2=a;bc2=1 1 1 1 1 1 0 0 0 0 0 0,Page 21,MATLAB的矩阵的生成,利用已有矩阵构建新矩阵B=1 2 3;4 5 6C=repmat(B,2,3),Page 2

11、2,MATLAB的矩阵的运算,矩阵的四则运算矩阵加减运算+-规则:矩阵同阶(维数相同,各维度长度对应相同),对应做加减A=1 2 3;2 3 4;3 4 5;B=1 1 1;2 2 2;3 3 3;C=A+B;矩阵的乘法运算*规则:(1)若A为ij阶,B必须为jk阶时A和B才能相乘(2)E=B,5 5 5;C=A*E;矩阵的除法运算,分为左除和右除/运算规则:(1)左除:X=AB是方程式AX=B的解(2)右除/:X=B/A是方程式XA=B的解通常用矩阵的除法求解方程组的解 A=5 12 8;6 5 8;9 6 10;B=7;11;7;X=AB;,MATLAB的矩阵的运算,用左除法和右除法求解线

12、性方程组,Page 23,Page 24,MATLAB的矩阵的运算,矩阵的逆运算inv(A)规则:矩阵为方阵,且行列式不为0 A=2 1-3-1;3 1 0 7;-1 2 4-2;1 0-1 5;B=inv(A);矩阵的行列式运算det(A)规则:矩阵为方阵C=det(A);矩阵的幂运算An 和 A.n规则:(1)An中A必须为方阵,相当于n个方阵A连乘(2)A.n中A不必为方阵,结果为A中各元素取n次幂 D=1,2,3;4,5,6;7,8,9;E=D3;F=D.3;,Page 25,MATLAB的矩阵元素的定位和获取,取出矩阵中某一个元素a(i,j)取出矩阵某几行(列)元素a(x1:x2,:

13、)a(:,y1:y2)a(x1:x2,y1:y2)矩阵对角元素抽取diag(m)diag(m,k)diag(v,k)上三角矩阵和下三角矩阵抽取tril(m)tril(m,k)triu(m)triu(m,k),Page 26,MATLAB的多项式运算,多项式的表示p(x)=x3-5x2+6x-33 p=1-5 6-33 p=1-5 6-33;A=poly2sym(p)A=x3-5*x2+6*x-33求多项式的根rootsroots(p)ans=5.0939-0.0470+2.5448i-0.0470-2.5448i求多项式的乘除 conv(乘法)deconv(除法)p=1 2 3;q=4 5 6

14、 7;pq=conv(p,q);deconv(pq,q);pq=4 13 28 34 32 21 ans=1 2 3求多项式的导数 polyderDpq=polyder(pq)Dpq=20 52 84 68 32,Page 27,MATLAB的矢量化处理,何为“矢量化”?问题尽量使用矩阵表述避免出现太多(两重或以上)的循环嵌套矢量化技术的目的在于改善程序的性能例1:将200400矩阵data中大于0的元素清零例2:上万个点的计算,for i=1:200 for j=1:400 if data(i,j)0 data(i,j)=0;end end end,cputime=0.0470,%矢量化编程

15、data(data 0)=0;,cputime=0.0160,i=0;for t=0:.01:10000 i=i+1;y(i)=sin(t);end,%矢量化编程t=0:.01:10000;y=sin(t);,cputime20秒,cputime=0.2340秒,Page 28,MATLAB的矢量化处理,使用向量作索引X 和 V 都为向量,X(V)X(V(1),X(V(2),.,X(V(n)X=2 5 8 11 14 17 20 23 26 29;V=4 2 6;X(V)ans=11 5 17 X(4)X(2)X(6)x=linspace(0,2*pi,1000);y=sin(x);z=y.*

16、(1.0*(y0.5)-1.0*(yz1=z;z1(abs(z)0.5)=1.0;plot(x,y,r.,x,z,b.-,x,z1,g-)从向量构建矩阵A=10;A=A(ones(5,5);M=repmat(1:5,1,3);,A=10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10,M=1 1 1 2 2 2 3 3 3 4 4 4 5 5 5,Page 29,MATLAB的矢量化处理,排序、设置和计数max 最大元素 min 最小元素 sort 递增排序 find 查找非零、非NaN元素的索引值

17、,例1:找出向量中最大元,返回其下标a=5 2 7 89 12 7 525 78;Y,I=max(a)Y=525I=7,例2:向量元素排序a=5 2 7 89 12 7 525 78;sort(a)ans=2 5 7 7 12 78 89 525,Page 30,MATLAB的符号计算功能,符号运算与数值运算的区别数值运算必须先对变量赋值,再运算符号运算运算结果以标准的符号形式(公式)表达符号运算的特点运算对象可以是没赋值的符号变量可以获得任意精度的解,%浮点算数运算1/2+1/3ans=0.8333,%符号运算sym(1/2+1/3)ans=5/6vpa(1/2+1/3,20)ans=.83

18、333333333333333333,Page 31,MATLAB的符号计算功能,符号变量与符号表达式符号变量定义:syms a b c sym(a)sym(b)符号表达式定义:syms x y z;f1=x*y/z;f1=sym(x*y/z),Page 32,MATLAB的符号计算功能,符号矩阵的创建:用Matlab函数sym创建矩阵命令格式:A=sym()A=sym(a,2*b;3*a,0)A=a,2*b 3*a,0符号矩阵的修改和转换符号矩阵的修改:用A1=subs(A,new,old)来修改符号矩阵与数值矩阵的转换将数值矩阵转化为符号矩阵,函数调用格式:sym(A)将符号矩阵转化为数值

19、矩阵,函数调用格式:double(A)A=1/3,2.5;1/0.7,2/5 A=0.3333 2.5000 1.4286 0.4000,例:A2=subs(A1,c,b)A2=a,2*c 3*a,4*c,sym(A)ans=1/3,5/2 10/7,2/5,double(A)ans=0.3333 2.5000 1.4286 0.4000,Page 33,MATLAB的符号计算功能,符号矩阵的运算7.0以后版本对符号表达式直接用+-*/进行相应运算符号运算函数inv逆矩阵transpose矩阵的转置simple符号矩阵简化simplify符号简化运算,f=sym(a,b;c,d)f=a,b c

20、,d,g=sym(2*a,c;b,3*d)g=2*a,c b,3*d,f*gans=2*a2+b2,a*c+3*b*d 2*a*c+b*d,c2+3*d2,f.*gans=2*a2,c*b c*b,3*d2,f=sym(cos(x)+sin(x);g=sym(cos(x)-sin(x);h=f*gh=(cos(x)+sin(x)*(cos(x)-sin(x)simplify(h)ans=2*cos(x)2-1 simple(h)ans=cos(2*x),Page 34,MATLAB的符号计算功能,符号微积分diff(f)对缺省变量x求微分diff(f,v)对指定变量v求微分diff(f,v,n

21、)对指定变量v求n阶微分int(f)对f表达式的缺省变量x求积分int(f,v)对f表达式的v变量求积分int(f,v,a,b)对f表达式的v变量在(a,b)区间求定积分,F=int(int(x*exp(-x*y),x),y)F=1/y*exp(-x*y),F=diff(sym(x3+3*x2*y+5*x*y2),x,2)F=6*x+6*y,Page 35,MATLAB的符号计算功能,符号代数方程求解 solve解一般的线性方程、非线性方程、代数方程和代数方程组当方程组不存在符号解且无其他自由参数,则给出数值解,例1:f=ax2+bx+c 求解f=a*x2+b*x+c;solve(f)%对缺省

22、变量x求解ans=1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)solve(f,b)%对指定变量b求解ans=-(a*x2+c)/x,例2:符号方程tan(2*x)=sin(x)求解f1=solve(tan(2*x)=sin(x)f1=pi 0atan(1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(-1/2*(-2*3(1/2)(1/2),1/2+1/2*3(1/2)atan(1/2*2(1/2)*3(1/4)/(1/2-1/2*3(1/2)+pi-atan(1/2*2(1/2)*3(1/4)/(1/2-1/

23、2*3(1/2)-pidouble(f1)ans=3.1416 0 0.8314i-0.8314i 1.9455-1.9455,例3:解方程组x+y+z=1;x-y+z=2;2x-y-z=1;g1=x+y+z=1;g2=x-y+z=2;g3=2*x-y-z=1;f=solve(g1,g2,g3)f=x:1x1 sym y:1x1 sym z:1x1 symf.x,f.y,f.zans=2/3,-1/2,5/6,Page 36,MATLAB的符号计算功能,符号微分方程求解 dsolve(f,g)f微分方程,可多至12个微分方程的求解;g为初始条件微分方程的各阶导数项以大写字母D表示Dy(y的一阶

24、导数)D2y(y的二阶导数)r=dsolve(eq1,eq2,.,cond1,cond2,.,v)返回微分方程的解,例1:一阶微分方程dsolve(Dx=y,Dy=-x,x(0)=0,y(0)=1)ans=x(t)=sin(t),y(t)=cos(t),例2:二阶 微分方程dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)ans=cos(a*x),例3:求下面方程的解,y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)y=exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y)%方程解y(t)的时间曲线图,Page 37,本专题小结,初步体验MATLAB的功能MATLAB的发展历程MATLAB的特点MATLAB的应用范围MATLAB的集成开发环境MATLAB的常用的命令MATLAB的数据类型MATLAB的变量和常量,MATLAB的算术运算MATLAB的运算结果的显示MATLAB的向量MATLAB的矩阵MATLAB的多项式MATLAB的矢量化处理MATLAB的符号计算,作业,1.用matlab计算积分,Page 38,作业,2.用左除法和右除法以及用矩阵逆运算的方法求解线性方程组,Page 39,3.生成一个100100的随机矩阵,并将矩阵元素大于0.5的元素清零。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号