MATLAB与科学计算资料_第1页
MATLAB与科学计算资料_第2页
MATLAB与科学计算资料_第3页
MATLAB与科学计算资料_第4页
MATLAB与科学计算资料_第5页
已阅读5页,还剩167页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB与科学计算

多媒体网络教室方案示意图

、儿、▲

,、刖百

•MATLAB:matrixlaboratory的缩写,

矩阵实验室的意思。一开始它是一种

专门用于矩阵数值计算的软件。自

MATLAB4.0版本问世以来,该软件成

为最具有吸引力,应用最为广泛的科

学计算语言。我们这个课就拿

MATLAB6.1版本来讲。(6.x版本大

同小异)

•学习该软件的必要性:目前,

MATLAB软件不仅走入企业、公

司和科研机构,而且在高等院校

也是从大学生到博士生都必须掌

握的一项基本技能,是必不可少

的计算工具,。

•MATLAB功能:数值计算、符号

运算和图形处理。

•学习它的意义:随着计算机科学

和计算软件的发展,数学系学生

必须掌握一门好的计算软件。这

是我们就业、继续身造或做科研

工作所要用到的。是当代大学生

必备的一项技能。

•其它计算软件:MATHEMATIC

(数学分析问题的计算);IDL

(航天、控制),FOETRAN、

BASIC(科学计算)。可以说一

个人掌握了一门计算软件,再学

习其它计算软件很容易。

•MATLAB桌面平台:

(1)主窗口:整个大的窗口(其它

几个窗口都包括在其中)

(2)命令窗口(command

window):》为运算提示符,表

示MATLAB在准备状态。当在提示

符后输入一段运算式并按回车键

后,就给出计算结果

(3)历史窗口(commandhistory):

保留命令历史记录,这方便于使

用者查询。双击历史窗口中的某

一行命令,即可在命令窗口中执

行该命令。

(4)当前目录窗口(current

directory):在当前目录窗口中

可显示或改变当前目录,也可以

显示当前目录下的文件,并提供

搜索功能。

(5)发行说明书窗口(launchpad):

用来铺明用户所拥有的Mathworks

公司产品的工具包、演示以及帮助

信息。

(6)工作间管理窗口

(workspace):显示目前内存中所

有的MATLAB变量的变量名、数学结

构、字节数及其类型。

•命令窗口查询帮助:help+函数名,

当用户知道函数名字,而不知道

其用法时,用help命令可以去了

解此函数的用法。

如:helpinv

•MATLAB标点的含义:

(1)分号;……区分行以及取消

运行显示等。例:

A=[l,2,3,4]与A=[1,2;3,4];

的区别。

(2)逗号,……区分列及函数参

数分隔符等。例:二[1,2;3,4],

B=[l,4,3;3,2,1;4,5,6]

⑶小括号():指定运算过程的

先后次序等。例:

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);%正弦函数

(6)等号=:赋值标记。见上。

(7)单引号'':字符串表示

符,单引号里面的内容为字符串。

单引号一定在英文状态下输入例:

a=lxingtaicollege1

(8)冒号,':有多种应用功

能,学习过程中注意。如:选取

矩阵的所有行、歹!J;矩阵定义

二、数值计算

变量:MATLAB语言不需要对所使用

的变量进行事先声明,也不需要指定其

类型,它会首动根据所赋予变量的值或

卷翻藕鬣r2无量Z的类划型。如,果

代替旧值。如:

a=1

b=0.5

c=a*b

c=3

•变量命名的规则:

(1)变量名区分大小写;

(2)变量名长度不能超过31位;

(3)必须以字母开头,变量名中

可包含字母、数字、下划线,但

不能使用标点。

•常量:MATLAB中有些预定义的

变量,这些特殊的变量称为常量。

常用到的有:

i,j:虚数单位;

pi:IT;

NaN:表示不定值,比如0/0;

inf:无穷大(infinit),比如

1/0o

•算术操作符:

加,减;可以通用。

*,A,\,/:分别为矩阵乘,乘

方,左除,右除;

分别为数组乘,

乘方,左除,右除;此时向量的

运算不会满足矩阵的运算法则。

注意矩阵的加点运算结果。

如:

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.*b2%a2*b2是错误的写法

a2./b2

b2./a2

a2.\b2

例已知水的黏度随温度的变化公式

2

为p=p0Z(1+at+bt)其中

p0=1.785X103,

a=0.03368,b=0.000221,

求水在0,20,40,求水时的黏度。

程序如下:

miu0=1.785e-3;

a=0.03368;

b=0.000221;

t=0:20:80

miu=miuO./(1+a*t+b*t.A2)

运行后的结果为:

miu=

0.00180.00100.00070.00050.0003

•字符串:

字符串的约定(1)字符串用单引

号括起来;(2)字符串的每个

每个字符(包括空格)都是字符

数组的一个元素.

例s="xingtaicollege9

f=^sin(x),

是字符串(chararray)

•向量的生成:

(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)o

•向量的基本运算

(1)向量的加减:用+、・。同维向

量才可以加、减。相应元素加减

(2)向量与数可以加、减。用+、

-o数与向量的每个元素进行作用。

(3)向量与数可以相乘。用*。

(4)向量与数可以相除。向量/数,

