《MATLAB与科学计算》PPT课件.ppt

上传人:za****8 文档编号:16087240 上传时间:2020-09-18 格式:PPT 页数:118 大小:732.50KB
收藏 版权申诉 举报 下载
《MATLAB与科学计算》PPT课件.ppt_第1页
第1页 / 共118页
《MATLAB与科学计算》PPT课件.ppt_第2页
第2页 / 共118页
《MATLAB与科学计算》PPT课件.ppt_第3页
第3页 / 共118页
资源描述:

《《MATLAB与科学计算》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《MATLAB与科学计算》PPT课件.ppt(118页珍藏版)》请在装配图网上搜索。

1、MATLAB与科学计算,一、前言,MATLAB:matrix laboratory的缩写,矩阵实验室的意思。一开始它是一种专门用于矩阵数值计算的软件。自MATLAB4.0版本问世以来,该软件成为最具有吸引力,应用最为广泛的科学计算语言。我们这个课就拿MATLAB6.1版本来讲。(6.x版本大同小异),学习该软件的必要性:目前,MATLAB软件不仅走入企业、公司和科研机构,而且在高等院校也是从大学生到博士生都必须掌握的一项基本技能,是必不可少的计算工具,。 MATLAB功能:数值计算、符号运算和图形处理。,学习它的意义:随着计算机科学和计算软件的发展,数学系学生必须掌握一门好的计算软件。这是我们

2、就业、继续身造或做科研工作所要用到的。是当代大学生必备的一项技能。,其它计算软件:MATHEMATIC(数学分析问题的计算);IDL(航天、控制),FOETRAN、BASIC(科学计算)。可以说一个人掌握了一门计算软件,再学习其它计算软件很容易。,MATLAB桌面平台: (1)主窗口:整个大的窗口(其它几个窗口都包括在其中) (2)命令窗口(command window):为运算提示符,表示MATLAB在准备状态。当在提示符后输入一段运算式并按回车键后,就给出计算结果 (3)历史窗口(command history):保留命令历史记录,这方便于使用者查询。双击历史窗口中的某一行命令,即可在命令

3、窗口中执行该命令。,(4)当前目录窗口(current directory):在当前目录窗口中可显示或改变当前目录,也可以显示当前目录下的文件,并提供搜索功能。 (5)发行说明书窗口(launch pad):用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。 (6)工作间管理窗口(workspace):显示目前内存中所有的MATLAB变量的变量名、数学结构、字节数及其类型。,命令窗口查询帮助:help+函数名,当用户知道函数名字,而不知道其用法时,用help命令可以去了解此函数的用法。 如:help inv,MATLAB标点的含义: (1)分号;区分行以及取消运行显示等

