ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:38.46KB ,
资源ID:8951737      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8951737.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MATLAB教程.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MATLAB教程.docx

1、MATLAB教程2可变精度算术运算因为数值的精度受每次操作所保留的数位的限制,所以数值的任何运算都会引入舍入误差,重复的多次数值运算会造成累积误差。而对符号表达式的运算是非常准确的,因为它们不需要进行数值运算,所以无舍入误差。对符号运算结果用函数eval或numeric,仅在结果转换时会引入舍入误差。MATLAB对数的处理完全依靠计算机的浮点算术运算,显然在内存中进行运算,又快又好,只是浮点运算受到所支持字长的限制,每次操作会引入舍入误差,所以不能产生精确的结果。MATLAB中各个算术运算的相对精度大约是16位。相反,Maple的符号处理能力可以实现任何数位的运算。当缺省的数位增加时,每次计算

2、就需要附加时间和计算机内存。Maple缺省为16位的精度。函数digits返回全局Digits参数的当前值。Maple缺省准确度可以由digits(n)来改变,其中n是所期望的准确度数位。用这种方法增加准确度的副作用是,每个Maple函数随后进行的计算都以新的准确度为准,增加了计算时间。结果的显示不会改变,只有所用的Maple函数的缺省准确度受到影响。另外有一个函数,它可以任何精度实行单个计算,而使全局的Digits参数不变。即:可变精度的算术或函数vpa,它以缺省的精度或任何指定的精度对单个符号表达式进行计算,并以同样的精度来显示结果。 format long % let s see all

3、 the usual digits pi % how about to numeric accuracyans= 3.14159265358979 digits % display the default Digits valueDigits=16 vpa( pi ) % how about to Digits valueans= 3.141592653589793 digits(18) % change the default to 18 digits vpa( pi ) % how about to Digits accuracyans= 3.14159265358979324 vpa(

4、pi ,20) % how about to 20 digitsans= 3.1415926535897932385 vpa( pi ,50) % how about to 50 digitsans= 3.1415926535897932384626433832795028841971693993751 vpa( 2(1/3) ,200) % the cube root of 2 to 200 digitsans=1.2599210498948731647672106072782283505702514647015079800819751121552996765139*396562436255