数./向量。

(5)两个向量点积。必须是同维

向量。用dot(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.

例编写一个名为111@1;"*.111(名字

自己随便起)的M文件如下:

%matrix.m

mat=[l,2,3,3;3,4,5,1;3,2,1,4;8

,9,7,5]

在命令窗口中输入matrix,就

会运行该文件.查看矩阵的结构可

用size(mat).

•矩阵运算:

(1)+、-、*:力口、减、乘运算。

(2)矩阵的除法有两种形式:左除

和右除.右除是先计算

逆再做乘法;而左除不计算逆直接

进行除法运算,这样可避免奇异矩

阵无法求逆带来的麻烦.

如:A=[l,2,3,2;3,2,

4,1;3,1,5,6;2,5,3,2],

b=[l;3;2;lL求方程组Ax二b的解.

由于rank(A)=rank(B)=4(B为增

广矩阵),所以有唯一解,X二A\b,

或x=inv(A)*b・

•又如:

A=[361,625,961,1444,1936;1,1,1

,1,1],b=\求方程组Ax=b

的解.由于rank(A)=rank(B)=2(B为

增广矩阵),所以有无穷多个

解,MATLAB中用除法解方程组时所

得到的解是所有解中范数最小的一

个x二A\bo

(3)矩阵与常数间的运算:+、-、

*运算是数与矩阵的每个元素进行

运算,除法运算,只能常数做除

数。

(4)矩阵求逆:inv(A)为A的逆

(inverse).

(5)求转置矩阵:A'.

(6)求矩阵的行列

式:det(A),(determinant是行

列式)。

(7)矩阵塞运算:用二如N3,表示

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).

•特殊矩阵的生成:

(1)zeros(n):生成nXn阶0矩阵。

(2)zeros(m,n):生成0><11阶0矩

阵。

(3)zeros(size(a)):生成与a阶数

相同的0矩阵。

(4)eye(n):生成n阶单位矩阵。

(5)eye(m,n):生成inXn阶单位

矩阵。

(6)eye(size(a)):生成与@阶数

相同的单位矩阵。

(7)ones(n):生成n阶全1矩阵。

(8)ones(m,n):生成mXn阶全1

矩阵。

(9)ones(size(a)):生成与a阶数

相同的全1矩阵。

(10)rand(n):生成nXn阶随机矩

阵,其元素值在0和1之间。

(11)rand(m,n):生成mXn阶随机

矩阵。

(12)rand:生成一个随机数。

(13)rand(size(a)):生成与a阶

数相同的随机矩阵。

•矩阵的特殊操作:

(1)变维操作reshape(a,m,n):把

矩阵a变成nXn阶矩阵。如

a=l:12,reshape(a,2,6),

reshape(a,3,4)o注意安维操作

要保证元素个数一致。

s=l:12;

c=zeros(3,4);

c(:)=s(:);%符号“:”表示

变维操作,这两个矩阵必须预先

定义维数,结果c取的是S的元素。

(2)对角元素抽取diag(a,k)(注:

diagonal为对角线的意思):抽

取矩阵a的第k条对角线的元素作

为向量,k=0时为主对角线,k为

正值时为上方第k条对角线,k为

负值时为下方第k条对角线。

diag(a)相当于diag(a,0).例

a=rand(3);v=diag(a)

说明:如果b是一个向量,贝(Jdiag(b)

为对角矩阵,其对角线元素为b的

元素。如:b=l:3,diag(b).

(3)tril(a)(注:trianglelow):

提取矩a的主下三角。

(4)tril(a,k):提取矩a的第k条

对角线下面部分。k=0时为主对

角线,k为正值时为上方第k条对

角线,k为负值时为下方第k条对

角线。

(5)triu(a,k)(注:triangle

up):提取矩a的第k条对角线上面

部分。

•逻辑运算符:

(1)==:等于。

(2)~二:不等于。

(3)<:小于。

(4)):大于。

(5)<=:小于等于。

(6)〉二:大于等于。

(7)&:逻辑与。

(8)|:逻辑或。

(9)1逻辑非。

说明:

①在关系比较中,若双方为同

维数组(矩阵),则比较的结果

也是同维数组(矩阵)。它们的

元素有0和1组成。对应位置上的

元素满足比较关系时为L否则为

0o当常数与数组(矩阵)比较时,

结果与数组(矩阵)同维,其值

依次为常数与数组元素依次比较

的结果。例:

a=[l:3;4:6;7:9]

x=5

y=x<=a

运行结果

y=

000

011

111

②逻辑运算的意义是:

与:当运算双方的对应元素值

都为非。时,结果为I,否则为0;

或:当运算双方的对应元素值

有一非0时,结果为1,否则为0;

非:当运算数组(矩阵)的对

应位置上的元素值为0时,结果为

1,否则为0。例

a=[1,2;3,2];

b=[0,1;3,0];

d=a&b

e=a|b

f=~b

③算术运算、比较运算、逻辑与或

非运算的优先级:先算术运算、

再比较运算、最后逻辑与或非运

算。

•常用的一些函数(直接调用):

sin(x):正弦函数(sine);例:

x="pi:0.1:pi;y=sin(x);plot(x,y)

asin(x):反正弦函数(anti・sine);

