




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学物理建模与计算机辅助设计,专题1:MATLAB语言基础,Page 2,本专题主要内容与参考资料,主要内容 Matlab语言和工作环境介绍 Matlab语言的数据及运算 Matlab语言的符号运算 参考资料 张志涌, Matlab教程, 北京航天航空大学出版社 薛定宇, 高等应用数学问题的Matlab求解, 清华大学出版社 Matlab技术论坛 / Matlab中国论坛 /bbs/ Matlab中文论坛 /index.php Matlab爱好者 /,Page 3,初步体验MATLAB的功能,例1:已知函数,如何求导及高阶导数?,问题:求导过程很繁杂,容易出错,怎么办?,思路: 由分式求导公式,得出, 逐次求导则可以得出,使用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,初步体验MATLAB的功能,计算积分,Page 4,初步体验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 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 9,MATLAB的特点,MATLAB是一种直译式的高级语言 比其它程序设计语言容易 MATLAB的结合性 易用性 + 可靠性 通用性 + 专业性 一般目的的应用 + 高深的科学技术应用 MATLAB丰富多彩 矩阵实验室+科学计算+图象处理+声音处理+Windows编程 功能强大,风格超群,应用于各工程学科的研究领域 MATLAB是美国大学工科生必修的计算机语言之一 C,FORTRAN,ASSEMBLER,MATLAB,Page 10,MATLAB的典型应用,数学计算; 算法开发; 数据采集; 系统建模和仿真; 数据分析和可视化; 科学和工程绘图; 应用软件开发。,Page 11,MATLAB的集成开发环境,命令窗口,历史命令,菜单栏,为提示符,在当前 提示符后输入命令 按Enter后,Matlab 将给出结果.,可调整窗口布局,编辑器,Page 12,MATLAB的常用的命令,ans 预设计算结果变量名,输入后显示上一次 未指定变量名的计算结果 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的变量和常量,变量命名规则 由一个字母开头,后面可以为字母,数字,下划线 区分大小写 AbcABc 变量名长度不超过31个字符,31个字符之后将被忽略 变量的作用域 默认一切变量为局部变量,本M文件内有效 关键字global定义全局变量,可以在多个M文件间有效 Matlab预定义一些常量,Page 15,MATLAB的算术运算,基本算术运算符号 加法 + 减法 - 乘法 * 除法 / 乘方 开方 sqrt 基本算术运算符号的优先级 和sqrt *和/ +和 -,Page 16,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 17,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 18,MATLAB的向量的运算,加减与数加减运算 A+B A-B A+b A-b 加减规则:(1)长度相同;(2)对应元素加减 数加减规则:每个元素都加减同一个数 数乘除运算 A*b A/b 运算规则:每个元素都乘除以同一个数 带点乘除运算 A.*B A./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的矩阵的生成,生成矩阵的四种方式 直接输入小矩阵 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 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 21,MATLAB的矩阵的生成,利用已有矩阵构建新矩阵 B=1 2 3;4 5 6 C=repmat(B,2,3),Page 22,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的矩阵的运算,用左除法和右除法求解线性方程组,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,:) 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 求多项式的根 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 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,%矢量化编程 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.*(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元素的索引值,例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 30,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 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) 将符号矩阵转化为数值矩阵,函数调用格式: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, 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 34,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 35,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 = 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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 舞蹈机构并购合同协议书
- 搭伙合同 协议书怎么写
- 中国吸水稳定剂行业市场前景预测及投资价值评估分析报告
- 2025年长租公寓行业市场分析报告
- 店铺成长规划方案
- 简单安全施工合同协议书
- 万科-项目故事线梳理及场景应用策划标准
- 铝艺栏杆安装合同协议书
- 买车合同签订协议书
- 西洋乐器市场前景预测与跨界营销策略制定与实施手册
- 抖音合伙人合同协议书
- 大学英语四级考试模拟试卷2025年真题模拟测试
- 公司级新员工安全培训课件
- 沪教版(牛津英语)二年级英语下册全册单元试题
- 折弯工艺培训
- 大学生干部竞选学生会干部竞选207
- 小升初英文写作专题训练题100题(含参考范文答案)
- 2025-2030年煤炭贸易产业发展分析及发展趋势与投资前景预测报告
- 农业灌溉系统全掌握-故障排查与维护实战指南
- 中国金融黑灰产治理研究报告 2024
- 行政管理专科公共安全管理试题及答案
评论
0/150
提交评论