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

上传人:gu****n 文档编号:243750741 上传时间:2024-09-30 格式:PPT 页数:35 大小:2.24MB
返回 下载 相关 举报
课堂授课专题1:MATLAB语言基础_第1页
第1页 / 共35页
课堂授课专题1:MATLAB语言基础_第2页
第2页 / 共35页
课堂授课专题1:MATLAB语言基础_第3页
第3页 / 共35页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,数学物理建模与计算机辅助设计,Page,*,数学物理建模与计算机辅助设计,专题,1,:,MATLAB语言基础,Page,2,本专题主要内容与参考资料,主要内容,Matlab,语言和工作环境介绍,Matlab,语言的数据及运算,Matlab,语言,的符号,运,算,参考资料,张志涌, Matlab,教程,北京航天航空大学出版社,薛定宇,高等应用数学问题的,Matlab,求解,清华大学出版社,Matlab,技术论坛, 由分式求导公式,得出,逐次求导则可以得出,使用,Matlab,的符号运算功能,syms x,diff(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,Page,4,初步体验,MATLAB,的功能,例,2,:如何编写一个能求出两个矩阵相乘的计算机通用子程序?,C,语言解决方案,for(i=0;jn;i+),for(j=0;jm;j+),cij=0;,for(k=0;kC=A*B,Page,5,初步体验,MATLAB,的功能,例,3,:用四种方法描述,cos(x)*sin(y),图形,Page,6,初步体验,MATLAB,的功能,例,4,:,Matlab,的强大表现能力,Page,7,MATLAB,的发展历程,MAT,LAB,由,MAT,rix,和,LAB,oratory,两词的词头合成。,1980,年美国的,Cleve Moler,博士首先开发,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,8,MATLAB,的特点,MATLAB,是一种,直译式,的高级语言,比其它程序设计语言容易,MATLAB,的结合性,易用性,+,可靠性,通用性,+,专业性,一般目的的应用,+,高深的科学技术应用,MATLAB,丰富多彩,矩阵实验室,+,科学计算,+,图象处理,+,声音处理,+Windows,编程,功能强大,风格超群,应用于各工程学科的研究领域,MATLAB,是美国大学工科生必修的计算机语言之一,C,,,FORTRAN,,,ASSEMBLER,,,MATLAB,Page,9,MATLAB,的典型应用,数学计算;,算法开发;,数据采集;,系统建模和仿真;,数据分析和可视化;,科学和工程绘图;,应用软件开发。,Page,10,MATLAB,的集成开发环境,命令窗口,历史命令,菜单栏,为提示符,在当前,提示符后输入命令,按,Enter,后,Matlab,将给出结果,.,可调整窗口布局,编辑器,Page,11,MATLAB,的常用的命令,ans,预设计算结果变量名,输入后显示上一次未指定变量名的计算结果,whos,变量查询函数,列出在,Matlab,工作空间中 已经驻留的变量名清单,clear,清除所有定义过的变量名,clc,清屏,type,可显示指定文件的全部内容,help,显示当前帮助系统中所有主题,help,显示,函数的使用方法,,help+,函数名,Page,12,MATLAB,的数据类型,Matlab,数据类型主要包括,数值,1 1.2 3.1415926,字符串,A a China,Hello world!,矩阵,单元数组类型,结构体类型,根据属性名组织起来的不同类型数据的集合,Matlab,不要求,事先声明要使用的变量,Matlab,不需要,指定变量类型,1 2 3 4,A,abcd,Page,13,MATLAB,的变量和常量,变量命名规则,由一个字母开头,,后面可以为字母,数字,下划线,区分大小写,AbcABc,变量名长度不超过,31,个字符,,,31,个字符之后将被忽略,变量的作用域,默认一切变量为局部变量,,本,M,文件内有效,关键字,global,定义全局变量,可以在多个,M,文件间有效,Matlab,预定义一些常量,常量名,常量值,常量名,常量值,i, j,虚数单位, i,2,=-1,Realmin,最小正浮点数,2,-1022,pi,圆周率,Realmax,最大正浮点数,2,1023,eps,浮点运算相对精度,10,-52,Inf,无穷大,NaN,Not-a-Number,表示不定值,Page,14,MATLAB,的算术运算,基本算术运算符号,加法,+,减法,-,乘法 *,除法,/,乘方,开方,sqrt,基本算术运算符号的优先级,和,sqrt *,和,/ +,和,-,Page,15,MATLAB,的运算结果的显示,输出控制开关,;,258*369,ans=95202%,这里,ans,指当前计算结果,x=258*369;, %,这里,;,控制不输出计算结果,x=258*369,x=95202%,计算结果赋给变量,x,x,x=95202%,输出变量,x,的值,可用于查询变量,x,的值,输出格式控制,format,格式,x=sqrt(2),x = 1.4142,format long,x,x = 1.41421356237310,Page,16,MATLAB,的向量的生成,向量的生成的三种方式,1,直接输入向量,a=1 2 3 4 5 6 7 8 9,b=1,;,2,;,3,;,4,;,5,;,6,;,7,;,8,;,9,用,空格或逗号,生,成,行向量,用,分号,生成,列向量,2,利用冒号表达式基本形式,:x=x1:step:xn,a=1: 2: 12,a=1 3 5 7 9 11,3,线性等分向量生成 基本格式,y=linspace(x1,x2,n),y=linspace(0,100,6),y=0 20 40 60 80 100,Page,17,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,18,MATLAB,的矩阵的生成,生成矩阵的四种方式,直接输入小矩阵,A=1 2 3; 4 5 6; 7 8 9,利用特殊矩阵生成函数生成矩阵,Page,19,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 b,c1 =,1 1 1 0 0 0,1 1 1 0 0 0, c2=a;b,c2 =,1 1 1,1 1 1,0 0 0,0 0 0,Page,20,MATLAB,的矩阵的生成,利用已有矩阵构建新矩阵,B=1 2 3;4 5 6,C=repmat(B,2,3),Page,21,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,为,i,j,阶,,B,必须为,j,k,阶时,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;,Page,22,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,23,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),Page,24,MATLAB,的多项式运算,多项式的表示,p(,x,)=,x,3,-5,x,2,+6,x,-33, p=1 -5 6 -33,p=1 -5 6 -33; A=,poly2sym(p),A = x3-5*x2+6*x-33,求多项式的根,roots,roots(p),ans = 5.0939 -0.0470 + 2.5448i -0.0470 - 2.5448i,求多项式的乘除,conv(,乘法,) deconv(,除法,),p= 1 2 3; q=4 5 6 7; pq=,conv(p,q); deconv(pq,q);,pq=4 13 28 34 32 21 ans=1 2 3,求多项式的导数,polyder,Dpq= polyder(pq),Dpq=20 52 84 68 32,Page,25,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,%,矢量化编程,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,26,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.*(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,27,MATLAB,的矢量化处理,排序、设置和计数,max,最大元素,min,最小元素,sort,递增排序,find,查找非零、非,NaN,元素的索引值,例,1,:找出向量中最大元,返回其下标,a=5 2 7 89 12 7 525 78;,Y,I=max(a),Y = 525,I = 7,例,2,:向量元素排序,a=5 2 7 89 12 7 525 78;,sort(a),ans =2 5 7 7 12 78 89 525,Page,28,MATLAB的符号计算功能,符号运算与数值运算的区别,数值运算,必须先对变量赋值,再运算,符号运算,运算结果以标准的符号形式(公式)表达,符号运算的特点,运算对象可以是,没赋值,的符号变量,可以获得,任意精度,的解,%,浮点算数运算,1/2+1/3,ans = 0.8333,%,符号运算,sym(1/2+1/3),ans = 5/6,vpa(1/2+1/3,20),ans = .83333333333333333333,Page,29,MATLAB的符号计算功能,符号变量与符号表达式,符号变量,定义:,syms a b c,sym(a),sym(b),符号表达式,定义:,syms x y z;,f1=x*y/z;,f1=sym(x*y/z),Page,30,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),将符号矩阵转化为数值矩阵,函数调用格式:,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,31,MATLAB的符号计算功能,符号矩阵的运算,7.0,以后版本对,符号表达式,直接用,+ - * / ,进行相应运算,以前版本用函数,symadd, symsub, symmul, symdiv, sympow,做相应的运算,符号运算函数,inv,逆矩阵,transpose,矩阵的转置,simple,符号矩阵简化,simplify,符号简化运算, f=sym(a,b;c,d),f = a, b, c, d,g=sym(2*a,c;b,3*d),g = 2*a, c, b, 3*d,f*g,ans = 2*a2+b2, a*c+3*b*d, 2*a*c+b*d, c2+3*d2,f.*g,ans = 2*a2, c*b, c*b, 3*d2, f=sym(cos(x)+sin(x);, g=sym(cos(x)-sin(x);, h=f*g,h = (cos(x)+sin(x)*(cos(x)-sin(x), simplify(h),ans = 2*cos(x)2-1, simple(h),ans = cos(2*x),Page,32,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,Page,33,MATLAB的符号计算功能,符号代数方程求解,solve,解一般的,线性方程,、,非线性方程,、,代数方程,和,代数方程组,当方程组不存在符号解且无其他自由参数,则给出数值解,例,1,:,f = ax,2,+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 = pi,0,atan(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)-pi,double(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 sym,f.x, f.y, f.z,ans= 2/3, -1/2, 5/6,Page,34,MATLAB的符号计算功能,符号微分方程求解,dsolve(f, g),f,微分方程,可多至,12,个微分方程的求解;,g,为初始条件,微分方程的各阶导数项以大写字母,D,表示,Dy,(y,的一阶导数,),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,35,本专题小结,初步体验,MATLAB,的功能,MATLAB,的发展历程,MATLAB,的特点,MATLAB,的应用范围,MATLAB,的集成开发环境,MATLAB,的常用的命令,MATLAB,的数据类型,MATLAB,的变量和常量,MATLAB,的算术运算,MATLAB,的运算结果的显示,MATLAB,的向量,MATLAB,的矩阵,MATLAB,的多项式,MATLAB,的矢量化处理,MATLAB,的符号计算,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!