cos(x):余弦函数(cosine);

acos(x):反余弦函数(anti-cosine);

tan(x):正切函数(tangent);

atan(x):反正切函数(anti-tangent);

cot(x):余切函数(cotangent);

acot(x):反余切函数(anti-

cotangent);

sec(x):正割函数(secant);

asec(x):反正割函数(anti-secant);

esc(x):余割函数(cosecant);

acsc(x):反余割函数(anti-

cosecant);

sinh(x):双曲正弦(hyperbolicsine);

asinh(x):反双曲正弦(anti-hyperbolic

sine);

cosh(x):双曲余弦(hyperboliccosine);

acosh(x):反双曲余弦(anti-

hyperboliccosine);

tanh(x):双曲正切函数(hyperbolic

tangent);

atanh(x):反双曲正切函数(anti-

hyperbolictangent);

coth(x):双曲余切函数(hyperbolic

cotangent);

acoth(x):反双曲余切函数(anti-

hyperboliccotangent);

exp(x):e指数函数(exponent);

log(x):自然对数函数(logarithm);

Iog10(x):以10为底的对数;

Iog2(x):以2为底的对数;

sqrt(x):平方根函数(squareroot);

abs(x):求模函数(absolute)

lnline(¥的表达式'):自定义函数。函数的自变量为函数中

出现的变量。自变量顺序安字母表顺序。

InlineCf的表达式','变量1','变量Z,'变量3,……):

与上面的区别是它安变量表的给出的顺序规定函数的变量

顺序。如:g=inline('sin(2*x*y+z)J),

表示:g(x,y,z)=sin(2*x*y+z)

g=inline('sin(2*x*y+z)-x-z'V)

表示:g(x,z,y)=sin(2*x*y+z);

g1(123)与g2(1,2,3)的意义不同o

factorial(n):求n的阶乘。

•多项式表示方法:

在MATLAB中多项式

P(X)=anXn+an.iXn」+…+a0是以向量

p=[an田用…,a。]的形式福存的.

(1)系数向量直接输入:例输入多项式

xA3-5xA2+6x-33.

p=[1,-5,6,-33];

poly2sym(p)%polynomial多项

式,将系数向量表示成符号多项式

⑵矩阵的特征多项式输入:例

a=[l,2,3;2,3,4;3,4,5];

p=poly(a);%求@的特征多项式系数

向量

pl=poly2sym(p);%即为a的特征多

项式

(3)由根创建多项式:例

root=[-5,・3+4i广3・4i];%是某个多

项式的根

p=poly(root)%求相应的多项式

的系数向量

P1=poly2sym(p)%将多项式系数

向量表示成符号多项式

•多项式运算:

⑴求多项式的值:例

p=[1,11,55,125];

a=1.2

b=[1,2;2,3]

polyval(p,a)%polynomialvalue

求多项式在1.2的值

polyvalm(p,b)%多项式在b的值

⑵求多项式的根:例求多项式

2xF-5x-3+6x人2-x+9=0的所有根.

P=[2,-5,6,-1,9]

roots(p)%得到多项式的根

(3)factor:因式分解。例

symsx

factor(x"9-1)

结果:ans=(x-1)*(xA2+x+1)*(xA6+xA3+1)

factor(symC10(F))%把整数100进

行素数分解.结果:(2)八2*(5)八2

(4)expand(s):多项式展开,s可为多

项式、多项式向量和矩阵。例

expand(sym(l(x+l)A31))

结果:ans=xA3+3*xA2+3*x+l

expand(sym('sin(x+y)'))

结果:ans=sin(x)*cos(y)+cos(x)*sin(y)

(5)collect(s):对默认的变量合并同

类项。

co11ect(s,v):对变量v合并同类

项。

S可为符号多项式、多项式向量和矩阵

collect(sym(lxA2*y+y*x-xA2-2*y*x,))

collect(sym(,xA2*y+y*x-xA2-2*y*x,)/x,)

collect(sym(,xA2*y+y*x-xA2-2*y*x,)/y5)

(6)simple(s):符号表达式简化,s可为

符号多项式、多项式向量和矩阵。

f=simple(sym(Tsin(x)A2+cos(x)A21))

结果:f=l

g=simple(sym(,xA3+3*xA2+3*x+l,))

结果:g=(x+l)A3

⑺多项式乘除运算分别用conv和

deconv:

(convolution,deconvolution)

p1=[2,-5,6,-1,9];

p2=[3,-90,18];

p=conv(p1,p2)%为p1和p2所相应

的多项式的乘积多项式的系数向量

p3=deconv(p,pl)%为p2

p4=deconv(p,p2)%为「1

poly2sym(pl);

poly2sym(p2);

poly2sym(p)

poly2sym(p3)

poly2sym(p4)%观看这几个多项

polyfit(x,y,n)其中x,y为拟合数

据,n为拟合多项式的阶数。例

用最小二乘法拟合数据

X:0.501.001.502.002.503.00

y:1.752.453.814.808.008.60

x=[0.5,1,1.5,2,2.5,3]

y=[l.75,2.45,3.81,4.80,8.00,8.60]

a=polyfit(x,y,2)%用2次多项式拟合上

组数据,a为拟合多项式的系数向量

xl=O.5:0.05:3

yl=a(l)*xl."2+a(2)*xl+a(3)

plot(xl,yl)%画出拟合曲线的图

holdon%保留上面的图形和坐

标,可在该坐标系中继续作图

plot(x,y,)%用*号的形式

画出被拟合的数据图形

•求矩阵的特征值(eigenvalue:)和特

征向量(eigenvector)

a=[7,3,-2;3,4,-1;-2,-1,3];

[x,y]=eig(a)%所得结果x为a的特征

向量矩阵,y为特征值矩阵

说明:a必须是方阵,此时a*x=x*y,

三、符号运算

•MATLAB进行符号运算的主要功能:

符号表达式和符号矩阵的基本操作、

符号矩阵的基本运算、符号微积分

运算、符号线性方程求解、符号微

分方程求解、特殊数学符号函数、

符号函数图形等。

■符号表达式的生成

创建符号函数:如fmiog(x)'

创建符号方程:如

g="a*xA2+b*yA2+c=0"

创建微分方程:如q="Dy.y=x'

或者:f=sym(tlog(x),)>

g=sym('a*xA2+b*yA2+c=0i)>

q=sym(,Dy-y=x,)

说明:符号函数也可以用另一方

法创建(该方法不能创建方程):

symsx%用$丫1^可以定义多个变量,变量间用空格分开

f=log(x)

w=sin(x)+cos(x)

•符号与数值之间的转换

(1)Vpa函数:如

digits(25)%设置有效数字

的精度为25位有效数字

vpa(pi+1)%显示在上述

digits函数设置下的精度的数值

或者vpa(pi+1,25)

^±vpa:variableprecisionarithmetic

(2)numeric函数:如

numeric(pi+2),a="1\numeric(a)(把a

变为double型,相当于str2nlim(a))

(3)double函数:转sym型为double型.

double(sym(2)),a="1\

double(a))(把a变为double型代码)

说明:对sym型数据,上两者作用一样

例求函数f(x)=x・cos(x)在x=2的值。

symsx

f=x-cos(x);

fl=subs(f,T,x)%字符替代,

在符号函数f中用2代替x

fl=subs(f,x,1)%给出f在x=l处

的值。

digits(20)

vpa(f1)

numeric(fl),doub1e(fl)

例求方程3x2・ex=0的精确解和各种

精度的近似解。

解s=solve(<3*xA2-exp(x)=0,)

vpa(s)%显示32位有效数字

vpa(s,6)%显示6位有效数字

symsx

ezplot(3*xA2-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

•symsx;symsy;symst;%或者symsxyt

•g=sin(y);f=1/x

•compose(g9f)

•compose(g,f,t)

•finverse(g)

•finverse(f)

•符号矩阵创立

使用sym函数直接创建符号矩阵:例八

a=sym(,[l/sin(x),cos(x)^2;2*x,l+x^2])

symsx

a=[l/sin(x),cos(x)-2;2*x,l+x^2]

用创建子矩阵的办法创建符号矩阵(该方法不推

荐):例

a=[-1/sin(x),cos(x)…2],;'[2*x

,l+x…2]']%同列元素的位数必须一样,可

用空可空格来补。例

b=[a,/[1,x2了:

•将数值矩阵转化为符号矩阵

a=[2/3,sqrt(2);0.222Jog(3)]%2为

数值矩阵

b=sym(a)%把2转化为符号矩阵b。

•符号矩阵索引和修改

b(2,2)%矩阵的索弓显示矩阵b的

第2行第2列元素。

•符号矩阵的修改

b(2,2)=1og(9)J%矩阵的修改,

b(2,2)修改为log(9)。

・符号矩阵的运算

(1)+、一、*、\、/运算

(2)矩阵转置('):联

(3)行列式运算:det(a)

%determinant的简写并算符号矩阵

的行列式。

(4)求逆inv(a):求矩阵a的逆。

(5)求矩阵的秩rank(a):求矩阵a的秩。

•符号函数极限(只限于sym型函数)

limit(f,x,a):求表达式依x-a时的极限。

limit(f):求f在x—0时的极限.

而计(仃声,昵伍):求表达式他*一2时的左

极限。

Iimit(f,x,a,5rightJ):求表达式由Ex—a时的

右极限。例

symsx

limit(sin(x)/x,x,1)

limit(sin(x)/x)

limit((1+1/x)A(1/x),x,inf)

f=atan(1/(1-x))

y=limit(f,x,1)%没极限

y1=limit(f,x,1Jeft')

y2=limit(f,x,1,'right')

f=1/x,

y1=limit(f,x,O」eft')

,1

y2=limit(f,x,0Jright)

•符号积分(适于sym型、char型)

(Dint(f,x):计算符号表达式f,自由变

量为x的不定积分.

(2)int(f,x,a,b):计算符号表达式f,自

由变量为x,从a到b的定积分

说明:符号表达式可以是符号函数,

也可是符号矩阵。

symsx

int(sin(x),x)

int(sin(x),x,O,l)

int(sin(x),x,O,l)

说明:变量x省略时默认对x积分。

a=sym(,[l/sin(x),cos(x)A2;

2*x,l+x人2「)

int(a,x)

,符号函数求导(适于sym型和char型)

(1)diff(f,x)%求表达式f,自由变量为x

的导数。说明:diff(a),a为向量时,

表示前项与后一项的亲。

(2)diff(f,x,n)%求表达式f,自由变量

为x的n阶导数。

symsx

f=sin(x)-2

diff(f,x)%变量x省略时默认对x求导

diff(f,x,2)%x省略时默认对x求导

•线性方程组的符号解法(linsolve)

例a=sym('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,xo)洪中f为被求零点的

函数,X。为初值。注:fsolve对sym型

函数无效;可用于有函数文件、字符

串、和inline定义的函数;类似命令还

宥:fzeroo或用:

fsolve(T5x0foptions)

(2)slove(届程1:'方程2,…).

例、求解下面非线性方程组

X1・0.7sifix1-0.2COSX2=0

X2-0.7COSX1+0.2sinx2=0

解首先编写函数文件f.m如下

functiony=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(i);y(2)];

在命令窗口中输入

x0=[0.502,0.51];%x0为初始向量

fsolve('fc\xO)

作业:分别用solve和fsolve函数求

sinx+cosx+x=0的解,并进行验证。

作业:分别用solve和fsolve函数求方

程组

x"2*y"2-2*x-1=0

x"2-y2-1=0

的解,并进行验证。

两个函数用法的区别是什么?

%方法1

•[x,y]=solve(,xA2*yA2-2*x-1=05/xA2-yA2-1=O9);

%方法2

•functiony=fc(x)

•y(l)=x(l)八2*x(2)八2-2*x(l)・l;

•y(2)=x(l)A2-x(2)A2-l;

•y=[y(D,y⑵]

•x0=[1.6;1.2]

•x=fsolve(!fc\xO)

%方法3

•f=![x(l)A2*x(2)A2-2*x(l)-l;x(l)A2-x(2)A2-X]6

•x0=[0.6;0]

•x=fsolve(f,xO)

%方法4

f=inlinef[x(l)A2*x(2)A2-2*x(l)-l;x(l)A2-x(2)A2-X]f)

•x0=[1.6;1.2]

•x=fsolve(f,xO)

(4)已知

x=[xx,x2,…,xj

f=(fl(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.l)2+sinz+l.06;

exy+20z+l]

•symsx5symsy,symsz

f=[3^x-cos(x^y)-0.5;xA2-

0^(y+0.1)A2+sin(z)+1.06;exp(-

x*y)+20*z+l]

•df=jacobian(f5[x^z])

•b=subs(df,[x,y,z],[1,2,3]);b='[1;2;3],;

•c=linsolve(a5b);

•常微分方程的符号解(dsolve):

字符D代表对独立变量导数d/dt,Dn代表对独立变量的n

阶导数,

例求dy/dt=・ay和dy/dx=x的解

解dsolve(iDy=-a*y5)%得到通解,默认自变量为匕

dsolve(tDy=-a*y5/y(0)=15)%给定了初始条件,求

特解。方程和初始条件用逗号分开,都用单引号引

起来。

y=dsolve(,Dy=xlX。;%通解

y=dsolveCDy=x;y(1)=2,Jx=%特解

•符号函数的二维图形

(1)ezplot(f):绘制f(x)的图形,

的范围为[-2立,2TT]。如

ezplot('sin(x)9。

(2)ezplot(f,a,b):绘制f(x)的

图形,x的范围为[a,b]o如

ezplot('sin(x)10,9)o

四、图形处理

图形可视化是数学计算人

员所喜欢和追求的一项技术。把

结果用图形描述出来,便于理解、

分析。

•二维绘图命令

(1)plot(y):%若y是向量,就以向量的索

可为横坐标,以向量的元素值为纵坐

标;

(2)plot(x,y):一般来说是绘制向量y的图

形,横坐标为x的值,纵坐标为y的值。

(3Lplot(x,y;J):这里表示用点线显

Zj\O

•二维绘图命令

(1加10*丫):%若丫是向量,就以向量的索引

为横坐标,以向量的元素值为纵坐标;

(2)plot(x,y):一般来说是绘制向量y的图形,

横坐标为x的值,纵坐标为y的值。x,y的维

数相同

(3)plot(x,y,l):这里'「表示用离散点显示。

(4)plot(xl,y1,x2,y2):xl,yl的维数相同,

x2,y2的维数相同。

x=-pi:0.1:pi

y=sin(x)

Plot(y)

holdon%保留上一个图形

plot(x,y)

说明:在pl。t(x,y,、,)中图形设置选项s的规

点或线的颜色标记点的形式线型1

k(黄)r,(点)(实线)।

M(紫红)]'o'(圆圈)Y(点线)

'c'(青)'X,(叉).-.’(点划浅)

,1,

'r‘(红)—一(盅线))

'g'(绿)

'b'(兰),s'(正方形)

(白),d,(菱形)1

'k'(黑)(向下三角形)

L'(向上三角形)

''响左三龟取)

'〉'(向右身形)

'P'(五角星)

■(六角形)

点或线的颜色标记点的形式线型

黄)(点)■(实线)

(紫红)'o’(圆圈)(点线)

%,(青)飞’(叉)(点划线)

k(红)'+'(虚线)

(绿)

―(兰)飞,,正方形)

'w'(白)'d'(菱形)

'k‘(黑)‘V’(向下三角形)

L'(向上三角形)

(向左三角形)

'>'(向右三角形)

'p'(五角星)

口(六角形)

还有大小、线宽控制:如2

plot(1,1/ro'/markersize'jSO)

plot(1,1/linewidth',49)

x=0:0.1*pi:2*pi;

y=sin(x);

z=cos(x);

'・r)%分别用虚黑线和

点划红线显示两条曲线。

(5)polar(0,ij:画出极坐标函

数r=«0)的肉形

cita=0:0.1*pi:4*pi;

r=cita+sin(cita/2)

polar(cita,r)

(6)refline(k,b):画平面参考线,

k为斜率,b为在y轴的截距

(7)ezplot(T(x))画出f(x)的图形。例

ezplot('sin(x))结果是在12*pi,2*pi]上画出

图形;

ezplot(4sin(xy,[-1,3]),结果是在11,3]上画出

图形.

f(x)可为sym型、char型、inline型和function

定义的函数。如:founctionf(x);仁x/2-1%这

里必须用.*、.八;调用:ezplot(@f)或ezplot

(吓)O

(8)fplot(T(x)Ja,b]),结果是在『a,b]上画出

图形例fplot(&in(x)\[-1,3]),结果是在口3上画

出图形形(x)向为char型、inline型。

•三维图形命令

(1)plot3(x,y,z):x,y,z为同维向量

时画空间曲线,例画出

x=sin(t),y=cos(t),x=t,

10E的图形。

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):画出三维网格

图。

(4)meshc(x,y,z):画出三维网格

与等高线图

(5)meshz(x,y,z):增加边界面屏

蔽。

(6)surf(x,y,z):与mesh函数不

同的是把图拓着色,surfc与

meshc类似。例

[x,y]=meshgrid(-2:0.1:2,-

2:0.1:2);z=x.A2+y.A2;

plot3(x,y,z)

holdon

meshc(x,y,z+8),

meshc(x,y,z+16),

%mesh(z)与mesh(x,y,z)的区别类

似于pIotjx)与pIot(x,y而应别。

(7)ezplot3('x⑴7y(t),'z(t)',[a,b]):为参数在[a,b]

的范围画出x=x⑴,y=y(t),z=z(t)对应的三维空

间曲线。^Jezplot3(,cos(t)),(sin(t)7t,,[0,10*pi])o

(8)ezmeshCx(u,v)\y(u,v”z(u,v)\[a,b,c,d]):在

awuwb,cwvwd的范围,画出参激方程

x=x(u,v),y=y(u,v),z=z(u,v)的对应的曲面。

(9)ezsurf:ezsurf与ezmesh的区另U类彳以于surf

与mesh的区别。例

ezmesh('r*cos⑴',T*sin(t)',TA2',[0,2*pi])

画出抛物面图形。

(3)坐标轴标注xlabe(标注'),

ylabel(痴注,)

(4)标题标注title(,标题')

x="pi:0.1*pi:pi,y=sin(x)

plot(x,y),v=[-16,6,-1,2],axis(v)

gridon

xlabelCx-axis9),ylabel('y=sinx,)

title。正弦函数图像')

(5)图形保持holdon/off:hold

on是启动图形保持功能,在已存

在的一张图中添加曲线,hold

off是关闭图形保持功能。

(6)图例标注legend,标注

'标注2',…)

例x=0:0.1*pi:2*pi;

y=sin(x);z=cos(x);

holdon

plot(x,z/-of)

plot(x,y+z,'-h')

Iegend(ly=sinx,/z=cosx7y+z=sinx+

cosx

holdoff%关闭图形保持

⑺子图subplot(m,n,p):其功能

是把一个面形分成mXn个小

图形窗口,通过参数p调用各

子窗口进行操作。例

x=0:0.1*pi:2*pi;

y=sin(x);

z=cos(x);

subplot(2,2,1),plot(x,y1*')

subplot(2,2,2),plotfXjZj'"o')

subplot(2,2,3),plotfXjy+Zj'-h')

subplot(2,2,4),plot(x,y-z,'-x')

•图形处理技术

(1)坐标轴控制函数axis(v):对

二维图形v=[a,b,c,d]淇中[a,b]和

[c,d]分别为x轴和y轴的范围;对于

三维图形旷二团由上内收用分别给出

x,y和z轴的范围。例

(2)平面坐标网格函数gridon/off:

作用是平面图形带有网格和取消网

寤。

五、程序设计

•MATLAB作为一种高级计算语言,

不仅可以做如上所讲的那些工作,

还可以像basic,fortran,c等其它

高级计算机语言一样进行程序设

计,即编制以m为扩展名的文本

文件(简称M文件)。

•M文件的形式

(1)命令式(script):命令式文

件就是命令行的简单叠加,

MATLAB就会自动按顺序执行文

件中的命令,这样就可以避免在

命令窗口运行许多命令的麻烦和

重复行工作,也便于修改。其可

在命令窗口直接输入文件名运行

%sinfig.m

x="pi:0.1*pi:pi;

y=sin(x);

plot(x,y);

holdon;

plot(y,x)

(2)函数式(function):他主要解决

参数传递和函数调用问题,它的第

一句以function语旬为引导。木能

直接运行,只能调用。

例%f.m文件名与函数名必须一致

functionf(x)

f=2*xA2+4*x+6

在命令窗口中输入:f(O),f(1O)可以看

出结果。

例、建立一个名字为f的函数文件,该

函数为

f=cos2(x)

试计算该函数在x=1:10的函数值,

并给出离散点(x,f(x))的图形。

(大家一起讨论)

例、一个函数文件可以定义个函数

function[yl,y2,y3]=f(x)

yl=sin(x);

y2=cos(x);

y3=tan(x);

(3)数据文件:

用save,文件名','变量V,'变量2"……)或

save文件名变量1变量2变量3创建;

用load。文件名')或Load文件名调入到工作

间。

控制语句

(1)循环语句

(a)for循环:例

s=0;

fork=1:1:10%初始值、步长和最大

限值

s=s+k;

end%循环结束标志

(b)while循环:例

s=0;

k=0;

whilek<=9

k=k+1;

s=s+k;

end

(c)if......else......end选择语句:

编写分段函数f(x)=x,(・

A

1=<x<0);f(x)=x2,(0<=x<=1)o

functiony=f(x)

ifx>=-1&x<0

y=x;

else

y=xA2;

end

(d)if...end语句:例

•fori=l:10

•ifi<8

•a(i)=100

•end

•end

•结果:a=

100100100100100100100

(e)if...elseif...elseif...else...end^

重选择语句:例编写函数文件:

functiony=f(x)

ifx>=-1&x<0,y=x;elseif

x>=0&x<=1,y=xA2;else,f=0

end

在命令窗口中输入f(1),(3)可以得到结

果。

(f)swith变量

case1

语句

case2

语句

otherwise

语句

end

例、

•fori=1:6

•switchi

•case1

•a=1

•case2

•a=2

•case3

•a=3

•case4

•a=4

•otherwise

•b=0

•end

•end

例已知n=自己的真实学号,在xoy平面

有点

Aj二(i,0)

Bi=(i,n)

(i=0,1,2,・・・・・・,n)

现要画连接AjB的线段(i,j=0,1,…,

n),试给出其MATLAB程序。

解现就学号为6,给出其程序如下:

n=6;x=0:n;y=0:n;

fori=1:7

forj=1:7

ifi==j

plot(x(i)*ones(size(y)),y);

xlabel('x');ylabel(V);title('AiBj的连线')

v=[0,n,0,n];axis(v)

holdon;

else

a=min(x(i),xG));b=max(x⑴

X1=a:0.1*(b-a):b;

Y1=・n/(x(i)・x(j))*(X1・x(i));%连接内Bj的直线

plot(X1,Y1);

end

end

end

作业:在上题的基础上,再加上点

Ci=(O,i),Di=(n,i)

(i=0,1,2,……,n)

现要画连接AiBj和CiBj的线段

(i,j=0,1,…,n),试给出其MAT

LAB程序。把运行结果得到的图像,

存放到WORD文件,文件名字取为:

真实姓名—真实学号,然后发送到

信箱:xtxyshx@126.com

六、主要命令汇总

1、常用信息

•help:在线帮助(显示在命令窗)。

•helpwin:在线帮助(独立窗口显示)。

・ver:MATLAB及工具箱的版本信息。

2、管理工作区命令

•who:显示当前变量。

•whos:显示当前变量具体信息。

•clear:从内存中清楚变量和函数。

•quit:退出MATLAB。

3、管理命令和函数

•what:显示当前目录下的MATLAB

文件。

•edit:编辑M文件。edit健立编辑新

文件);edit+文件名(编辑已有

的文件)。

•which:找出函数和文件的位置。

•type:显示M文件内容。Type+文件

名。

•Inmem:显示内存中的函数。

4、操作系统命令

•dir:显示目录。

•pwd:显示当前工作目录。

•delete:删除文件。Delete+文件名。

•web:打开页面浏览器加载文件。

5、数据类型

•double:双精度类型

•sym:符号型

•Inline:内联对象

•char:字符数组或字符串。

•Uint8:无符号8位整数(unsignedinteger)

•char(sym型变量):把sym型转化为char型

•sym(char型变量):把char型转化为sym型

•char(inline型)和inline(char型)可相互转化。

•num2str:数字转化成字符串

6、数据基本操作

•max:最大元素。向量为数,矩阵为向量

•min:最小元素。类似max.

•mean:求平均值。mean(a),a为向量

时得到向量平均值,结果为一

个数;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:矩阵大小。

•length:数组长度。

•isempty:判断是不是空矩阵。

•isequal:判断数组是否相等。

isequal(a,b)o

•isnumeric:判断是否为数值矩阵。

•reshape:矩阵重置。

•tril:抽取下三角部分。

•triu:抽取上三角部分。

・flipk左右方向翻转矩阵(flip:翻

转)。

•flipud:上下方向翻转矩阵。

・rot90:逆时针把矩阵旋转90度。

•find(x):[i,j]=find(x)查找x非零元下标。

9、专用变量和常量

ans:最新答案。

pi:圆周率。

i,j:复数单位。

inf:无穷大。

NaN:不定数。

isnan:判断不定数。

•isinf:判断无穷大元素。

•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:实矩阵判断函数。

12、矩阵函数

•norm:矩阵或向量范数。

•normest响量、矩阵2范数。

・rank:矩阵的秩。

•det:矩阵行列式的值。

•trace:矩阵的迹(主对角线元素之和)。

•inv:矩阵逆。

13、特征多项式、特征值

•poly:特征多项式。

•poly2sym:多项式表示。

,eig:特征值和特征向量。

•eigs:特征值。

14、矩阵函数

•expm:矩阵指数。

•logm:矩阵对数。

•sqrtm:矩阵平方根。

15、坐标转换

•cart2sph:转换直角坐标为球坐标。

•cart2pol:转换直角坐标为极坐标。

•pol2cart:转换极坐标为直角坐标。

•sph2cart:转换球坐标为直角坐标。

16、坐标轴控制

•axis:控制坐标轴范围。

•gridon/off:栅格线保持、取消。

•Gridminor:较小网格。

•holdon/off:图形保持/取消o

•boxon/off:图形四周都显示/常规坐标

轴。

例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、axis1控制字符串,):可以选

不同的字符串完成对坐标轴的操作。

控制字符串有:

(1)auto:自动模式,使得图形的坐

标范围满足图中一切图元素。

(2)axis:将当前坐标设置[定,使

用hoId命令后,图形仍以此作为坐标

界限。

(3)manual:以当前的坐标限定绘

制。

(4)tight:将坐标限控制在指定的数

据范围内。

(5)equal:使坐标轴分度相等。

(6)off:取消对坐标轴的一切设置,

包括系统的自动设置。

(7)on:恢复对坐标轴的一切设置。

•[x,y]=meshgrid(-1:0.1:1,-1:0.1:1);

•z=x.A2+y.A2;

•surf(x,y,z)

•boxon

17、基本二维图形

•plot:线性绘图。

•loglog:双对数坐标图。

•semilogx:半对数(x)坐标图。

•semilogy泮对数(y)坐标图。

,polar:极坐标图。

•subplot:分割图窗

•refline⑸ope,intercept):加参考线

18、图形注解

•legend:图形标签.

•xlable:x轴标签。

•ylable:y轴标签。

,title:图形题目o

•text:文字注解。

19、特殊二维图形

•bar:条形图。

,barh:水平柱图。

,ezplot:符号函数图。

・fplot:绘制字符串指定的函数名的函

数图。如fplotCsin(x),,[2,3])。

•pie:饼图。

•plotmatrix:绘矩阵点图。

•stem:2维火柴杆图。

•stem3:3维火柴杆图。

20、等高线图和向量图

•contour:等高线图。

•contour3:三维等高线图。

•quiver:向量图。

[x,y]=meshgrid(-2:.2:2,-1:.15:1);

z=x/exp(-x.A2-y.A2);

[px,py]=gradient(z,2);

contour(x,y,z),

holdon

quiver(x,y,px,py)

holdoff

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):增加边界面屏蔽。

•stem3:三维火柴干图。例

a=rand(3);

stem3(a);

22、固体模型

•cylinder:生成圆柱。格式为

[x,y,z]=cylinder(QH)J为母线半

径,N为显示的母线条数

mesh(x,y/)或surf(x,y/)显示单位

高度柱面。

t=.l*pi:pi/20:l*pi;

r=5+cos(t);

[x,y/]=cylinder(r,30)

surf(x,y,z)

•sphere:生成单位球面。例

[x,y,z]=sphere(40)%40为子午线条

数,sphere默认为20条。

mesh(x,y,z)或surf(x,y/)%画球面

axis(6equaP)%坐标轴刻度相同

•[x,y,z]=sphere(50);mesh(x+l,y+2,z+2)画出以(1,

2,2)为中心半径为1的森面;

•[x,y,z]=sphere(50);mesh(x,y,abs(z))画出以(0,0,0)

为中心半径为1的上半个球面;

•[x9y,z]=sphere(50);

mesh(2*x,2*y,2*abs(z)),画出以(0,0,0)为中

心的半径为2上半个球面;

[x,y9z]=sphere(50);

•mesh(2*x,2*y,2*abs(z)),画出以(0,0,0)为中

心的半径为2上半个球面;

例、绕地球运动的飞行物

•[x,y,z]=sphere(50);

•mesh(x,y,z);

•holdon

•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,xl,yl,zl):按数

组xl,yl,zl切片(按坐标轴单位)。

(3)slice(w,xl,yl,zl):按数组xL

yl,zl切片(按x,y,z的网格单位进行切片。

(4)slice(w,sx,sy,sz):按x,y,z的网

格单位进行切片。

例、程序如下:

[x,y,z]=meshgrid(-2:0.2:2,-2:0.25:2,-2:0.16:2);

w=x.A2+y.A2+z.A2;

%slice(x,y,z,a,x,y,z)

x1=1:15;

y1=1:10;

z1=1:10

subplot(221),slice(x,y,乙w,1

subplot(2,2,2),slice(w,1,1,[0,1]);

subplot(2,2,3),slice(x,y,z,w,x1,y1,z1);holdon

subplot(2,2,4),slice(w,x1,y1,z1);

colorbar%色轴,它可以标注颜色与数值之间的关系

24、数据文件

(1)Sav

温馨提示

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

评论

0/150

提交评论