MATLAB与科学计算



《MATLAB与科学计算》由会员分享,可在线阅读,更多相关《MATLAB与科学计算(165页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,,单击此处编辑母版文本样式,,第二级,,第三级,,第四级,,第五级,,,,*,MATLAB与科学计算,1,,一、前言,MATLAB:matrix laboratory的缩写,矩阵实验室的意思。一开始它是一种专门用于矩阵数值计算的软件。自MATLAB4.0版本问世以来,该软件成为最具有吸引力,应用最为广泛的科学计算语言。我们这个课就拿MATLAB6.1版本来讲。(6.x版本大同小异),,2,,学习该软件的必要性:目前,MATLAB软件不仅走入企业、公司和科研机构,而且在高等院校也是从大学生到博士生都必须掌握的一项基本技能,是必不可少的计算工具,。,,MATLAB功能:数
2、值计算、符号运算和图形处理。,3,,学习它的意义:随着计算机科学和计算软件的发展,数学系学生必须掌握一门好的计算软件。这是我们就业、继续身造或做科研工作所要用到的。是当代大学生必备的一项技能。,,4,,其它计算软件:MATHEMATIC(数学分析问题的计算);IDL(航天、控制),FOETRAN、BASIC(科学计算)。可以说一个人掌握了一门计算软件,再学习其它计算软件很容易。,5,,MATLAB桌面平台:,,(1)主窗口:整个大的窗口(其它几个窗口都包括在其中),,(2)命令窗口(command window):》为运算提示符,表示MATLAB在准备状态。当在提示符后输入一段运算式并按回车键
3、后,就给出计算结果,6,,(3)历史窗口(command history):保留命令历史记录,这方便于使用者查询。双击历史窗口中的某一行命令,即可在命令窗口中执行该命令。,7,,(4)当前目录窗口(current directory):在当前目录窗口中可显示或改变当前目录,也可以显示当前目录下的文件,并提供搜索功能。,8,,(5)发行说明书窗口(launch pad):用来说明用户所拥有的Mathworks公司产品的工具包、演示以及帮助信息。,,(6)工作间管理窗口(workspace):显示目前内存中所有的MATLAB变量的变量名、数学结构、字节数及其类型。,9,,命令窗口查询帮助:help
4、+函数名,当用户知道函数名字,而不知道其用法时,用help命令可以去了解此函数的用法。,,如:help inv,,10,,MATLAB标点的含义:,,(1)分号;……区分行以及取消运行显示等。例:,,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],11,,(3)小括号():指定运算过程的先后次序等。例:,,x=0.5;,,y=sin(x)/(2+cos(x)),,z= sin(x)/2+cos(x),,(4)方括号[ ]:矩阵定义标志等。见上。,12,,(5)续行号…
5、:例:,,y=sin(x)/(2+cos(x)),,也可写为,,y=sin(x)…,,/(2+cos(x)),,13,,(6)百分号%:注释标记,该行%以后的语句不执行。例,,%线性规划程序,,%a=0.5;,,b=sin(x);%正弦函数,,,14,,(6)等号=:赋值标记。见上。,,(7)单引号’ ’:字符串表示符,单引号里面的内容为字符串。单引号一定在英文状态下输入例:,,,a='xingtai college',,(8)冒号’:’:有多种应用功能,学习过程中注意。如:选取矩阵的所有行、列;矩阵定义,15,,二、数值计算,变量:MATLAB语言不需要对所使用的变量进行事先声明,也不需要指
6、定其类型,它会自动根据所赋予变量的值或所进行的操作来确定变量的类型。如果变量重新赋值将会用新值代替旧值。如:,,a=1,,b=0.5,,c=a*b,,c=3,16,,变量命名的规则:,,(1)变量名区分大小写;,,(2)变量名长度不能超过31位;,,(3)必须以字母开头,变量名中可包含字母、数字、下划线,但不能使用标点。,17,,常量:MATLAB中有些预定义的变量,这些特殊的变量称为常量。常用到的有:,,i,j: 虚数单位;,,pi: π;,,NaN: 表示不定值,比如0/0;,,inf: 无穷大(infinit),比如1/0。,18,,算术操作符:,,+、-:加,减;可以通用。,,*,^,
7、\ , / :分别为矩阵乘,乘方,左除,右除;,,.*, .^ , .\ , ./ :分别为数组乘,乘方,左除,右除;此时向量的运算不会满足矩阵的运算法则。注意矩阵的加点运算结果。,19,,如:,,a1=2;,,a2=[1,2,3,4];,,b2=[4,3,2,1];,,a1+a2,,a1-a2,,a2-a1,,a1*a2,20,,a1./a2 %a1/a2是错误的写法,,a1.\a2,,a2-b2,,a2+b2,,a2.*b2 %a2*b2是错误的写法,,a2./b2,,b2./a2,,a2.\b2,21,,例 已知水的黏度随温度的变化公式为 μ=μ,0,/(1+at+bt,2,)其中
8、,μ,0,=1.785×10,-3,,,,,a=0.03368,b=0.000221,,,求水在0,20,40,80℃时的黏度。,,程序如下:,22,,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,,23,,字符串:,,字符串的约定(1)字符串用单引号括起来;(2)字符串的每个每个字符(包括空格)都是字符数组的一个元素.,,例 s=‘xingtai coll
9、ege’,,f=‘sin(x)’,,是字符串(char array),24,,向量的生成:,,(1)直接输入:如a=[1,2,5,3],,(2) 利用冒号表达式生成:如:b=[2:2:10],此时[ ]可省略,步长为1时,步长可省略。第一个数为首元素的值,第2个数为步长或差值,第三个数为尾元素的限值,不能超过这个值。如b=2;2:11等价于b=[2:2:10],25,,(3)线性等份向量生成:y=linspace(x1,x2,n),生成n维向量,使得y(1)=x1,y(n)=x2。如:y=linspace(1,100,6)。,,向量的基本运算,,(1)向量的加减:用+、-。同维向量才可以
10、加、减。相应元素加减,,26,,(2)向量与数可以加、减。用+、-。数与向量的每个元素进行作用。,,(3)向量与数可以相乘。用*。,,(4)向量与数可以相除。向量/数,数./向量。,,(5)两个向量点积。必须是同维向量。用dot(a,b)。,27,,(6)两个向量叉积。cross(a,b),a,b必须有是3维且次序不能颠倒,。,,(7)混合积。由以上两个函数实现。dot(a,cross(b,c)),,矩阵的生成:,,(1)直接输入:如:a=[1,3,4;4,3,2].,,28,,(2)创建M文件输入大矩阵:当矩阵很大时,直接输入显得很笨,出错不易修改.我们可以编写一个M文件,M文件的扩展名必须
11、是m.,,例 编写一个名为matrix.m(名字自己随便起)的M文件如下:,,%matrix.m,,‘’’’,,29,,mat=[1,2,3,3;3,4,5,1;3,2,1,4;8,9,7,5],,在命令窗口中输入matrix,就会运行该文件.查看矩阵的结构可用size(mat).,30,,矩阵运算:,,(1) +、-、*:加、减、乘运算。,,(2)矩阵的除法有两种形式:左除“\”和右除‘/’.右除是先计算逆再做乘法;而左除不计算逆直接进行除法运算,这样可避免奇异矩阵无法求逆带来的麻烦.,31,,如: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=A\b,或x=inv(A)*b.,,32,,又如: A=[361,625,961,1444,1936;1,1,1,1,1], b=[1;1]‘,求方程组Ax=b的解.由于rank(A)=rank(B)=2(B为增广矩阵),所以有无穷多个解,MATLAB中用除法解方程组时所得到的解是所有解中范数最小的一个x=A\b。,33,,(3)矩阵与常数间的运算:+、-、*运算是数与矩阵的每个元素进行运算,除法运算,只能常数做除数。,,(4)矩阵求逆:inv(A)为A的逆(inverse).,,34,,
13、(5)求转置矩阵:A'.,,(6)求矩阵的行列式:det(A) ,(determinant是行列式)。,,(7)矩阵幂运算:用^.如A^3,表示A*A*A。,,(8)矩阵指数运算:expm(A),A为方阵。,35,,(9)矩阵对数运算:logm(A),A为方阵。,,如:a=rand(3); %成生一个3阶随机矩阵,,b=expm(a),,c=logm(b),36,,(10)矩阵开方:sqrtm(a).,,(11)求矩阵呢的秩:rank(a).,,特殊矩阵的生成:,,(1)zeros(n):生成 n×n阶0矩阵。,,(2)zeros(m,n):生成 m×n阶0矩阵。,,(3)zeros(siz
14、e(a)):生成与a阶数相同的0矩阵。,37,,(4) eye(n):生成 n阶单位矩阵。,,(5) eye(m,n):生成 m×n阶单位矩阵。,,(6) eye(size(a)):生成与a阶数相同的单位矩阵。,,(7) ones(n):生成 n阶全1矩阵。,,(8) ones(m,n):生成 m×n阶全1矩阵。,38,,(9) ones(size(a)):生成与a阶数相同的全1矩阵。,,(10)rand(n):生成 n×n阶随机矩阵,其元素值在0和1之间。,,(11)rand(m,n):生成 m×n阶随机矩阵。,,(12)rand:生成一个随机数。,39,,(13)rand(size(a))
15、:生成与a阶数相同的随机矩阵。,,矩阵的特殊操作:,,(1)变维操作reshape(a,m,n):把矩阵a变成n×n阶矩阵。如,,a=1:12,reshape(a,2,6), reshape(a,3,4)。注意变维操作要保证元素个数一致。,40,,例,,s=1:12;,,c=zeros(3,4);,,c(:)=s(:); %符号“:”表示变维操作,这两个矩阵必须预先定义维数,结果c取的是s的元素。,41,,(2)对角元素抽取diag(a,k)(注:diagonal为对角线的意思):抽取矩阵a的第k条对角线的元素作为向量,k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第
16、k条对角线。,,diag(a)相当于diag(a,0).例,,a=rand(3); v=diag(a),42,,说明:如果b是一个向量,则diag(b)为对角矩阵,其对角线元素为b的元素。如:b=1:3,diag(b).,,(3)tril(a) (注:triangle low):提取矩a的主下三角。,,(4)tril(a,k):提取矩a的第k条对角线下面部分。 k=0 时为主对角线,k为正值时为上方第k条对角线, k为负值时为下方第k条对角线。,43,,(5)triu(a,k) (注:triangle up) :提取矩a的第k条对角线上面部分。,,逻辑运算符:,,(1)= =:等于。,,(2)
17、~=:不等于。,,(3)〈:小于。,,(4)〉:大于。,44,,(5)〈=:小于等于。,,(6)〉=:大于等于。,,(7)&:逻辑与。,,(8)|:逻辑或。,,(9)~:逻辑非。,45,,说明:,,①在关系比较中,若双方为同维数组(矩阵),则比较的结果也是同维数组(矩阵)。它们的元素有0和1组成。对应位置上的元素满足比较关系时为1,否则为0。当常数与数组(矩阵)比较时,结果与数组(矩阵)同维,其值依次为常数与数组元素依次比较的结果。例:,46,,a=[1:3;4:6;7:9],,x=5,,y=x<=a,,运行结果,,y =,,0 0 0,,0 1 1,,1
18、 1 1,47,,②,逻辑运算的意义是:,,与:当运算双方的对应元素值都为非0时,结果为1,否则为0;,,或:当运算双方的对应元素值有一非0时,结果为1,否则为0;,,非:当运算数组(矩阵)的对应位置上的元素值为0时,结果为1,否则为0。例,48,,a=[1,2;3,2];,,b=[0,1;3,0];,,d=a&b,,e=a|b,,f= ~b,,③算术运算、比较运算、逻辑与或非运算的优先级:先比较运算、再算术运算、最后逻辑与或非运算。,49,,常用的一些函数(直接调用):,,sin(x):正弦函数,(sine);例:,,x=-pi:0.1:pi;y=sin(x);plot(x,y),
19、,asin(x):反正弦函数,(anti-sine);,,cos(x):余弦函数,(cosine);,,acos(x):反,余弦函数,(anti-cosine);,,tan(x):正切函数(tangent);,,50,,atan(x):反正切函数(anti-tangent);,,cot(x):余切函数(cotangent);,,acot(x):,反,余切函数(anti-cotangent);,,sec(x):正割函数(secant);,,asec(x):反正割函数(anti-secant);,,csc (x):余割函数(cosecant);,,acsc (x):反余割函数(anti-cosec
20、ant);,51,,sinh(x):双曲正弦,(hyperbolic sine);,,asinh(x):反双曲正弦,(anti-hyperbolic sine);,,cosh(x):双曲余弦,(hyperbolic cosine);,,acosh(x):反双曲余弦,(anti-hyperbolic cosine);,52,,tanh(x):,双曲正切函数(,hyperbolic,tangent);,,a,tanh(x):,反双曲正切函数(anti-,hyperbolic,tangent);,,coth(x):,双曲余切函数(,hyperbolic,cotangent);,,acoth(x):,
21、反双曲余切函数(anti-,hyperbolic,cotangent);,,exp(x):e指数函数(exponent);,53,,log(x):自然对数函数(logarithm);,,log10(x):以10为底的对数;,,log2(x):以2为底的对数;,,sqrt(x):平方根函数(square root);,,abs(x):求模函数(absolute),,Inline(‘f的表达式’):自定义函数。函数的自变量为函数中,,出现的变量。自变量顺序安字母表顺序。,,Inline(‘f的表达式’,‘变量1’, ‘变量2’, ‘变量3’,……):,,与上面的区别是它安变量表的给出的顺序规定函数
22、的变量,,顺序。如:,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,z,y) = sin(2*x*y +z);,,g1(1,2,3)与g2(1,2,3)的意义不同。,,54,,多项式表示方法:,,在MATLAB中多项式p(x)=a,n,x,n,+a,n-1,x,n-1,+…+a,0,是以向量p=[a,n,,a,n-1,,…,a,0,]的形式储存的.,,(1)系数向量直接输入:例输入多项式x^3-5x^2+6x-33.,
23、,p=[1,-5,6,-33];,,poly2sym(p) %polynomial多项式,将系数向量表示成符号多项式,55,,(2)矩阵的特征多项式输入:例,,a=[1,2,3;2,3,4;3,4,5];,,p=poly(a);%求a的特征多项式系数向量,,p1=poly2sym(p); %即为a的特征多项式,56,,(3)由根创建多项式:例,,root=[-5,-3+4i,-3-4i];%是某个多项式的根,,p=poly(root) %求相应的多项式的系数向量,,P1=poly2sym(p) %将多项式系数向量表示成符号多项式,57,,多项式运算:,,(1)求多项式的值:例,,p=[1,1
24、1,55,125];,,a=1.2,,b=[1,2;2,3],,polyval(p,a) %polynomial value 求多项式在1.2的值,,polyvalm(p,b) %多项式在b的值,58,,(2)求多项式的根:例求多项式,,2x^4-5x^3+6x^2-x+9=0的所有根.,,p=[2,-5,6,-1,9],,roots(p) %得到多项式的根,,(3)factor:因式分解。例,,syms x,,factor(x^9-1),,结果:ans =(x-1)*(x^2+x+1)*(x^6+x^3+1),59,,,factor(sym(‘100’))%把整数100进行素数分解.结果:(
25、2)^2*(5)^2,,(4)expand(s):多项式展开,s可为多,,项式、多项式向量和矩阵。例,,expand(sym('(x+1)^3')),,结果:ans =x^3+3*x^2+3*x+1,,expand(sym('sin(x+y)')),,结果:ans = sin(x)*cos(y)+cos(x)*sin(y),60,,(5)collect(s):对默认的变量合并同类项。,,collect(s,v):对变量v合并同类项。,,,s可为符号多项式、多项式向量和矩阵,,例,,,collect(sym('x^2*y+y*x-x^2-2*y*x')),,collect(sym('x^2*y+
26、y*x-x^2-2*y*x'),x),,collect(sym('x^2*y+y*x-x^2-2*y*x'),y),61,,(6)simple(s):符号表达式简化, s可为符号多项式、多项式向量和矩阵。,,例,,f=simple(sym('sin(x)^2+cos(x)^2')),,结果:f =1,,g=simple(sym('x^3+3*x^2+3*x+1')),,结果:,g =(x+1)^3,62,,(7)多项式乘除运算分别用conv和deconv: (convolution,deconvolution),,例,,p1=[2,-5,6,-1,9];,,p2=[3,-90,18];,,p
27、=conv(p1,p2) %为p1和p2所相应的多项式的乘积多项式的系数向量,63,,,p3=deconv(p,p1) %为p2,,p4= deconv(p,p2) %为p1,,poly2sym(p1);,,poly2sym(p2);,,poly2sym(p),,poly2sym(p3),,poly2sym(p4) %观看这几个多项式,64,,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
28、,,4.80 8.00 8.60,,x=[0.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为拟合多项式的系数向量,65,,,x1=0.5:0.05:3,,y1=a(1)*x1.^2+a(2)*x1+a(3),,plot(x1,y1) %画出拟合曲线的图形,,hold on %保留上面的图形和坐标,可在该坐标系中继续作图,,plot(x,y,‘*’) %用*号的形式画出被拟合的数据图形,66,,求矩阵的特征值(,eigenvalue,:),和特征向量,
29、(,eigenvector),,例,,,a=[7,3,-2;3,4,-1;-2,-1,3];,,[x,y]=,eig,(a) %,所得结果,x,为,a,的特征向量矩阵,,y,为特征值矩阵,,说明:,a,必须是方阵,此时,a*x=y*x,,,67,,三、符号运算,MATLAB进行符号运算的主要功能:符号表达式和符号矩阵的基本操作、符号矩阵的基本运算、符号微积分运算、符号线性方程求解、符号微分方程求解、特殊数学符号函数、符号函数图形等。,68,,符号表达式的生成,,创建符号函数:如f='log(x)‘,,创建符号方程:如 g='a*x^2+b*y^2+c=0‘,,创建微分方程:如q='D
30、y-y=x‘,,或者:f=sym(‘log(x)’)、g=sym(‘a*x^2+b*y^2+c=0‘)、,,q=sym('Dy-y=x’),69,,说明:符号函数也可以用另一方法创建(该方法不能创建方程):,,syms x,%用syms可以定义多个变量,变量间用空格分开,,f=log(x),,w=sin(x)+cos(x),,70,,符号与数值之间的转换,,(1) Vpa函数:如,,digits(25) %设置有效数字的精度为25位有效数字,,vpa(pi+1) %显示在上述digits函数设置下的精度的数值,,或者vpa(pi+1,25),,注vpa:variable precision a
31、rithmetic,71,,(2)numeric函数:如,,numeric(pi+2),,(3)double函数:如,,double(pi+2) %与上一个函数结果一样。,,例 求函数f(x)=x-cos(x)在x=2的值。,,解,72,,,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),,73,,例求方程3x,2,-e,x,=0的精确解和各种精度的近似解。,,解 s=
32、solve(‘3*x^2-exp(x)=0’),,vpa(s) %显示32位有效数字,,vpa(s,6) %显示6位有效数字,,syms x,,ezplot(3*x^2-exp(x)),,注:W = LAMBERTW(X) 是w*exp(w) = x的解,74,,符号函数运算,,复合函数运算:设z=g(y),y=f(x),,compose(g,f) %即为g(f(x)),自变量的符号取为f函数的自变量符号。,,compose(g,f,t) %即为g(f(x)),自变量的符号取t。,75,,反函数运算:finverse,,例,,syms x;syms y;syms t;%,或者,syms x y
33、 t,,g=sin(y);f=1/x,,compose(g,f),,compose(g,f,t),,finverse(g),,finverse(f),76,,符号矩阵创立,,,使用sym函数直接创建符号矩阵:例 a=sym(‘[1/sin(x),cos(x)^2;2*x,1+x^2]’),,或,,syms x,,a=[1/sin(x),cos(x)^2;2*x,1+x^2],,用创建子矩阵的办法创建符号矩阵(该方法不推荐):例,,,a=[‘[,1/,sin(x),cos(x)^2]’;‘[2*x,,,1+x^2 ]’],%,同列元素的位数必须一样,可用空可空格来补。 例b=[a,;'[1
34、 ,x^2 ]'],77,,将数值矩阵转化为符号矩阵,,a=[2/3,sqrt(2);0.222,log(3)] %a为数值矩阵,,b=sym(a) %把a转化为符号矩阵b。,,符号矩阵索引和修改,,b(2,2) %矩阵的索引,显示矩阵b的第2行第2列元素。,78,,符号矩阵的修改,,,b(2,2)=‘log(9)‘ %矩阵的修改,,,b(2,2)修改为log(9) 。,,符号矩阵的运算,,(1)+、-、*、\、/运算,,(2)矩阵转置(’):a’,,(3) 行列式运算:det(a) %determinant的,简写计算符号矩阵的行列式。,79,,(4)求逆inv(a):
35、求矩阵a的逆。,,(5)求矩阵的秩rank(a):求矩阵a的秩。,,符号极限,,limit(f,x,a):求表达式f在x→a时的极限。,,limit(f):求f在x→0时的极限.,,imit(f,x,a,’left’):求表达式f在x→a时的左极限。,,limit(f,x,a,’right’):求表达式f在x→a时的右极限。例,80,,,syms x,,limit(sin(x)/x,x,1),,limit(sin(x)/x),,limit((1+1/x)^(1/x),x,inf),,f=atan(1/(1-x)),,y=limit(f,x,1) %没极限,,y1=limit(f,x,1,’l
36、eft’),,y2= limit(f,x,1,’right’),81,,f=1/x,,,y1=limit(f,x,0,'left'),,y2=limit(f,x,0,'right'),,符号积分(积分:integral),,(1)int(f,x):计算符号表达式f,自由变量为x的不定积分.,,(2)int(f,x,a,b):计算符号表达式f,自由变量为x,从a到b的定积分,82,,说明:符号表达式可以是符号函数,也可是符号矩阵。,,例,,syms x,,int(sin(x),x),,int(sin(x),x,0,1),,int(sin(x),x,0,1),,说明:变量x省略时默认对x积分。,8
37、3,,,a=sym('[1/sin(x),cos(x)^2;,,2*x,1+x^2]'),,int(a,x),,符号函数求导(微分:differential ),,(1) diff(f,x) %求表达式f,自由变量为x的导数。,,(2)diff(f,x,n) %求表达式f,自由变量为x的n阶导数。,84,,syms x,,f=sin(x)^2,,diff(f,x)%,变量x省略时默认对x求导,diff(f,x,2)%,x省略时默认对x求导,,线性方程组的符号解法(linsolve),,例a=sym('[10,-1,0;-1,10,-2;0,-2,10]'),,b=sym('[9;7;6]'
38、),,x=linsolve(a,b) %x为线性方程ax=b的解。注:这里a,b也可是double型,,,但得到的x为sym型。,85,,,vpa(x) %转化为浮点近似解,32位有效数字。,,非线性方程(组)的符号解法,,(1),fsolve(‘f’,x,0,):其中f为被求零点的函数,x,0,为初值。注:fsolve对sym型函数无效;可用于有函数文件、字符串、和inline定义的函数。,,(2),slove(‘方程1’,‘方程2’,…).,86,,例、求解下面非线性方程组,,,x,1,-0.7sinx,1,-0.2cosx,2,=0,,x,2,-0.7cosx,1,+0.2sinx,2
39、,=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]; %x,0,为初始向量,,fsolve(‘fc’,x0),87,,作业:分别用solve和fsolve函数求sinx+cosx+x=0的解,并进行验证。,,作业:,分别用solve和fsolve函数求方程组,,,x^2*y^2 - 2*x - 1 = 0,,,x^2 - y^
40、2 - 1 = 0,,的解,并进行验证。,,两个函数用法的区别是什么?,,88,,%方法,1,,[x,y]=solve(‘x^2*y^2 - 2*x - 1 = 0’,‘x^2 - y^2 - 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;
41、0],,x=fsolve(f,x0),,%方法,4,,f=inline('[x(1)^2*x(2)^2-2*x(1)-1;x(1)^2-x(2)^2-1]'),,x0=[1.6;1.2],,x=fsolve(f,x0),89,,(4)已知,,x=[x,1,,x,2,,…,x,n,],,f=(f1(x);f2(x);…;f,n,(x)),,试求导数,f'(x),即f对x的jacobian矩阵。,,提示:利用函数:jacobian(f,v),其中v为自变量向量。,,利用该雅可比函数求下面函数的导数以及在(1,2,3)点的导数值。,90,,F=[3x-cos(xy)-0.5;,,x,2,-80(y+
42、0.1),2,+sinz+1.06;,,e,-xy,+20z+1],,syms x,syms y,syms z,,f=[3*x-cos(x*y)-0.5;x^2-80*(y+0.1)^2+sin(z)+1.06;exp(-x*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);,91,,常微分方程的符号解(dsolve):,,字符D代表对独立变量导数d/dt,Dn代表对独立变量的n阶导数,,,例 求dy/dt=-ay的解,,解 dsolve(‘Dy=-a*y’
43、) %得到通解。,,dsolve(‘Dy=-a*y’,’y(0)=1’) %给定了初始条件,求特解。方程和 初始条件用逗号分开,都用单引号引起来。,92,,符号函数的二维图形,,(1)ezplot(f):绘制f(x)的图形,x的范围为[-2π,2π]。如,,ezplot(‘sin(x)’) 。,,(2)ezplot(f,a,b):绘制f(x)的图形,x的范围为[a,b]。如,,ezplot(‘sin(x)’,0,9)。,93,,四、图形处理,图形可视化是数学计算人员所喜欢和追求的一项技术。把结果用图形描述出来,便于理解、分析。,94,,二维绘图命令,,(1)plot(y):%若y是向量,就以向
44、量的索引为横坐标,以向量的元素值为纵坐标;,,(2)plot(x,y):一般来说是绘制向量y的图形,横坐标为x的值,纵坐标为y的值。,,(3) plot(x,y,’.’):这里‘.’表示用点线显示。,95,,二维绘图命令,,(1)plot(y):%若y是向量,就以向量的索引,,为横坐标,以向量的元素值为纵坐标;,,(2)plot(x,y):一般来说是绘制向量y的图形,,,横坐标为x的值,纵坐标为y的值。 x,y的维,,数相同,,(3) plot(x,y,’.’):这里‘.’表示用离散点显示。,,(4) plot(x1,y1,x2,y2):x1,y1的维数相同,,,x2,y2的维数相同。,96,
45、,例,,x=-pi:0.1:pi,,y=sin(x),,plot(y),,hold on %保留上一个图形,,plot(x,y),,,plot(x,y+1,':r'),97,,说明:在plot(x,y,’s’)中图形设置选项s的规定,,98,,例,,x=0:0.1*pi:2*pi;,,y=sin(x);,,z=cos(x);,,plot(x,y,‘--k’,x,z,‘-.r’) %分别用虚黑线和点划红线显示两条曲线。,99,,(5)polar(θ,r):画出极坐标函数r=r(θ)的图形,,例,,cita=0:0.1*pi:4*pi;,,r=cita+sin(cita/2),,polar(ci
46、ta,r),,(6)refline(k,b):画平面参考线,k为斜率,b为在y轴的截距,100,,三维图形命令,,(1)plot3(x,y,z):x,y,z为同维向量时画空间曲线,例画出x=sin(t),y=cos(t), x=t,t∈[0,10π]的图形。,,解,101,,t=0:pi/50:10*pi; z=t,x=sin(t),y=cos(t),plot3(x,y,z);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):画
47、出三维网格图。,102,,(4)meshc(x,y,z):画出三维网格与等高线图,,(5)meshz(x,y,z):增加边界面屏蔽。,,(6) surf(x,y,z) :与mesh函数不同的是把图形着色,surfc与meshc类似。例,103,,,[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)的区别。,104,,(,3)坐标轴标注xl
48、able(‘标注’), ylable(‘标注’),,(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(‘正弦函数图像’),105,,(5)图形保持hold on/off: hold on是启动图形保持功能,在已存在的一张图中添加曲线,hold off 是关闭图形保持功能。,,(6)图例标注legend(‘标注1’,‘标注2’,…),,106,,例x=0:0.1*p
49、i:2*pi;,,y=sin(x); z=cos(x);,,plot(x,y,'-*'),,hold on,,plot(x,z,'-o'),,plot(x,y+z,'-h'),,legend('y=sinx','z=cosx','y+z=sinx+cosx,,hold off %关闭图形保持,107,,(7)子图subplot(m,n,p):其功能是把一个图形分成m×n个小图形窗口,通过参数p调用各子窗口进行操作。例,108,,x=0:0.1*pi:2*pi;,,y=sin(x);,,z=cos(x);,,subplot(2,2,1), plot(x,y,'-*'),,subplot(2
50、,2,2), plot(x,z,'-o'),,subplot(2,2,3), plot(x,y+z,'-h'),,subplot(2,2,4), plot(x,y-z,'-x'),109,,图形处理技术,,(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:,作用是平面图形带有网格和取消网格。,110,,五、程序设计,MATLAB作为一种高级计算语言,不仅可以做如上所讲的那些工作,还可以像basic ,
51、fortran,c等其它高级计算机语言一样进行程序设计,即编制以m为扩展名的文本文件(简称M文件)。,,111,,M文件的形式,,(1)命令式(script):命令式文件就是命令行的简单叠加,MATLAB就会自动按顺序执行文件中的命令,这样就可以避免在命令窗口运行许多命令的麻烦和重复行工作,也便于修改。其可在命令窗口直接输入文件名运行,112,,例,,%sinfig.m,,x=-pi:0.1*pi:pi;,,y=sin(x);,,plot(x,y);,,hold on;,,plot(y,x),113,,函数式(,function):,他主要解决参数传递和函数调用问题,它的第一句以,functi
52、on,语句为引导。不能直接运行,只能调用。,,例 %,f.m,文件名与函数名必须一致,,,function f(x),,f=2*x^2+4*x+6,,在命令窗口中输入:,f(0),f(10),可以看,,出结果。,114,,例、建立一个名字为f的函数文件,该,,函数为,,f=cos,2,(x),,试计算该函数在x=1:10的函数值,,,并给出离散点(x,f(x))的图形。,,(大家一起讨论),115,,例、一个函数文件可以定义个函数,,,function [y1,y2,y3] = f(x),,,y1=sin(x);,,,y2=cos(x);,,,y3=tan(x);,,(3)数据文件:用s
53、ave(‘文件名’,‘变量1’,‘变量2’,……)创建,用load(‘文件名’)调入到工作间。,116,,控制语句,,(1)循环语句,,,(a)for循环:例,,s=0;,,for k=1:1:10 %初始值、步长和最大限值,,s=s+k;,,end %循环结束标志,117,,(b)while循环:例,,s=0;,,k=0;,,while k<=9,,k=k+1;,,s=s+k;,,end,,s,118,,(c)if……else……end选择语句:例,,编写分段函数f(x)=x,(-1= 54、>=-1 & x<0,,y=x;,,else,,y=x^2;,,end,119,,(d) if…end语句:例,,for i=1:10,,if i<8,,a(i)=100,,end,,end,,结果:,a =,,100 100 100 100 100 100 100,120,,(e) if…elseif…elseif…else…end多重选择语句:例编写函数文件:,,function y=f(x),,if x>=-1 elseif,x>=0 else,f=0,,end,,在命令窗口中输入f(1),(3)可以得到结果。,121,,(f)swith 变量,,case 1, 55、,语句,,case 2,,语句,,……,,otherwise,,语句,,end,122,,例、,,for i=1:6,,switch i,,case 1,,a=1,,case 2,,a=2,,case 3,,a=3,,case 4,,a=4,,otherwise,,b=0,,end,,end,123,,例 已知n=自己的真实学号,在xoy平面有点,,A,i,=(i,0),,B,i,=(i,n),,(i=0,1,2,……,n),,现要画连接A,i,B,j,的线段(i,j=0,1,…,,,n),试给出其MAT LAB程序。,,解 现就学号为6,给出其程序如下:,124,,n=6;x=0:n;y=0 56、: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,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,125,,作业:在上题的基础上,再加上点,,,C,i,=(0,i 57、),D,i,=(n,i),(i=0,1,2,……,n),,现要画连接AiBj和CiBj的线段(i,j= 0,1,…,n),试给出其MAT LAB程序。把运行结果得到的图像,存放到WORD文件,文件名字取为:真实姓名_真实学号,然后发送到信箱:xtxysh,126,,六、主要命令汇总,1、常用信息,,help:,在线帮助(显示在命令窗)。,,helpwin,:,在线帮助(独立窗口显示)。,,ver,:MATLAB,及工具箱的版本信息。,,2,、管理工作区命令,,who:,显示当前变量。,,whos,:,显示当前变量具体信息。,127,,clear:从内存中清楚变量和函数。,,quit:退出MAT 58、LAB。,,3、管理命令和函数,,what:显示当前目录下的MATLAB,,文件。,,edit:编辑M文件。edit(建立编辑新,,文 件);edit+文件名(编辑已有,,的文件)。,,128,,which:找出函数和文件的位置。,,type:显示M文件内容。Type+文件,,名。,,Inmem:显示内存中的函数。,,4、操作系统命令,,dir:显示目录。,,pwd:显示当前工作目录。,,delete:删除文件。Delete+文件名。,,,129,,web:打开页面浏览器加载文件。,,5、数据类型,,double:双精度类型,,sym:符号型,,Inline:内联对象,,char:字符数组或字 59、符串。,,uint8:无符号8位整数(,unsigned,,integer,),,6、数据基本操作,,max:最大元素。向量为数,矩阵为向量,130,,min:最小元素。类似max.,,mean:求平均值。mean(a),a为向量,,时得到向量平均值,结果为一,,个数;a为矩阵时,进行每列,,平均,得到一个向量。,,sum:元素和。 sum(a),a为向量时得,,到该向量各元素之和,结果为一,,个数;a为矩阵时,进行每列,,求和,得到一个向量。,131,,prod:元素积。prod(a)当a为向量和,,矩阵时的情况,类似于max(a)。,,cumsum:元素累和。cumsum(a),a,,可为 60、向量,也可为矩阵。,,cumprod:元素累积。a可为向量,,,也可为矩阵。,,7、基本矩阵函数,,zeros:零矩阵函数。,,132,,ones:全1矩阵。,,eye:单位矩阵。,,rand:随机数、向量、矩阵.,,linspace:线性等分向量。,,8、基本数组操作,,size:矩阵大小。,,length:数组长度。,,isempty:判断是不是空矩阵。,,133,,isequal: 判断数组是否相等。,,isequal(a,b)。,,isnumeric:判断是否为数值矩阵。,,reshape:矩阵重置。,,tril:抽取下三角部分。,,triu:抽取上三角部分。,,fliplr:左右方向 61、翻转矩阵(flip:翻转)。,,flipud:上下方向翻转矩阵。,134,,rot90:逆时针把矩阵旋转90度。,,9、专用变量和常量,,ans:最新答案。,,pi:圆周率。,,i,j:复数单位。,,inf:无穷大。,,NaN:不定数。,,isnan:判断不定数。,135,,isinf:判断无穷大元素。,,isfinite:判断有限大元素。,,10、指数、对数函数,,exp:e指数函数。,,pow2:以2为底的幂函数。,,sqrt:平方根函数。,,11、舍入函数和剩余函数,,fix:朝零方向舍入为整数。,136,,floor:朝负方向舍入为整数。,,ceil:朝正方向舍入为整数。,,round 62、:四舍五入为整数。,,sign:符号函数。,,mod:无符号求余函数。mod(3,2)=1,,rem:带符号求余函数。,,12、复数函数,,abs:求模。,137,,conj:求共轭函数(conjugate)。,,angle:相角函数。,,imag:复矩阵虚部。,,real:复矩阵实部。,,isreal:实矩阵判断函数。,,12、矩阵函数,,norm:矩阵或向量范数。,,normest:向量、矩阵2范数。,138,,rank:矩阵的秩。,,det:矩阵行列式的值。,,trace:矩阵的迹(主对角线元素之和)。,,inv:矩阵逆。,,13、特征多项式、特征值,,poly:特征多项式。,,poly 63、2sym:多项式表示。,,eig:特征值和特征向量。,139,,eigs:特征值。,,14、矩阵函数,,expm:矩阵指数。,,logm:矩阵对数。,,sqrtm:矩阵平方根。,,15、坐标转换,,cart2sph:转换直角坐标为球坐标。,,cart2pol:转换直角坐标为极坐标。,140,,pol2cart:转换极坐标为直角坐标。,,sph2cart:转换球坐标为直角坐标。,,16、坐标轴控制,,axis:控制坐标轴范围。,,grid on/off:栅格线保持、取消。,,hold on/off:图形保持/取消。,,box on/off:图形四周都显示/常规坐标轴。,,例1、,141,,[x, 64、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),%注意该语句必须在图形显示语句的后面,,说明:二维图形是类似的。,142,,例2、axis(‘控制字符串’):可以选择,,不同的字符串完成对坐标轴的操作。,,控制字符串有:,,(1)auto:自动模式,使得图形的坐标范围满足图中一切图元素。,,(2)axis:将当前坐标设置固定,使,,用hold命令后,图形仍以此作为坐标,,界限。,143,,(3)manual:以当前的坐标限定绘,,制。 65、,,(4)tight:将坐标限控制在指定的数,,据范围内。,,(5)equal:使坐标轴分度相等。,,(6)off:取消对坐标轴的一切设置,,,包括系统的自动设置。,,(7)on:恢复对坐标轴的一切设置。,144,,[x,y]=meshgrid(-1:0.1:1,-1:0.1:1);,,z=x.^2+y.^2;,,surf(x,y,z),,box on,,,17、基本二维图形,,plot:线性绘图。,145,,loglog:双对数坐标图。,,semilogx:半对数(x)坐标图。,,semilogy:半对数(y)坐标图。,,polar:极坐标图。,,subplot:分割图窗,,refline( 66、slope,intercept):加参考线,,18、图形注解,,legend:图形标签.,,xlable:x轴标签。,146,,ylable:y轴标签。,,title:图形题目。,,text:文字注解。,,19、特殊二维图形,,bar:条形图。,,barh:水平柱图。,,ezplot:符号函数图。,,fplot:绘制字符串指定的函数名的函数图。如fplot(‘sin(x)’,[2,3])。,147,,pie:饼图。,,plotmatrix:绘矩阵点图。,,stem:2维火柴杆图。,,stem3:3维火柴杆图。,,20、等高线图和向量图,,contour:等高线图。,,contour3:三维等高线图。,,quiver:向量图。,,例,148,,[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,,,149,,21、特殊三维图形,,comet3:,三维彗
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。