课堂授课专题1:MATLAB语言基础ppt课件_第1页
课堂授课专题1:MATLAB语言基础ppt课件_第2页
课堂授课专题1:MATLAB语言基础ppt课件_第3页
课堂授课专题1:MATLAB语言基础ppt课件_第4页
课堂授课专题1:MATLAB语言基础ppt课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

数学物理建模与计算机辅助设计,专题1:MATLAB语言基础,Page2,本专题主要内容与参考资料,主要内容Matlab语言和工作环境介绍Matlab语言的数据及运算Matlab语言的符号运算参考资料张志涌,Matlab教程,北京航天航空大学出版社薛定宇,高等应用数学问题的Matlab求解,清华大学出版社Matlab技术论坛,Page3,初步体验MATLAB的功能,例1:已知函数,如何求导及高阶导数?,问题:求导过程很繁杂,容易出错,怎么办?,思路:由分式求导公式,得出,逐次求导则可以得出,使用Matlab的符号运算功能symsxdiff(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,Page4,初步体验MATLAB的功能,例2:如何编写一个能求出两个矩阵相乘的计算机通用子程序?,C语言解决方案for(i=0;jn;i+)for(j=0;jC=A*B,Page5,初步体验MATLAB的功能,例3:用四种方法描述cos(x)*sin(y)图形,Page6,初步体验MATLAB的功能,例4:Matlab的强大表现能力,Page7,MATLAB的发展历程,MATLAB由MATrix和LABoratory两词的词头合成。1980年美国的CleveMoler博士首先开发MATLAB。初衷是解决“线性代数”课程的矩阵运算问题。最初MATLAB用FORTRAN编写。1984年Moler与其合作者Little和SteveBangert成立MathWorks公司把MATLAB推向市场。采用C语言编写MATLAB的内核。新增了数据图视功能。版本历程:1993年4.0版本,1997年5.x版本问世,2000年推出6.0版本,2003年推出6.5版本,2004年7月推出的7.0版本,Page8,MATLAB的特点,MATLAB是一种直译式的高级语言比其它程序设计语言容易MATLAB的结合性易用性+可靠性通用性+专业性一般目的的应用+高深的科学技术应用MATLAB丰富多彩矩阵实验室+科学计算+图象处理+声音处理+Windows编程功能强大,风格超群,应用于各工程学科的研究领域MATLAB是美国大学工科生必修的计算机语言之一C,FORTRAN,ASSEMBLER,MATLAB,Page9,MATLAB的典型应用,数学计算;算法开发;数据采集;系统建模和仿真;数据分析和可视化;科学和工程绘图;应用软件开发。,Page10,MATLAB的集成开发环境,命令窗口,历史命令,菜单栏,为提示符,在当前提示符后输入命令按Enter后,Matlab将给出结果.,可调整窗口布局,编辑器,Page11,MATLAB的常用的命令,ans预设计算结果变量名,输入后显示上一次未指定变量名的计算结果whos变量查询函数,列出在Matlab工作空间中已经驻留的变量名清单clear清除所有定义过的变量名clc清屏type可显示指定文件的全部内容help显示当前帮助系统中所有主题help显示函数的使用方法,help+函数名,Page12,MATLAB的数据类型,Matlab数据类型主要包括数值11.23.1415926字符串AaChinaHelloworld!矩阵单元数组类型结构体类型根据属性名组织起来的不同类型数据的集合Matlab不要求事先声明要使用的变量Matlab不需要指定变量类型,Page13,MATLAB的变量和常量,变量命名规则由一个字母开头,后面可以为字母,数字,下划线区分大小写AbcABc变量名长度不超过31个字符,31个字符之后将被忽略变量的作用域默认一切变量为局部变量,本M文件内有效关键字global定义全局变量,可以在多个M文件间有效Matlab预定义一些常量,Page14,MATLAB的算术运算,基本算术运算符号加法+减法-乘法*除法/乘方开方sqrt基本算术运算符号的优先级和sqrt*和/+和-,Page15,MATLAB的运算结果的显示,输出控制开关;258*369ans=95202%这里ans指当前计算结果x=258*369;%这里;控制不输出计算结果x=258*369x=95202%计算结果赋给变量xxx=95202%输出变量x的值,可用于查询变量x的值输出格式控制format格式x=sqrt(2)x=1.4142formatlongxx=1.41421356237310,Page16,MATLAB的向量的生成,向量的生成的三种方式1直接输入向量a=123456789b=1;2;3;4;5;6;7;8;9用空格或逗号生成行向量,用分号生成列向量2利用冒号表达式基本形式:x=x1:step:xna=1:2:12a=13579113线性等分向量生成基本格式y=linspace(x1,x2,n)y=linspace(0,100,6)y=020406080100,Page17,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);,Page18,MATLAB的矩阵的生成,生成矩阵的四种方式直接输入小矩阵A=123;456;789利用特殊矩阵生成函数生成矩阵,Page19,MATLAB的矩阵的生成,利用已有矩阵构建新矩阵矩阵的合并C1=AB在水平方向合并矩阵A和BC2=A;B在竖直方向合并矩阵A和Ba=ones(2,3)a=111111b=zeros(2,3)b=000000,c1=abc1=111000111000,c2=a;bc2=111111000000,Page20,MATLAB的矩阵的生成,利用已有矩阵构建新矩阵B=123;456C=repmat(B,2,3),Page21,MATLAB的矩阵的运算,矩阵的四则运算矩阵加减运算+-规则:矩阵同阶(维数相同,各维度长度对应相同),对应做加减A=123;234;345;B=111;222;333;C=A+B;矩阵的乘法运算*规则:(1)若A为ij阶,B必须为jk阶时A和B才能相乘(2)E=B,555;C=A*E;矩阵的除法运算,分为左除和右除/运算规则:(1)左除:X=AB是方程式AX=B的解(2)右除/:X=B/A是方程式XA=B的解通常用矩阵的除法求解方程组的解A=5128;658;9610;B=7;11;7;X=AB;,Page22,MATLAB的矩阵的运算,矩阵的逆运算inv(A)规则:矩阵为方阵,且行列式不为0A=21-3-1;3107;-124-2;10-15;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;,Page23,MATLAB的矩阵元素的定位和获取,取出矩阵中某一个元素a(i,j)取出矩阵某几行(列)元素a(x1:x2,:)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),Page24,MATLAB的多项式运算,多项式的表示p(x)=x3-5x2+6x-33p=1-56-33p=1-56-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=123;q=4567;pq=conv(p,q);deconv(pq,q);pq=41328343221ans=123求多项式的导数polyderDpq=polyder(pq)Dpq=2052846832,Page25,MATLAB的矢量化处理,何为“矢量化”?问题尽量使用矩阵表述避免出现太多(两重或以上)的循环嵌套矢量化技术的目的在于改善程序的性能例1:将200400矩阵data中大于0的元素清零例2:上万个点的计算,fori=1:200forj=1:400ifdata(i,j)0data(i,j)=0;endendend,cputime=0.0470,%矢量化编程data(data0)=0;,cputime=0.0160,i=0;fort=0:.01:10000i=i+1;y(i)=sin(t);end,%矢量化编程t=0:.01:10000;y=sin(t);,cputime20秒,cputime=0.2340秒,Page26,MATLAB的矢量化处理,使用向量作索引X和V都为向量,X(V)X(V(1),X(V(2),.,X(V(n)X=25811141720232629;V=426;X(V)ans=11517X(4)X(2)X(6)x=linspace(0,2*pi,1000);y=sin(x);z=y.*(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=10101010101010101010101010101010101010101010101010,M=111222333444555,Page27,MATLAB的矢量化处理,排序、设置和计数max最大元素min最小元素sort递增排序find查找非零、非NaN元素的索引值,例1:找出向量中最大元,返回其下标a=5278912752578;Y,I=max(a)Y=525I=7,例2:向量元素排序a=5278912752578;sort(a)ans=2577127889525,Page28,MATLAB的符号计算功能,符号运算与数值运算的区别数值运算必须先对变量赋值,再运算符号运算运算结果以标准的符号形式(公式)表达符号运算的特点运算对象可以是没赋值的符号变量可以获得任意精度的解,%浮点算数运算1/2+1/3ans=0.8333,%符号运算sym(1/2+1/3)ans=5/6vpa(1/2+1/3,20)ans=.83333333333333333333,Page29,MATLAB的符号计算功能,符号变量与符号表达式符号变量定义:symsabcsym(a)sym(b)符号表达式定义:symsxyz;f1=x*y/z;f1=sym(x*y/z),Page30,MATLAB的符号计算功能,符号矩阵的创建:用Matlab函数sym创建矩阵命令格式:A=sym()A=sym(a,2*b;3*a,0)A=a,2*b3*a,0符号矩阵的修改和转换符号矩阵的修改:用A1=subs(A,new,old)来修改符号矩阵与数值矩阵的转换将数值矩阵转化为符号矩阵,函数调用格式:sym(A)将符号矩阵转化为数值矩阵,函数调用格式:double(A)A=1/3,2.5;1/0.7,2/5A=0.33332.50001.42860.4000,例:A2=subs(A1,c,b)A2=a,2*c3*a,4*c,sym(A)ans=1/3,5/210/7,2/5,double(A)ans=0.33332.50001.42860.4000,Page31,MATLAB的符号计算功能,符号矩阵的运算7.0以后版本对符号表达式直接用+-*/进行相应运算以前版本用函数symadd,symsub,symmul,symdiv,sympow做相应的运算符号运算函数inv逆矩阵transpose矩阵的转置simple符号矩阵简化simplify符号简化运算,f=sym(a,b;c,d)f=a,bc,d,g=sym(2*a,c;b,3*d)g=2*a,cb,3*d,f*gans=2*a2+b2,a*c+3*b*d2*a*c+b*d,c2+3*d2,f.*gans=2*a2,c*bc*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-1simple(h)ans=cos(2*x),Page32,MATLAB的符号计算功能,符号微积分diff(f)对缺省变量x求微分diff(f,v)对指定变量v求微分diff(f,v,n)对指定变量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,Page33,MATLAB的符号计算功能,符号代数方程求解solve解一般的线性方程、非线性方程、代数方程和代数方程组当方程组不存在符号解且无其他自由参数,则给出数值解,例1:f=ax2+bx+c求解f=a*x2+b*x+c;solve(f)%对缺省变量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=pi0atan(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/2*3(1/2)-pidouble(f1)ans=3.141600.8314i-0.8314i1.9455-1.9455,例3:解方

温馨提示

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

评论

0/150

提交评论