第二章MATLABWord文档下载推荐.docx

上传人:b****6 文档编号:21858914 上传时间:2023-02-01 格式:DOCX 页数:15 大小:68.36KB
下载 相关 举报
第二章MATLABWord文档下载推荐.docx_第1页
第1页 / 共15页
第二章MATLABWord文档下载推荐.docx_第2页
第2页 / 共15页
第二章MATLABWord文档下载推荐.docx_第3页
第3页 / 共15页
第二章MATLABWord文档下载推荐.docx_第4页
第4页 / 共15页
第二章MATLABWord文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

第二章MATLABWord文档下载推荐.docx

《第二章MATLABWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第二章MATLABWord文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

第二章MATLABWord文档下载推荐.docx

行列式:

det(A)

此外,在矩阵求特征值,LU分解等诸多方面,MATLAB都提供了大量丰富的专用函数和指令,使得用户可以用计算公式的形式来解决Fortran、C等语言中须通过复杂编程来求解的问题。

读者可以通过运行本书提供的chp2_1.m程序来体会MATLAB中矩阵计算的一些基本方法。

%=======Programchp2_1=========

%--------BasiocModule--------

clcdisp('

Matrixexpression'

disp('

A=[123;

456;

789]:

'

a=[-1.3/7sqrt(4.5)2+3i]:

a=[-1.3/7sqrt(4.5)2+3i]

MatrixTurn:

B=A'

pause

clc

C=[A;

a]:

C=[A;

a]

x=C(:

2):

x=C(:

2)

C=A+A:

C=A+A

B=A*E(Eisan3x3Identitymatrix):

B=A*eye(3)

321;

125]

B=[-29-15;

615-21;

-611-2]

Ax=B=====>

x=A\B:

x=inv(A)*B

thedeterminantofthesquarematrixxis'

det(x)

2.2.2多项式计算

MATLAB中以向量形式进行多项式的表示和计算。

如多项式x2+3x+2表示为x=[132]

4y3+2y2+6表示为y=[4206]

上述两个多项式的乘积,可以

z=conv(x,y)

求得为z=[41414101812]

表示相乘后的多项式为4x5+14x4+14x3+10x2+18x+12

相反,如欲求多项式的分解,则可用dconv指令。

如用y=deconv(z,x)求得。

y=[4206]

此外,还有:

求根,对多项式x2+3x+2=0

可用roots(x)求得

rootofx=-2

-1

反之,也有polynom=poly(rootofx)

=132

求函数值,可以polyval(x,5)求出x=5时,x2+3x+2的值。

如:

Pa=polyval(x,5)

得:

Pa=42

有关计算机程序参见chp2_2.m

%polyval-Evaluatepolynomial.%polyvalm-Evaluatepolynomialwithmatrixargument.%residue-Partial-fractionexpansion(residues).%polyfit-Fitpolynomialtodata.%polyder-Differentiatepolynomial.

%=========ProgramBM_2===========

%---------Polynomial------------

clc

disp('

Polynomialexpression'

'

polynomialx^2+3x+2and4y^3+2y^2+6:

x=[132]

Multiplypolynomials-->

z=conv(x,y):

z=conv(x,y)

Dividepolynomials-->

y=deconv(z,x):

y=deconv(z,x)

pause

polynomialx^2+3x+2:

Findpolynomialroots-->

roots(x):

rootofx=roots(x)

Convertrootstopolynomial-->

poly(roots):

polynom=poly(rootofx)

Evaluatepolynomial-->

Pa=polyval(x,a);

a=5:

EndofBM_2'

2.2.3函数功能

MATLAB提供丰富的函数功能,基本函数例如下连几个表中。

表2.1三角函数表2.2基本函数

sin

正弦

abs

绝对值、模

cos

余弦

angle

相角

tan

正切

sqrt

平方根

asin

反正弦

real

实部

acos

反余弦

imag

虚部

atan

反正切

conj

复数共轭

sinh

双曲正弦

fix

向零取整

cosh

双曲余弦

floor

向负无穷取整

tanh

双曲正切

ceil

向正无穷取整

asinh

反双曲正弦

sign

根据符号取值函数

acosh

反双曲余弦

rem

求余数

a+anh

反双曲正切

exp

指数函数

log

自然对数

log10

常用对数

2.2.4图形处理

图形是人们通过视觉观察和分析数据间内在关系的一个重要途径,在MATLAB中,可以通过数据点、曲线、曲面、线型、色彩等诸多手段表现数据的性状,获得良好的数据和函数图形处理的基本机能和规律。

(1)二维绘图

二维绘图的最基本指令是plot,它是以一定的线型(线条或标记,颜色)把一组成对的数据表示在x-y坐标面上,其格式为:

plot(x,y,Line-type)

例2.1曲线绘制y1=sin(t),y2=cos(t),y3=e-(0.1+t)

程序chp2_3.m

%===========ProgramBM_P2===========

t=0:

0.05:

3*pi;

y1=sin(t);

y2=cos(t);

y3=exp(-(0.1+t));

plot(t,y1,'

r'

t,y2,'

+g'

t,y3,'

b'

title('

Myfirstplot'

xlabel('

Numberofpointst'

ylabel('

r:

sin(t)g:

cos(t)b:

exp(-0.1-t)'

grid

EndofBM_P2'

执行结果如图2.1所示。

(2)三维绘图

三维绘图主要包括三维空间曲线,三维网线图和曲面图,基本格式为:

三维空间曲线plot(x,y,z.Line-type)

三维网线图Mesh(z);

Mesh(x,y,z).

三维曲面图Surf(z);

Surf(x,y,z).

例2.2用三维网线图、曲面图表示函数

(参见程序chp2_4.m)

%=========Programchp2_4.m===========

%准备数据

x=-8:

.5:

8;

y=x'

;

X=ones(size(y))*x;

Y=y*ones(size(x));

R=sqrt(X.^2+Y.^2)+eps;

Z=sin(R)./R;

figure

(1)

mesh(Z)%三维网线图

No.1mesh(z)'

figure

(2)

surf(X,Y,Z)%曲面图

figure(3)

contour(X,Y,Z,20)%等高线图(平面)

figure(4)

contour3(X,Y,Z,20)%等高线图(空间)

figure(5)

contourf(X,Y,Z,20)

 

图2.2三维网线图

曲面图和等高线图请自己运行程序演示。

2.2.5拟合与插值

拟合与插值是科学研究和工程技术中处理数据的常用手段,所谓拟合(fitting)是指寻找一条“平滑”的曲线最不失真地去表现带噪声的“测量数据”,其原理是线性最小二乘。

而插值(Interpolation)则是在认定所给“基准数据”完全正确的前提下,“平滑”地估算出“基准数据”点之间其它点应当具有的函数值,其数学基础是差分。

其中比较常用的样条插值,是设每两个相邻样本之间是一条三次多项式曲线,且整个样本区间上具有连续的一阶和二阶导数。

本节中以几个例题来说明曲线拟合与插值的MATLAB实现。

例2.3曲线拟合。

设已获得一组实验数据如表2.3

表2.3实验实测数据

x

1

2

3

4

5

y

1.1

4.1

5.3

9.8

19.9

可以用pf=polyfit(x,y,n),来获得拟合曲线。

其中,n是拟获得的多项式的阶数,而pf为所得多项式系数,运行程序chp2_5.m(程序中分别设n1=1,n2=2),执行结果于图2.3所示。

%========Programchp2_5.m=========

%---------Curvefitting-----------

InputData--x;

OutputData--y:

x=[0,1,2,3,4,5]

y=[0,1.1,4.1,5.3,9.8,19.9]

%figure

plot(x,y,'

or'

holdon

pf1=polyfit(x,y,1)

px1=polyval(pf1,x)

plot(x,px1,'

g'

%

pf2=polyfit(x,y,2)

px2=polyval(pf2,x)

%plot(x,y,'

o'

x,px2,'

plot(x,px2,'

holdoff

其n1=1时,拟合得一条直线。

pf1=[3.6229-2.3571]

即曲线方程式为

y1=3.6x-2.36。

n2=2时,拟合得一条二次曲线。

pf2=[0.9107-0.93070.6786],

y2=0.91x2-0.93x+0.68

图2.3曲线拟合

例2.4一维插值,设有一组数据

x=0:

1:

9

y=[00.90.6100.1-0.3-0.7-0.9-0.2]

要求在上述十个样本点间,产生另外的估计点以达到数据更为平滑的效果(这种技术在信号处理和图像处理中常有应用)。

可以通过MATLAB中的指令y=interp1(xs,ys,x,method’)来完成。

上述指令中,interp1表示一维插值,相应interp2、interp3对应于二维和三维插值,此外还有interpft,interpn指令等。

xs,yx为已有样本数据时x,y为插值产生向量,method有包含4种,其中spline(样条插值)输出结果最平滑,上述问题的程序如下:

y=[00.90.610.1-0.3-0.7-0.9-0.2];

length(y)-1;

%x等距

x1=0:

0.1:

%每两相邻点间插入9点。

y1=interp1(x,y,x1,spline);

+r'

x1,y3,'

程序见chp2_6.m,程序执行结果如图2.4所示。

图2.4一维插值

例2.5假设有一组海底深度测量数据(本文中采用程序产生的随机数据),采用插值方式绘制更细致平滑的海底形状图。

(1)通过随机数据产生一组分度稀疏的“海底深度测量数据”

randn(state,2)

x=-5:

5;

y=-5:

[x,y]=meshgrid(x,y),%产生“经纬”矩阵。

zz=1.2*exp(-((x-1)^2+(y-2).^2))-0-7*exp(-(x+2)^+(y+1)^2));

z=-500+zz+randn(size(x))*0.05

xurf(x,y,z);

view(*-25,25)

得到据随机产生数据为基准数据绘制的曲面图

(图2.5(a))

(2)通过插值,画出更细致平滑的海底图

xi=linspace(-5.5,50);

yi=linspace(-5,5,50);

[x1,y1]=meshgrid(xi,yi);

z1=interpz(x,y,z,x1,y1,*cubic’);

surf(x1,y1,z1),vies(-25,25);

得图2.5(b)

a、据基准数据绘制的曲面图b、由插值数据生成的曲面图

图2.5海底形状图

2.2.6常微分方程求解

在科学研究和工程技术中,许多问题常常在数学上以常微分方程(OrdinaryDifferentialEquations)表示。

这类问题往往没有或很难求得解析解,从而只得借助于数值求解。

常微分方程的求解可分为初值问题和边值问题两类。

后者的求解比前者更为困难,必须具体问题具体处理,而且其中相当一部分最后是转化为前者求解。

控制工程遇到的问题基本上全是初值问题。

MATLAB为常微分工程初值问题提供了一组配套齐全、结构严整的指令,称之为ODE解题器(Solver),可以在给定初始时间及条件下,通过数值方法计算每个程序步骤的解。

对于一个常微分方程,如y(n)=f(t,y,y‘,y‘’.....)。

MATLAB分以下三步来求解。

把高阶微分方程转化成一阶问题。

利用代换法,令:

y1=y;

y2=y’(2.2.6-1)

y3=y,,

yn=y(n-1)

从而把一个高阶微分方程转换成一个一阶微分方程组。

y1=y2;

y2=y3(2.2.6-2)

y

:

yn-1=yn

第二步应用能计算函数的M函数文件(MATLAB中称之为ODE文件)来描述式(2.2.6-2)。

例2.6建立y,,,+y,,+y,=0的ODE文件。

令y1=y,y2=y,,y3=y,,

则y,,,+y,,+y,=0等同于

于是,ODE文件为:

functionydot=dlfun(t,y);

ydot=[y

(2);

y(3);

-y(3)-y

(2)];

第三步应用解题器(solver)求解y的数值解。

solver的指令格式为:

[t,y]=solver(’F’,tspan,y0)

上式中,solver是ode45,ode23等具体指令的统称,如ode45表示用4-5阶Runge-kntta方法求解,具体详细说明请参见有关参考书或在线帮助说明。

F是描述常微分方程的ODE文件。

tspan=[totf]定义求数值解的时间区域y0为初始状态值,以向量形式表示。

例2.7用ode45求解例2.7的微分方程

程序为chp2_8.m

%=========Programchp2_8============

clear

y0=[10;

1;

0];

options=odeset('

OutputFcn'

'

odephas3'

OutputSel'

[123],'

refine'

20);

[t,y]=ode45('

d1fun'

[0120],y0,options);

y

(1)'

y

(2)'

zlabel('

y(3)'

执行结果。

图2.6例2.7题计算结果

本节中仅对MATLAB的基本计算与图形功能做了一些简单的介绍,事实上,除了上述方面外,MATLAB在概率统计,代数方程、符号计算、数值求导等方面都具有很强的功能,此外,MATLAB不仅象C、FORTRAN那样具有流程控制(如for循环、switch语言)逻辑运算、子程序调用、文件处理等功能,而且具有与C、FORTRAN、汇编语言程序的良好的接口功能。

然而,考虑到一方面目前国内介绍MATLAB基本功能的书籍已有不少,读者不难找到参考书籍。

另一方面MATLAB程序的储多功能及指令与C、FORTRAN等有相似之处,程序本身亦具有良好的可读性,相信读者不难在实际应用过程中领会和掌握。

其三,也许是更重要的一点,是MATLAB自身拥有很强的帮助系统,可以以多种形式提供帮助和引导(见2.3节)。

因此,本书对MATLAB的基本功能仅做大概介绍。

2.3MATLAB的帮助系统

2.3.1帮助系统构成

MATLAB的帮助系统由以下几个部分构成。

(1)随MATLAB内建函数、M函数文件、目录而建立的在线帮助文件。

(2)HTML超文本形式的帮助文件。

(3)PDF形式的帮助文档。

(4)WWW站点所提供的技术支持。

2.3.2在线帮助

MATLAB的在线帮助文件自动随主包、工具包同时被安装、查阅简单、方便,对新老用户都有十分重要的作用,有以下几个方面。

(1)在线入门引导。

(intro)

MATLAB初学者,可以在MATLAB指令图中运行intro指令进入“SlideshowPlayer”学习MATLAB的入门操作。

(2)在线演示。

(demo)

MATLAB提供了一组精心设计的演示程序,其中包括对基本部分及各工具箱的指令及功能的说明与示范,对理解指令和指导编程有十分重要的作用。

可以通过运行指令demos,打开窗口“MATLABDemoWindow”,然后选择相应内容观看演示。

(3)在线帮助。

(help)

在线帮助help命令有三种应用形式。

1)help+指令名。

(如helpplot)将给出该指令的具体说明。

2)help,运行不带任何限定的help,将提供分类明细表,使用户了解

MATLAB中有哪些门类。

3)help+topics。

从分类明细表后得到具体子类名称(topics)后可进一步用help+topics了解该子类的操作指令一览表。

如用help命令后,可找到有关矩阵的门类为:

matlab\elmat_Elementarymatricesandmatrixmanipulation,然后,可用helpelmat指令再查换有关矩阵的指令。

________________________________________

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

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

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