4、。例: A=1,2,3,4与A=1,2;3,4;的区别。 (2) 逗号,区分列及函数参数分隔符等。例:=1,2;3,4 ,B=1,4,3;3,2,1;4,5,6 (3)小括号():指定运算过程的先后次序等。例: x=0.5; y=sin(x)/(2+cos(x) z= sin(x)/2+cos(x) (4)方括号 :矩阵定义标志等。见上。 (5)续行号:例: y=sin(x)/(2+cos(x) 也可写为 y=sin(x) /(2+cos(x),(6)百分号%:注释标记,该行%以后的语句不执行。例 %线性规划程序 %a=0.5; b=sin(x);%正弦函数 (7)等号=:赋值标记。见上。 (

5、8)单引号 :字符串表示符,单引号里面的内容为字符串。单引号一定在英文状态下输入例: a=xingtai college (9)冒号:有多种应用功能,学习过程中注意。如:选取矩阵的所有行、列;矩阵定义,二、数值计算,变量:MATLAB语言不需要对所使用的变量进行事先声明,也不需要指定其类型,它会自动根据所赋予变量的值或所进行的操作来确定变量的类型。如果变量重新赋值将会用新值代替旧值。如: a=1 b=0.5 c=a*b c=3,变量命名的规则: (1)变量名区分大小写; (2)变量名长度不能超过31位; (3)必须以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点。,常量:MATLA

6、B中有些预定义的变量,这些特殊的变量称为常量。常用到的有: i,j: 虚数单位; pi: ; NaN: 表示不定值,比如0/0; inf: 无穷大(infinit),比如1/0。,算术操作符: +、-:加,减;可以通用。 *,, , / :分别为矩阵乘,乘方,左除,右除; .*, . , . , ./ :分别为数组乘,乘方,左除,右除;此时向量的运算不会满足矩阵的运算法则。注意矩阵的加点运算结果。,如: a1=2; a2=1,2,3,4; b2=4,3,2,1; a1+a2 a1-a2 a2-a1 a1*a2 a1./a2 %a1/a2是错误的写法 a1.a2 a2-b2 a2+b2 a2.*

7、b2 %a2*b2是错误的写法 a2./b2 b2./a2 a2.b2,例 已知水的黏度随温度的变化公式为 =0/(1+at+bt2)其中0=1.78510-3, a=0.03368,b=0.000221, 求水在0,20,40,80时的黏度。 程序如下:miu0=1.785e-3; a=0.03368; b=0.000221; t=0:20:80 miu=miu0./(1+a*t+b*t.2) 运行后的结果为 : miu = 0.0018 0.0010 0.0007 0.0005 0.0003,字符串: 字符串的约定 (1)字符串用单引号括起来; (2)字符串的每个每个字符(包括空格)都是字

8、符数组的一个元素. 例 s=xingtai college f=sin(x) 是字符串(char array),向量的生成: (1)直接输入:如a=1,2,5,3 (2) 利用冒号表达式生成:如:b=2:2:10,此时 可省略,步长为1时,步长可省略。第一个数为首元素的值,第2个数为步长或差值,第三个数为尾元素的限值,不能超过这个值。如b=2;2:11等价于b=2:2:10 (3)线性等份向量生成:y=linspace(x1,x2,n),生成n维向量,使得y(1)=x1,y(n)=x2。 如:y=linspace(1,100,6)。,向量的基本运算 (1)向量的加减:用+、-。同维向量才可以加

9、、减。相应元素加减 (2)向量与数可以加、减。用+、-。数与向量的每个元素进行作用。 (3)向量与数可以相乘。用*。 (4)向量与数可以相除。向量/(./)数,数./向量。 (5)两个向量点积。必须是同维向量。 dot(a,b)=sum(a.*b) (6)两个向量叉积。cross(a,b),a,b必须同维并是3维且次序不能颠倒。 (7)混合积。由以上两个函数实现。dot(a,cross(b,c),矩阵的生成: (1)直接输入:如:a=1,3,4;4,3,2. (2)创建M文件输入大矩阵:当矩阵很大时,直接输入显得很笨,出错不易修改.我们可以编写一个M文件,M文件的扩展名必须是m. 例 编写一个

10、名为matrix.m(名字自己随便起)的M文件如下: %matrix.m mat=1,2,3,3;3,4,5,1;3,2,1,4;8,9,7,5 在命令窗口中输入matrix,就会运行该文件.查看矩阵的结构可用size(mat). save w a :把a保存在w的mat数据文件中。 用load调用出来!load w,矩阵运算: (1) +、-、*:加、减、乘运算。 (2)矩阵的除法有两种形式:左除“”和右除/.右除是先计算逆再做乘法;而左除不计算逆直接进行除法运算,这样可避免奇异矩阵无法求逆带来的麻烦. (3)矩阵与常数间的运算:+、-、*运算是数与矩阵的每个元素进行运算,除法运算,只能常数

11、做除数。 (4)矩阵求逆:inv(A)为A的逆(inverse). (5)求转置矩阵:A.,(6)求矩阵的行列式:det(A) ,(determinant是行列式)。 (7)矩阵幂运算:用.如A3,表示A*A*A。 (8)矩阵指数运算:expm(A),A为方阵。 (9)矩阵对数运算:logm(A),A为方阵。 如:a=rand(3); %成生一个3阶随机矩阵 b=expm(a) c=logm(b) (10)矩阵开方:sqrtm(a). (11)求矩阵的秩:rank(a). (12)a的迹:trace(a),如: A=1,2,3,2;3,2,4,1;3,1,5,6;2,5,3,2, b=1;3;

12、2;1,求方程组Ax=b的解.由于rank(A)=rank(B)=4(B为增广矩阵),所以有唯一解,x=Ab,或x=inv(A)*b. 又如: A=361,625,961,1444,1936;1,1,1,1,1, b=1;1,求方程组Ax=b的解.由于rank(A)=rank(B)=2(B为增广矩阵),所以有无穷多个解,MATLAB中用除法解方程组时所得到的解是所有解中范数最小的一个x=Ab。,特殊矩阵的生成: (1)zeros(n):生成 nn阶0矩阵。 (2)zeros(m,n):生成 mn阶0矩阵。 (3)zeros(size(a):生成与a阶数相同的0矩阵。 (4) eye(n):生成

13、 n阶单位矩阵。 (5) eye(m,n):生成 mn阶单位矩阵。 (6) eye(size(a):生成与a阶数相同的单位矩阵。,(7) ones(n):生成 n阶全1矩阵。 (8) ones(m,n):生成 mn阶全1矩阵。 (9) ones(size(a):生成与a阶数相同的全1矩阵。 (10)rand(n):生成 nn阶随机矩阵,其元素值在0和1之间。 (11)rand(m,n):生成 mn阶随机矩阵。 (12)rand:生成一个随机数。 (13)rand(size(a):生成与a阶数相同的随机矩阵。 (14) magic(n):生成n阶魔阵 (15) vander(V)生成以向量V为基

14、础向量的范得蒙矩阵,矩阵的特殊操作: (1)变维操作reshape(a,m,n):把矩阵a变成mn阶矩阵。如 a=1:12,reshape(a,2,6), reshape(a,3,4)。注意变维操作要保证元素个数一致。 例 s=1:12; c=zeros(3,4); c(:)=s(:); %符号“:”表示变维操作,这两个矩阵必须预先定义维数,结果c取的是s的元素。注:c=1 4 7 2 5 8 3 6 9,(2)对角元素抽取diag(a,k)(注:diagonal为对角线的意思):抽取矩阵a的第k条对角线的元素作为向量,k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k

15、条对角线。 diag(a)相当于diag(a,0).例 a=rand(3); v=diag(a) 说明:如果b是一个行向量,则diag(b)为对角矩阵,其对角线元素为b的元素。如:b=1:3,diag(b);如果b是一个对角矩阵,则diag(b)为一个列向量。,(3)tril(a) (注:triangle low):提取矩a的主下三角。 (4)tril(a,k):提取矩a的第k条对角线下面部分。 k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k条对角线。 (5)triu(a,k) (注:triangle up) :提取矩a的第k条对角线上面部分。,逻辑运算符: (1)

16、= =:等于。 (2)=:不等于。 (3):小于。 (4):大于。 (5)=:小于等于。 (6)=:大于等于。 (7)4:6;7:9 x=5 y=x=a 运行结果 y = 0 0 0 0 1 1 1 1 1,逻辑运算的意义是: 与:当运算双方的对应元素值都为非0时,结果为1,否则为0; 或:当运算双方的对应元素值有一非0时,结果为1,否则为0; 非:当运算数组(矩阵)的对应位置上的元素值为0时,结果为1,否则为0。 例: a=1,2;3,2; b=0,1;3,0; d=a 例:x=-pi:0.1:pi;y=sin(x);plot(x,y) asin(x):反正弦函数(anti-sine); c

17、os(x):余弦函数(cosine); acos(x):反余弦函数(anti-cosine); tan(x):正切函数(tangent); atan(x):反正切函数(anti-tangent); cot(x):余切函数(cotangent); acot(x):反余切函数(anti-otangent); sec(x):正割函数(secant); asec(x):反正割函数(anti-secant); csc (x):余割函数(cosecant); acsc (x):反余割函数(anti-osecant); sinh(x):双曲正弦(hyperbolic sine); asinh(x):反双曲正

18、弦(anti-hyperbolic sine); cosh(x):双曲余弦(hyperbolic cosine); acosh(x):反双曲余弦(anti-yperbolic cosine); tanh(x):双曲正切函数(hyperbolic tangent); atanh(x):反双曲正切函数(anti-hyperbolic tangent); coth(x):双曲余切函数(hyperbolic cotangent); acoth(x):反双曲余切函数(anti-hyperbolic cotangent);,exp(x):e指数函数(exponent); log(x):自然对数函数(log

19、arithm); log10(x):以10为底的对数; log2(x):以2为底的对数; sqrt(x):平方根函数(square root); abs(x):求模函数(absolute) inline(f的表达式):自定义函数。函数的自变量为函数中出现的变量。自变量顺序安字母表顺序。 inline(f的表达式,变量1, 变量2, 变量3,):与上面的区别是它安变量表的给出的顺序规定函数的变量 顺序。如: g = inline(sin(2*x*y +z), 表示:g(x,y,z) = sin(2*x*y +z) g = inline(sin(2*x*y +z), x, z,y) 表示:g(x,

20、z,y) = sin(2*x*y +z); g1(1,2,3)与g2(1,2,3)的意义不同。 factorial(n):求n的阶乘。,多项式表示方法: 在MATLAB中多项式p(x)=anxn+an-1xn-1+a0是以向量p=an ,an-1,a0的形式储存的. (1)系数向量直接输入:例输入多项式x3-5x2+6x-33. p=1,-5,6,-33; poly2sym(p) %polynomial多项式,将系数向量表示成符号多项式 (2)矩阵的特征多项式输入:例 a=1,2,3;2,3,4;3,4,5; p=poly(a);%求a的特征多项式系数向量 p1=poly2sym(p); %即

21、为a的特征多项式 (3)由根创建多项式:例 root=-5,-3+4i,-3-4i;%是某个多项式的根 p=poly(root) %求相应的多项式的系数向量 P1=poly2sym(p) %将多项式系数向量表示成符号多项式,多项式运算: (1)求多项式的值:例 p=1,11,55,125; a=1.2 b=1,2;2,3 polyval(p,a) %polynomial value 求多项式在1.2的值 polyvalm(p,b) %多项式在b的值 (2)求多项式的根:例求多项式 2x4-5x3+6x2-x+9=0的所有根. p=2,-5,6,-1,9 roots(p) %得到多项式的根 (3

22、)factor:因式分解。例 syms x factor(x9-1) 结果:ans =(x-1)*(x2+x+1)*(x6+x3+1) 又如: factor(sym(100)%把整数进行素数分解.结果:(2)2*(5)2,(4)expand(s):多项式展开,s可为多项式、多项式向量和矩阵。例 expand(sym(x+1)3) 结果:ans =x3+3*x2+3*x+1 expand(sym(sin(x+y) 结果:ans = sin(x)*cos(y)+cos(x)*sin(y) (5)collect(s):对默认的变量合并同类项。 collect(s,v):对变量v合并同类项。 s可为符

23、号多项式、多项式向量和矩阵 例 collect(sym(x2*y+y*x-x2-2*y*x) collect(sym(x2*y+y*x-x2-2*y*x),x) collect(sym(x2*y+y*x-x2-2*y*x),y),(6)simple(s):符号表达式简化, s可为符号多项式、多项式向量和矩阵。 例 f=simple(sym(sin(x)2+cos(x)2) 结果:f = g=simple(sym(x3+3*x2+3*x+1) 结果:g =(x+1)3,(7)多项式乘除运算分别用conv和deconv: (convolution,deconvolution) 例 p1=2,-5,

24、6,-1,9; p2=3,-90,18; p=conv(p1,p2) %为p1和p2所相应的多项式的乘积多项式的系数向量 p3=deconv(p,p1) %为p2 p4= deconv(p,p2) %为p1 poly2sym(p1); poly2sym(p2); poly2sym(p) poly2sym(p3) poly2sym(p4) %观看这几个多项式,polyfit(x,y,n) 其中x,y为拟合数据,n为拟合多项式的阶数。例 用最小二乘法拟合数据 x: 0.50 1.00 1.50 2.00 2.50 3.00 y: 1.75 2.45 3.81 4.80 8.00 8.60 x=0.

25、5,1,1.5,2,2.5,3 y=1.75,2.45,3.81,4.80,8.00,8.60 a=polyfit(x,y,2) %用2次多项式拟合上组数据,a为拟合多项式的系数向量 x1=0.5:0.05:3 y1=a(1)*x1.2+a(2)*x1+a(3) plot(x1,y1) %画出拟合曲线的图形 hold on %保留上面的图形和坐标,可在该坐标系中继续作图 plot(x,y,*) %用*号的形式画出被拟合的数据图形,求矩阵的特征值(eigenvalue:)和特征向量(eigenvector) 例 a=7,3,-2;3,4,-1;-2,-1,3; x,y=eig(a) %所得结果x

26、为a的特征向量矩阵,y为特征值矩阵 说明:a必须是方阵,此时a*x=x*y,,三、符号运算,MATLAB进行符号运算的主要功能:符号表达式和符号矩阵的基本操作、符号矩阵的基本运算、符号微积分运算、符号线性方程求解、符号微分方程求解、特殊数学符号函数、符号函数图形等。,符号表达式的生成 创建符号函数:如f=log(x) 创建符号方程:如 g=a*x2+b*y2+c=0 创建微分方程:如q=Dy-y=x 或者:f=sym(log(x)、 g=sym(a*x2+b*y2+c=0)、 q=sym(Dy-y=x) 说明:符号函数也可以用另一方法创建(该方法不能创建方程): syms x %用syms可以

27、定义多个变量,变量间用空格分开 f=log(x) w=sin(x)+cos(x),符号与数值之间的转换 (1) Vpa函数:如 digits(25) 设置有效数字的精度为25位有效数字 vpa(pi+1) 显示在上述digits函数设置下的精度的数值 或者vpa(pi+1,25) 注vpa:variable precision arithmetic (2)numeric函数:如 numeric(pi+2),a=1, numeric(a)(把a变为double型,相当于str2num(a) (3)double函数:转sym型为double型 double(sym(2) , a=1, double

28、(a) )(把a变为double型代码) 说明:对sym型数据,上两者作用一样,例 求函数f(x)=x-cos(x)在x=2的值。 解: syms x f=x-cos(x); f1=subs(f,2,x) %字符替代,在 符号函数f中用2代替x f1=subs(f,x,1) %给出f在x=1处的值。 digits(20) vpa(f1) numeric(f1), double(f1) 例 求方程3x2-ex=0的精确解和各种精度的近似解. 解 : s=solve(3*x2-exp(x)=0) vpa(s) %显示32位有效数字 vpa(s,6) 显示6位有效数字 syms x ezplot(3

29、*x2-exp(x) 注:W = LAMBERTW(X) 是w*exp(w) = x的解,符号函数运算 复合函数运算:设z=g(y),y=f(x) compose(g,f) %即为g(f(x),自变量的符号取为f函数的自变量符号。 compose(g,f,t) %即为g(f(x),自变量的符号取t。 反函数运算:finverse 例 syms x;syms y;syms t;%或者syms x y t g=sin(y);f=1/x compose(g,f) compose(g,f,t) finverse(g) finverse(f),符号矩阵创立 使用sym函数直接创建符号矩阵:例 a=sym

30、(1/sin(x),cos(x)2;2*x,1+x2) 或 syms x a=1/sin(x),cos(x)2;2*x,1+x2 用创建子矩阵的办法创建符号矩阵(该方法不推荐):例 a=1/sin(x),cos(x)2;2*x ,1+x2 同列元素的位数必须一样,可用空可空格来补。 例b=a,;1 ,x2 ,将数值矩阵转化为符号矩阵 a=2/3,sqrt(2);0.222,log(3) %a为数值矩阵 b=sym(a) 把a转化为符号矩阵b。 符号矩阵索引和修改 b(2,2) %矩阵的索引,显示矩阵b的第2行第2列元素。,符号矩阵的修改 b(2,2)=log(9) %矩阵的修改, b(2,2)

31、修改为log(9) 。 符号矩阵的运算 (1)、*、/运算 (2)矩阵转置():a (3)行列式运算:det(a) %determinant的简写计算符号矩阵的行列式。 (4)求逆inv(a):求矩阵a的逆。 (5)求矩阵的秩rank(a):求矩阵a的秩。,符号函数极限(只限于sym型函数) limit(f,x,a):求表达式f在xa时的极限。 limit(f):求f在x0时的极限. imit(f,x,a,left):求表达式f在xa时的左极限。 limit(f,x,a,right):求表达式f在xa时的右极限。例:syms x limit(sin(x)/x,x,1) limit(sin(x)

32、/x) limit(1+1/x)x,x,inf) =e f=atan(1/(1-x) y=limit(f,x,1) %没极限 y1=limit(f,x,1,left) y2= limit(f,x,1,right) f=1/x, y1=limit(f,x,0,left) y2=limit(f,x,0,right),符号积分(适于sym型、char型) (1)int(f,x):计算符号表达式f,自由变量为x的不定积分 (2)int(f,x,a,b):计算符号表达式f,自由变量为x,从a到b的定积分 说明:符号表达式可以是符号函数,也可是符号矩阵。 例 syms x int(sin(x),x) in

33、t(sin(x),x,0,1) int(sin(x),x,0,1) 说明:变量省略时默认对ASCII码值大的积分,有x对x积分。 a=sym(1/sin(x),cos(x)2; 2*x,1+x2) int(a,x),符号函数求导(适于sym型和char型 ) (1) diff(f,x) %求表达式f,自由变量为x的导数。说明:diff(a),a为向量时,表示前项与后一项的差。 (2)diff(f,x,n) %求表达式f,自由变量为x的n阶导数。 syms x f=sin(x)2 diff(f,x)变量x省略时默认对x求导diff(f,x,2)x省略时默认对x求导,线性方程组的符号解法(lins

34、olve) 例a=sym(10,-1,0;-1,10,-2;0,-2,10) b=sym(9;7;6) x=linsolve(a,b) %x为线性方程ax=b的解。注:这里a,b也可是double型 ,但得到的x为sym型。 vpa(x) %转化为浮点近似解,32位有效数字。,非线性方程(组)的符号解法 (1)fsolve(f,x0):其中f为被求零点的函数,x0为初值。注:fsolve对sym型函数无效;可用于有函数文件、字符串、和inline定义的函数;类似命令还有:fzero。或用: fsolve(f,x0,foptions) (2)slove(方程1,方程2,).,例、求解下面非线性方

35、程组 x1-0.7sinx1-0.2cosx2=0 x2-0.7cosx10.2sinx2=0 解首先编写函数文件f.m如下 function y=fc(x) y(1)=x(1)-0.7*sin(x(1)-0.2*cos(x(2); y(2)=x(2)-0.7*cos(x(1)+0.2*sin(x(2); y=y(1);y(2); 在命令窗口中输入 x0=0.502,0.51; x0为初始向量 fsolve(fc,x0),作业:分别用solve和fsolve函数求sinx+cosx+x=0的解,并进行验证。 作业:分别用solve和fsolve函数求方程组 x2*y2 - 2*x - 1 =

36、0 x2 - y2 - 1 = 0 的解,并进行验证。 两个函数用法的区别是什么?,方法1 x,y=solve(x2*y2 - 2*x - 1 = 0,x2 - y2 - 1 = 0); 方法2 function y=fc(x) y(1)=x(1)2*x(2)2-2*x(1)-1; y(2)=x(1)2-x(2)2-1; y=y(1),y(2) x0=1.6;1.2 x=fsolve(fc,x0) 方法3 f=x(1)2*x(2)2-2*x(1)-1;x(1)2-x(2)2-1 x0=0.6;0 x=fsolve(f,x0) 方法4 f=inline(x(1)2*x(2)2-2*x(1)-1;

37、x(1)2-x(2)2-1) x0=1.6;1.2 x=fsolve(f,x0),(4)已知 x=x1,x2,xn f=(f1(x);f2(x);fn(x) 试求导数f(x),即f对x的jacobian矩阵。 提示:利用函数:jacobian(f,v),其中v为自变量向量。 例:利用该雅可比函数求下面函数的导数以及在(1,2,3)点的导数值。 F=3x-cos(xy)-0.5;x2-80(y+0.1)2+sinz+1.06;e-xy+20z+1 解syms x,syms y,syms z f=3*x-cos(x*y)-0.5;x2-80*(y+0.1)2+sin(z)+1.06;exp(-x*

38、y)+20*z+1 df=jacobian(f,x,y,z) b=subs(df,x,y,z,1,2,3); b=1;2;3; c=linsolve(a,b);,常微分方程的符号解(dsolve): 字符D代表对独立变量导数d/dt, Dn代表对独立变量的n阶导数。 例 求dy/dt=-ay和dy/dx=x的解 解 dsolve(Dy=-a*y) %得到通解,默认自变量为t。 dsolve(Dy=-a*y,y(0)=1) %给定了初始条件,求特解。方程和 初始条件用逗号分开,都用单引号引起来。 y=dsolve(Dy=x, x);%通解 y=dsolve(Dy=x,x(1)=2,x)特解,符号

39、函数的二维图形 (1)ezplot(f):绘制f(x)的图形, f为sym型、char型、inline型,function函数(此时用f或f)。 x的默认范围为-2,2。 如 ezplot(sin(x) 。 ezplot(f,0,10)可省, fplot(f,0,10)不省,f为char型、inline型 。 (2)ezplot(f,a,b):绘制f(x)的图形,x的范围为a,b。 如 ezplot(sin(x),0,9)。,四、图形处理,图形可视化是数学计算人员所喜欢和追求的一项技术。把结果用图形描述出来,便于理解、分析。,二维绘图命令 (1)plot(y):若y是向量,就以向量的索引 为横

40、坐标,以向量的元素值为纵坐标; (2)plot(x,y):一般来说是绘制向量y的图形, 横坐标为x的值,纵坐标为y的值。 x,y的维 数相同 (3) plot(x,y,.):这里.表示用离散点显示。 (4) plot(x1,y,x2,y2):x1,y1的维数相同, x2,y2的维数相同。,说明:在plot(x,y,s)中图形设置选项s的规定,例 x=-pi:0.1:pi y=sin(x) plot(y) hold on %保留上一个图形 plot(x,y) plot(x,y+1,:r),还有大小、线宽控制:如 plot(1,1,ro,markersize,50) plot(1,1,ro,lin

41、ewidth,49) 例 x=0:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y,-k,x,z,-.r) %分别用虚黑线和点划红线显示两条曲线。,()polar(,r):画出极坐标函数r=r()的图形 例 cita=0:0.1*pi:4*pi; r=cita+sin(cita/2) polar(cita,r) 或 c=0:0.1:6.28; r=ones(size(c);保证c,r同维 polar(c,r) (6)refline(k,b):画平面参考线,k为斜率,b为在y轴的截距,(7)ezplot(f(x):画出f(x)的图形。例 ezplot(sin(x

42、),结果是在-2*pi,2*pi上画出 图形; ezplot(sin(x),-1,3),结果是在-1,3上画出 图形. f(x)可为sym型、char型、inline型和function定义的函数。如:founction f(x);f=x.2-1%这里必须用.*、.;调用:y=ezplot(f)或y=ezplot(f) 。 (8)fplot(f(x),a,b),结果是在-a,b上画出 图形;例fplot(sin(x),-1,3),结果是在-1,3上画出图形. f(x)可为char型、inline型。,三维图形命令 (1)plot3(x,y,z):x,y,z为同维向量时画空间曲线,例画出x=si

43、n(t),y=cos(t), z=t,t0,10的图形。 解:t=0:pi/50:10*pi;z=t;x=sin(t);y=cos(t);plot3(x,y,z,-r);hold on;plot3(x,y,z+1,-r) (2)plot3(x,y,z):当z=f(x,y),(x,y)为xoy平面上的网格节点时,它可以画出空间曲面z=f(x,y) 的图形。 (3)mesh(x,y,z):画出三维网格图。,(4)meshc(x,y,z):画出三维网格与等高线图 (5)meshz(x,y,z):增加边界面屏蔽。 (6) surf(x,y,z) :与mesh函数不同的是把图形着色,surfc与mesh

44、c类似。 例x,y=meshgrid(-2:0.1:2, -2:0.1:2); z=x.2+y.2; plot3(x,y,z); hold on meshc(x,y,z+8); meshc(x,y,z+16); mesh(z)与mesh(x,y,z)的区别类似于plot(x)与plot(x,y)的区别。,网格节点,(7)ezplot3(x(t),y(t),z(t),a,b):为参数在a,b的范围画出x=x(t),y=y(t),z=z(t)对应的三维空间曲线。 例: ezplot3(cos(t),sin(t),t,0,10*pi)。 (8)ezmesh(x(u,v),y(u,v),z(u,v),

45、a,b,c,d):在aub, cvd的范围,画出参数方程x=x(u,v), y=y(u,v), z=z(u,v)的对应的曲面。 (9)ezsurf:ezsurf与ezmesh的区别类似于surf与mesh的区别。 例: ezmesh(r*cos(t),r*sin(t),r2,0,2*pi) 画出抛物面图形。,图形处理技术 (1)坐标轴控制函数axis(v):对二维图形v=a,b,c,d,其中a,b和c,d分别为x轴和y轴的范围;对于三维图形v=a,b,c,d,e,f分别给出x,y和z轴的范围。 (2) 平面坐标网格函数grid on/off:作用是平面图形带有网格和取消网格。 (3)坐标轴标注

46、xlabel(标注),ylabel(标注) (4) 标题标注title(标题) x=-pi:0.1*pi:pi;y=sin(x);plot(x,y) ; v=-16,6,-1,2;axis(v); grid on;%显示网格; xlabel(x-axis); ylabel(y=sinx) title(正弦函数图像),(5)图形保持hold on/off: hold on是启动图形保持功能,在已存在的一张图中添加曲线,hold off 是关闭图形保持功能。 (6)图例标注legend(标注1,标注2,) 例x=0:0.1*pi:2*pi; y=sin(x); z=cos(x); plot(x,y

47、,-*) hold on plot(x,z,-o) plot(x,y+z,-h) legend(y=sinx,z=cosx,y+z=sinx+cosx hold off %关闭图形保持 (7)子图subplot(m,n,p):其功能是把一个图形分成mn个小图形窗口,通过参数p调用各子窗口进行操作。 x=0:0.1*pi:2*pi; y=sin(x); z=cos(x); subplot(2,2,1), plot(x,y,-*) subplot(2,2,2), plot(x,z,-o) subplot(2,2,3), plot(x,y+z,-h) subplot(2,2,4), plot(x,y

48、-z,-x),五、程序设计,MATLAB作为一种高级计算语言,不仅可以做如上所讲的那些工作,还可以像basic ,fortran,c等其它高级计算机语言一样进行程序设计,即编制以m为扩展名的文本文件(简称M文件)。,M文件的形式 (1)命令式(script):命令式文件就是命令行的简单叠加,MATLAB就会自动按顺序执行文件中的命令,这样就可以避免在命令窗口运行许多命令的麻烦和重复行工作,也便于修改。其可在命令窗口直接输入文件名运行,例 %sinfig.m x=-pi:0.1*pi:pi; y=sin(x); plot(x,y); hold on; plot(y,x),函数式(function

49、):他主要解决参数传递和函数调用问题,它的第一句以function语句为引导。不能直接运行,只能调用。 例 f.m 文件名与函数名必须一致 function f(x) f=2*x2+4*x+6 在命令窗口中输入:f(0),f(10)可以看 出结果。,例、建立一个名字为f的函数文件,该 函数为 f=cos2(x) 试计算该函数在x=1:10的函数值, 并给出离散点(x,f(x))的图形。 (大家一起讨论),例、一个函数文件可以定义个函数 function y1,y2,y3 = f(x) y1=sin(x); y2=cos(x); y3=tan(x); (3)数据文件: 用save(文件名,变量1

50、,变量2,) 或 save 文件名变量1变量2变量3创建; 用load(文件名) 或Load 文件名调入到工作 间。,控制语句 (1)循环语句 (a)for循环:例 s=0; for k=1:1:10 %初始值、步长和最大限值 s=s+k; end 循环结束标志 (b)while循环:例 s=0; k=0; while k=-1 end,(d) ifend语句:例 for i=1:10 if i=-1 else,f=0 end 在命令窗口中输入f(1),(3)可以得到结果。,(f)swith 变量 case 1 语句 case 2 语句 otherwise 语句 end,例: for i=1:

51、6 switch i case 1 a=1 case 2 a=2 case 3 a=3 case 4 a=4 otherwise b=0 end end,例 已知n=自己的真实学号,在xoy平面有点 Ai=(i,0) Bi=(i,n) (i=0,1,2,n) 现要画连接AiBj的线段(i,j=0,1, n),试给出其MAT LAB程序。 解 现就学号为6,给出其程序如下:,n=6;x=0:n;y=0:n; for i=1:7 for j=1:7 if i=j plot(x(i)*ones(size(y),y); xlabel(x);ylabel(y);title(AiBj的连线) v=0,n,

52、0,n;axis(v) hold on; else a=min(x(i),x(j); b=max(x(i),x(j); X1=a:0.1*(b-a):b; Y1=-n/(x(i)-x(j)*(X1-x(i);%连接AiBj的直线 plot(X1,Y1); end end end,作业:在上题的基础上,再加上点 Ci=(0,i),Di=(n,i) (i=0,1,2,n) 现要画连接AiBj和CiBj的线段(i,j= 0,1,n),试给出其MAT LAB程序。把运行结果得到的图像,存放到WORD文件,文件名字取为:真实姓名_真实学号,然后发送到信箱:,六、主要命令汇总,1、常用信息 help:在线

53、帮助(显示在命令窗)。 helpwin:在线帮助(独立窗口显示)。 ver:MATLAB及工具箱的版本信息。 2、管理工作区命令 who:显示当前变量。 whos:显示当前变量具体信息。 clear:从内存中清楚变量和函数。 quit:退出MATLAB。,3、管理命令和函数 what:显示当前目录下的MATLAB 文件。 edit:编辑M文件。edit(建立编辑新 文 件);edit文件名(编辑已有 的文件)。 which:找出函数和文件的位置。 type:显示M文件内容。Type+文件 名。 inmem:显示内存中的函数。 4、操作系统命令 dir:显示目录。 pwd:显示当前工作目录。 d

54、elete:删除文件。Delete+文件名。 web:打开页面浏览器加载文件。,5、数据类型 double:双精度类型 sym:符号型 inline:内联对象 char:字符数组或字符串。 uint8:无符号8位整数(unsigned integer) char(sym型变量):把sym型转化为char型 sym (char型变量):把char型转化为sym 型 char(inline型)和inline(char型)可相互转化。 num2str:数字转化成字符串,6、数据基本操作 max:最大元素。向量为数,矩阵为向量 min:最小元素。类似max. mean:求平均值。mean(a),a为向

55、量 时得到向量平均值,结果为一 个数;a为矩阵时,进行每列 平均,得到一个向量。 sum:元素和。 sum(a),a为向量时得 到该向量各元素之和,结果为一 个数;a为矩阵时,进行每列 求和,得到一个向量。 prod:元素积。prod(a)当a为向量和 矩阵时的情况,类似于max(a)。 cumsum:元素累和。cumsum(a),a 可为向量,也可为矩阵。 cumprod:元素累积。a可为向量, 也可为矩阵。,7、基本矩阵函数 zeros:零矩阵函数。 ones:全1矩阵。 eye:单位矩阵。 rand:随机数、向量、矩阵. linspace:线性等分向量。 8、基本数组操作 size:矩阵

56、大小。 length:数组长度。 isempty:判断是不是空矩阵。 isequal: 判断数组是否相等。 isequal(a,b)。 isnumeric:判断是否为数值矩阵。 reshape:矩阵重置。 tril:抽取下三角部分。 triu:抽取上三角部分。 fliplr:左右方向翻转矩阵(flip:翻转)。 flipud:上下方向翻转矩阵。 rot90:逆时针把矩阵旋转90度。 find(x):i,j= find(x)查找x非零元下标。,9、专用变量和常量 ans:最新答案。 pi:圆周率。 i,j:复数单位。 inf:无穷大。 NaN:不定数。 isnan:判断不定数。 isinf:判断

57、无穷大元素。 isfinite:判断有限大元素。 10、指数、对数函数 exp:e指数函数。 pow2:以2为底的幂函数。 sqrt:平方根函数。,11、舍入函数和剩余函数 fix:朝零方向舍入为整数。 floor:朝负方向舍入为整数。 ceil:朝正方向舍入为整数。 round:四舍五入为整数。 sign:符号函数。 mod:无符号求余函数。mod(3,2)=1 rem:带符号求余函数。 12、复数函数 abs:求模。 conj:求共轭函数(conjugate)。 angle:相角函数。 imag:复矩阵虚部。 real:复矩阵实部。 isreal:实矩阵判断函数。,13、矩阵函数 norm

58、:矩阵或向量范数。 normest:向量、矩阵2范数。 rank:矩阵的秩。 det:矩阵行列式的值。 trace:矩阵的迹(主对角线元素之和)。 inv:矩阵逆。 14、特征多项式、特征值 poly:特征多项式。 poly2sym:多项式表示。 eig:特征值和特征向量。 eigs:特征值。,15、矩阵函数 expm:矩阵指数。 logm:矩阵对数。 sqrtm:矩阵平方根。 16、坐标转换 cart2sph:转换直角坐标为球坐标。 cart2pol:转换直角坐标为极坐标。 pol2cart:转换极坐标为直角坐标。 sph2cart:转换球坐标为直角坐标。,17、坐标轴控制 axis:控制坐

59、标轴范围。 grid on/off:栅格线保持、取消。 Grid minor:较小网格。 hold on/off:图形保持/取消。 box on/off:图形四周都显示/常规坐标轴。 axis(控制字符串):可以选择不同的字符串完成对坐标轴的操作。 控制字符串有: (1)auto:自动模式,使得图形的坐标范围满足图中一切图元素。 (2)axis:将当前坐标设置固定,使用hold命令后,图形仍以此作为坐标界限。 (3)manual:以当前的坐标限定绘制。 (4)tight:将坐标限控制在指定的数据范围内。 (5)equal:使坐标轴分度相等。 (6)off:取消对坐标轴的一切设置,包括系统的自动

60、设置。 (7)on:恢复对坐标轴的一切设置。,例1: x,y=meshgrid(0:0.5:10); z=y.*sin(x.2)+cos(y); surf(x,y,z) v=-20,10,-20,10,-10,50;%坐标轴范围控制 axis(v)注意该语句必须在图形显示语句的后面 说明:二维图形是类似的。 例2、 x,y=meshgrid(-1:0.1:1,-1:0.1:1); z=x.2+y.2; surf(x,y,z) box on,17、基本二维图形 plot:线性绘图。 loglog:双对数坐标图。 semilogx:半对数(x)坐标图。 semilogy:半对数(y)坐标图。 po

61、lar:极坐标图。 subplot:分割图窗 refline(slope,intercept):加参考线 18、图形注解 legend:图形标签. xlable:x轴标签。 ylable:y轴标签。 title:图形题目。 text:文字注解。,19、特殊二维图形 bar:条形图。 barh:水平柱图。 ezplot:符号函数图。 fplot:绘制字符串指定的函数名的函数图。如fplot(sin(x),2,3)。 pie:饼图。 plotmatrix:绘矩阵点图。 stem:2维火柴杆图。 stem3:3维火柴杆图。 20、等高线图和向量图 contour:等高线图。 contour3:三维等

62、高线图。 quiver:向量图。,例: x,y = meshgrid(-2:.2:2,-1:.15:1); z = x .* exp(-x.2 - y.2); px,py = gradient(z,2); contour(x,y,z), hold on quiver(x,y,px,py) hold off,21、特殊三维图形 comet3:三维彗星轨线(comet(x,y)画二维彗星线)。 t = -10*pi:pi/500:10*pi comet3(sin(t),cos(t),t) meshc(x,y,z):画出三维网格与等高线 图,类似sutfc。 meshz(x,y,z):增加边界面屏蔽

63、。,stem3:三维火柴干图。例 a=rand(3); stem3(a); 22、固体模型 cylinder:生成圆柱。格式为 x,y,z= cylinder(r,n),r为母线半 径,N为显示的母线条数 mesh(x,y,z)或surf(x,y,z)显示单位 高度柱面。,t = -1*pi:pi/20:1*pi; r=5+cos(t); x,y,z=cylinder(r,30) surf(x,y,z) sphere: 生成单位球面。例 x,y,z=sphere(40) %40为子午线条 数,sphere默认为20条。 mesh(x,y,z)或surf(x,y,z) %画球面 axis(equ

64、al) %坐标轴刻度相同,例 x,y,z=sphere(50);mesh(x1,y2,z2)画出以(1,2,2)为中心半径为1的球面; x,y,z=sphere(50);mesh(x,y,abs(z)画出以(0,0,0)为中心半径为1的上半个球面; x,y,z=sphere(50); mesh(2*x, 2*y, 2*abs(z),画出以(0,0,0)为中心的半径为2上半个球面; x,y,z=sphere(50); mesh(2*x, 2*y, 2*abs(z),画出以(0,0,0)为中心的半径为2上半个球面;,例、绕地球运动的飞行物 x,y,z=sphere(50); mesh(x,y,z)

65、; hold on v=-6,6,-6,6,-6,6; axis(v); axis(off) t= 0:pi/1000:200*pi; x=6*sin(t); y=2*cos(t); z=zeros(size(t); comet3(x,y,z),23、四维表现图 对于三维图形自变量是二维的,对于三个自变量的函数w=fx,y,z),其其图形应该是四维的,由于我们所处的空间和思维的局限性,在计算机屏幕上只能表现出三维空间。为了表现四维图像,可利用三维实体的四维切片色图,用三维实体上的颜色来描述函数值的变化情况。,MATLAB中用slice函数来完成 (1)slice(x,y,z,w,sx,sy.sz):绘制向量sx,sy,sz中的点沿x,y,z轴方向的切片图,w的大小决定了每一点的颜色。 (2)slice(x,y,z,w,x1,y1,z1):按数组x1,y1,z1切片(按坐标轴单位)。 (3)slice(w,x1

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

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

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


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