5、09415431025603561566525939900240406137372284591103042693552469606426166250009774745265654803068671854055将函数vpa作用于符号矩阵,对它的每一个元素进行计算也同样达到所指定的位数。 A=sym( 1/4,log(sqrt(2);exp(1),3/7 )A= 1/4 , log(sqrt(2) exp(1) , 3/7) vpa(A,20) % evaluate to 20 digitsans= .2500000000000000000, .34657359027997265471 2.718

6、2818284590452354, .428571428571428571433线性代数和矩阵 在本节中,我们将介绍符号矩阵和MATLAB提供的工具,它用线性代数求解问题。符号矩阵符号矩阵和向量是数组,其元素为符号表达式,可用函数sym来产生。 A=sym( a, b, c; b, c, a; c, a, b )A= a, b, c b, c, a c, a, b G=sym( cos(t), sin(t);-sin(t),cos(t) )G= cos(t), sin(t) -sin(t), cos(t) 函数sym也可以扩展成定义各元素的公式。注意,只有在这种情况下,i,j分别表示行列的位置

7、;且不影响i,j的缺省值(它代表)。下面的例子建立了33的矩阵,其元素依赖于行和列的位置。 S=sym(3,3, (i+j)+(i-j+s) ) % create a matrix using a formulaS= 2/s, 3/(-1+s), 4/(-2+s) 1/(1+s), 4/s, s/(-1+s) 4/(2+s), 5/(1+s), 6/s S=sym(3, 3, m , n , (m-n)/(m-n-t) ) % use m and n in another formulaS= 0, -1/(-1-t), -2/(-2-t) 1/(1-t), 0, -1/(-1-t) 2/(2-

8、t), 1/(1-t), 0函数sym也可以把数值矩阵转换成符号形式 M=1.1, 1.2, 1.3; 2.1, 2.2, 2.3; 3.1, 3.2, 3.3 % a numeric matrixM= 1.1000 1.2000 1.3000 2.1000 2.2000 2.3000 3.1000 3.2000 3.3000 S=sym(M) % convert to symbolic formS= 11/10, 6/5, 13/10 21/10, 11/5, 23/10 31/10, 16/5, 33/10如果数值矩阵的元素可以指定为小的整数之比,则函数sym将采用有理分式表示。如果元素是

9、无理数,则在符号形式中sym将用符号浮点数表示元素。 E=exp(1) sqrt(2)E= 2.7183 1.4142 sym(E)ans= 3060513257434036*2(-50), 3184525836262886*2(-51)用函数symsize可以得到符号矩阵的大小(行,列数)。函数返回数值或向量,而不是符号表达式。symsize的四种形式说明如下: S=sym( a,b,c;d,e,f ) % create a symbolic matrixS= a,b,c d,e,f d=symsize(S) % return the size of S as the 2-element v

10、ector dd= 2 3 m,n=symsize(S) % return the number of rows in m, and column in nm= 2n= 3 m=symsize(S,1) % return the number of rowsm= 2 n=symsize(S,2) % return the number of columnsn= 3数值数组用N(m,n)形式来访问单个元素,但符号数组元素必须用函数如sym(S,m,n)来获取。若能用相同的句法当然好,但MATLAB符号表达式的表示不方便。在内部,符号数组表示成一个字符串数组;而S(m,n)返回单个字母。所以,符号

11、数组的各个元素,必须由符号函数,如sym,来指定,而不是直接指定。 G=sym( ab,cd;ef,gh ) % create a 2-by-2 symbolic matrixG= ab, cd ef , gh G(1,2) % this is the second character of the first row of Gans= a r=sym(G,1,2) % this is the second expressinon in the first row of Gr= cd记住,在上例中的符号矩阵G,实际是以27字符数组存储在计算机中。第一行为 ab, cd ,所以第二个元素是 a

12、。最后,sym可以用于改变符号数组的一个元素。 sym(G,2,2, pq ) % change the (2,2) element in G from gh to pq ans= ab, cd ef, pq代数运算用函数symadd,symsub,symmul和symdiv,对符号矩阵可以执行许多通用的代数运算,用sympow可计算乘幂,用transpose计算符号矩阵的转置。 G=sym( cos(t),sin(t0;-sin(t0,cos(t) ) % create a symbolic matrixG= cos(t), sin(t) -sin(t), cos(t) symadd(G,

13、t ) % add t to each elementans= cos(t)+t, sin(t)+t -sin(t)+t, cos(t)+t symmul(G,G) % multiply G by G; Synpow(G,2) does the same thingans= cos(t)2-sint(t)2, 2*cos(t)*sin(t) -2*cos(t)* sin(t), cos(t)2-sin(t)2 simple(G) % try to simplifyans= cos(2*t), sin(2*t) -sin(2*t), cos(2*t)下面通过证明G的转置是它的逆来证明G是正交阵。

14、 I=symmul(G,transpose(G) % multiply G by its transposeI= cos(t)2+sin(t)2, 0 0, cos(t)2+sin(t)2 simplify(I) % there appears to be a trig identity hereans= 1, 0 0, 1正如所期望的那样,这是单位阵。线性代数运算用函数inverse和determ,可计算符号矩阵的逆阵以及行列式。 H=sym(hilb(3) % the symbolic form of the numeric 3-by-3 Hilbert matrixH= 1, 1/2,

15、1/3 1/2, 1/3, 1/4 1/3, 1/4, 1/5 determ(H) % dind the determinant of Hans= 1/2160 J=inverse(H) % find the inverse of HJ= 9, -36, 30 -36, 192, -180 30, -180, 180 determ(J) % find the determinant of the inverseans= 2160用函数linsolve求解齐次线性方程;这是等价于基本的MATLAB的逆斜杠算子的符号,linsolve(A,B)对X方阵求解矩阵方程A*X=B。回到以前的硬币问题:黛

16、安娜想去看电影,她从小猪存钱罐倒出硬币并清点,她发现: 10美分的硬币数加上5美分的硬币总数的一半等于25美分的硬币数。 1美分的硬币数比5美分、10美分以及25美分的硬币总数多10。 25美分和10美分的硬币总数等于1美分的硬币数加上1/4的5美分的硬币数 25美分的硬币数和1美分的硬币数比5美分的硬币数加上8倍的10美分的硬币数多1。象上次所做的那样,列出线性方程组,令p,n,d和q分别为1美分,5美分,10美分,和25美分的硬币数重新以p,n,d,q的顺序排列表达式p/2+n/2+d-q=0 p-n-d-q=-10 -p-n/4+d+q=0 p-n-8d+q=1接下来,列出方程系数的符号

17、数组。 A=sym( 1/2,1/2,1,-1;1,-1,-1,-1;-1,-1/4,1,1;1,-1,-8,1 )A= 1/2, 1/2, 1, -1 1, -1, -1, -1 -1, -1/4, 1, 1 1, -1, -8, 1 B=sym( 0;-10;0;-1 ) % Create the symbolic vector BB= 0 -10 0 -1 X=linsolve(A,B) % solve the symbolic system A X=B for xx= 16 8 3 15结果是相同的,黛安娜有16枚1美分的硬币,8枚5美分的硬币,3枚10美分的硬币,15枚25美分的硬币

18、。其他特性symop将其参量串接起来,并计算所得到的表达式。 f= cos(x) % create an expressionf= cos(x) symop( atan( ,f, + ,a, ) , 2 )ans= atan(cos(x)+a)2在用函数symop时,若将数组和标量混合应慎重。例如: M=sym( a b; c d )M= a, b c, d symop(M, + , t )ans= a+t, b c, d+t是把t加到M的对角线上。函数charpoly求解矩阵的特征多项式。 G=sym( 1,1/2;1/3,1/4 ) % create a symbolic matrixG=

19、 1, 1/2 1/3, 1/4 charpoly(G) % find the characteristic polynomial of Gans= x 2-5/4*x+1/12用函数eigensys可以求得符号矩阵的特征根和特征向量 F=sym( 1/2,1/4;1/4,1/2 ) % create a symbolic matrixF= 1/2,1/4 1/4,1/2 eigensys(F) % find the eigenvalues of Fans= 3/4 1/4 V,E=eigensys(F) % find eigenvalues E and eigenvectors vV= -1

20、, 1 1, 1E= 1/4 3/4矩阵的约当(Jordan)标准型是特征值的对角矩阵;转换矩阵的列是特征向量。对于给定的矩阵A, jordan(A)求出非奇异的矩阵V,使得inv(V)*A*V成为约当标准型,函数jordan有两种形式 jordan(F) % find the Jordan form of F ,aboveans= 1/4, 0 0, 3/4 V,J=jordan(F) % find the Jordan form and eigenvectorsV= 1/2, 1/2 -1/2, 1/2J= 1/4, 0 0, 3/4标准形和特征向V的列是某些F可能的特征向量。因为F是非奇

21、异的,F的零空间的基是空矩阵,而列空间的基是单位阵。 F=sym( 1/2,1/4;1/4,1/ 2 ) % recreate F F= 1/2, 1/4 1/4, 1/2 nullspace(F) % the nullspace of F is the empty matrixans= colspace(F) % find the column space of Fans= 1, 0 0, 1用函数singvals可求解矩阵奇异值。 A=sym(magic(3) % Generate a 3-by-3 matrixA= 8, 1, 6 3, 5, 7 4, 9, 2 singvals(A)

22、% find the singular expressionsans= 15.00000000000000 6.928203230275511 3.464101615137752函数jacobian(w,v)可相对于v求解w的雅可比(Jacobia)值。其结果的第(i,j)项是df(i)/dv(j)。注意,当f是标量时,f的雅可比值是f的梯度。 jacobian( u*exp(v) ,sym( u,v )ans= exp(v,u*exp(v)3.10 小结下列各表(表22.2-表22.8)综合了符号数学工具箱的特性:表22.2 符号表达式的运算numeric符号到数值的转换pretty显示悦目

23、的符号输出subs替代子表达式sym建立符号矩阵或表达式symadd符号加法symdiv符号除法symmul符号乘法symop符号运算sympow符号表达式的幂运算symrat有理近似symsub符号减法symvar求符号变量表22.3符号表达式的简化collect合并同类项expand展开factor因式simple求解最简形式simplify简化symsum 和级数表22.4符号多项式charpoly特征多项式horner嵌套多项式表示numden分子或分母的提取poly2sym多项式向量到符号的转换sym2poly符号到多项式向量的转换表22.5符号微积分diff微分int积分jorda

24、n约当标准形taylor泰勒级数展开表22.6符号可变精度算术digits设置可变精度vpa可变精度计算表22.7求解符号方程compose函数的复合dsolve微分方程的求解finverse函数逆linsolve齐次线性方程组的求解solve代数方程的求解表22.8符号线性代数charploy特征多项式determ矩阵行列式的值eigensys特征值和特征向量inverse矩阵逆jordan约当标准形linsolve齐次线性方程组的解transpose矩阵的转置4 MATLAB变量标量,向量,矩阵MATLAB以NM的形式保存了大量的矩阵,其中M是行数,N是列数。一个11矩阵是一个标量;1N矩

25、阵是一个行向量,M1矩阵是一个列向量。矩阵的全部元素可以是实数,也可以是复数;如果用户没有重新定义,那么1可以写作“i”或“j”。方括号“”表示一个矩阵,空格把相邻列元素分开,分号把相邻行分开。例如,考虑如下对变量x的赋值实数量 x = 5复数量 x = 5 + 10j(或者 x = 5 + 10i)行向量 x = 1 2 3(或者x = 1, 2, 3)列向量 x = 1; 2; 333矩阵 x = 1 2 3; 4 5 6; 7 8 9有几点需要说明的地方。矩阵的复数元素不能打空格,比如“-1+2j”可以作为一个矩阵元素,而“-1 + 2j”就不行。还有,“-1+2j”可以正确地解释,然而

26、“-1+j2”就不行。(MATLAB把“j2”解释为一个变量名。你可以写成“-1+j*2”。)4.1 复数运算下面说明了一些重要的复数运算:复数量 x = 3+4jx的实部 real(x) 3x的虚部 imag(x) 4x的幅值 abs(x) 5x的相角 angle(x) 9273.0x的共扼 conj(x) i434.2 生成向量向量可以用“:”命令生成。比如,以增量0.5生成一个从0到10的向量x,下列命令生成了一个121矩阵 x = 0:0.5:10;其他生成向量的命令有“linspace”和“logspace”,前者通过指定第一个值、最后一个值和它们之间的值的个数来生成向量,后者的方法

27、一样,但第一个值和最后一个值之间的项数以对数空间排列。4.3 访问向量元素向量元素可以通过指定行和列来访问。比如在矩阵987;654;321=A中,第一行第三列的元素可以这样访问 本文档的修订版会放置在 6.003 的课程主页上41 x = A(1, 3),结果是3整个第二行这样访问 y = A(2, :),结果是4 5 6其中“:”的意思是“取该栏的所有项”。由第1行、第2行和全部3列组成的A的一个子矩阵这样来生成 z = A(1:2, 1:3),结果是1 2 3; 4 5 65 矩阵运算MATLAB对矩阵的运算包括算术运算,关系运算和逻辑运算。5.1 算术矩阵运算矩阵的基本算术运算(当然标

28、量是矩阵的特殊情况)有:+ 加法,- 减法,* 乘法,/ 右除, 左除, 取幂(幂), 转置如果矩阵大小对于运算不合适,就会出现错误信息。除法定义如下:如果A可逆且矩阵大小合适,则的解是bxA=*bAx=,bAx=*的解是Abx/=。加法和减法涉及的是元素对元素的运算;而乘除法不是。但是MATLAB提供了元素对元素的运算,要在运算符前面加“.”,如下:.* 乘法./ 右除. 左除. 取幂(幂). 转置(不共扼)矩阵乘法和元素对元素乘法的不同可以通过下面的例子看到: A = 1 2; 3 4A =1 23 4 B = A*AB =7 1015 22 C = A.*AC =1 49 165.2 关系运算关系运算定义如下: 小于, 大于,= 大于或等于= = 等于,= 不等于,这些都是元素对元素的运算,它返回一个1和0

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1