文档库 最新最全的文档下载
当前位置:文档库 › MATLAB基础教程

MATLAB基础教程

MATLAB基础教程
MATLAB基础教程

MATLAB基础教程

全局变量

如果你要多于一个函数共用一个简单的变量,简单的处理方法就是把这个变量在所有函数中定义为global全局变量。在命令行做同样的事情,如果你要工作空间访问上述变量。这个全局变量的定义必须出现在变量被应用于一个函数之前。虽然不是要求,但全局变量也最好以大写字母开头,这样可以同其他变量区别出来。举个例子,做一个以falling.m命名的M-文件。

function h = falling(t)

global GRAVITY

h = 1/2*GRAVITY*t.^2;

然后交互地输入语句

global GRAVITY

GRAVITY = 32;

y = falling((0:.1:5)');

这两个变量在函数中表示同一个内容。之后你可以交互地修改GRVITY并获得新的解法,而不用再编辑文档。

函数

函数是可以定义输入参数或返回输出变量的M-文件。M-文件和函数的名称必须一致。函数只执行自己工作空间内的变量,对于超越工作范围的变量,你要使用MATLAB命令提示符。

rank是一个很好的例子。rank.m文件可以在toolbox/matlab/matfun目录里获得。

toolbox/matlab/matfun

可用以下命令查看文件

type rank

以下是文件内容。

function r = rank(A,tol)

% RANK Matrix rank.

% RANK(A) provides an estimate of the number of linearly

% independent rows or columns of a matrix A.

% RANK(A,tol) is the number of singular values of A

% that are larger than tol.

% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.

s = svd(A);

if nargin==1

tol = max(size(A)') * max(s) * eps;

end

r = sum(s > tol);

函数M-文件的第一行以关键字function开头。它给出函数名和变元的顺序。在此情况下,有最多两个输入变元和一个输出变元。

下面的几行,到第一个空格或可执行,都是提供帮助文本的注释行。输入以下语句则把这些行输出

help rank

帮助文件的第一行是H1行,当你用lookfor命令或在目录请求帮助时MATLAB会显示出。

文件其余部分是定义函数的可执行MATLAB代码。类似第一行的变量r,A和tol,函数体中引入的变量s对于函数也是局部变量;它们在MATLAB工作空间里独立于任何变量。

此例说明了MATLAB不同于其他程序语言的一个方面--一个可变的变元数目。有几种方法可以使用rank函数。

rank(A)

r = rank(A)

r = rank(A,1.e-6)

许多M-文件都这样工作。若无输出变元提供,结果保存于ans。若第二个输入变元未提供,则函数计算一个默认值。在函数体内,有两个名为nargin和nargout的数量可用,它们告诉你在某特定应用中输入或输出的变元个数。rank函数用nargin,不用nargout。

脚本

当调用一个脚本时,MATLAB会简单地执行文件中找到的命令。脚本可以运行工作空间中存在的数据,或者脚本创建新数据来运行。虽然脚本不能返回输出变量,但是所有创建的变量将保留在工作空间中,供给后面的计算使用。另外,脚本能提供图形输出,就像使用plot 函数一样。

例如,创建一个叫magicrank.m的文件,它包含有MATLAB的命令。

% Investigate the rank of magic squares

r = zeros(1,32);

for n = 3:32

r(n) = rank(magic(n));

end

r

bar(r)

输入语句

magicrank

让MATLAB执行这个命令。首先,计算出前30个魔方的秩,然后用柱状图输出结果。文件的命令执行完毕后,变量n和r保留在工作空间里。

创作电影

在布朗运动的例子中,若增加点的数目,例如n = 300及s = .02, 运动就不是很流畅了;完成每一步要花太多时间。这时,如果保存预定数目的画面为位图并以电影方式回放则会比较有效。

首先,确定画面数,譬如

nframes = 50;

然后,跟往前一样设定第一幅图,不是用默认的EraseMode (正态).

x = rand(n,1)-0.5;

y = rand(n,1)-0.5;

h = plot(x,y,'.');

set(h,'MarkerSize',18);

axis([-1 1 -1 1])

axis square

grid off

生成电影并用getframe捕捉每一画面。

for k = 1:nframes

x = x + s*randn(n,1);

y = y + s*randn(n,1);

set(h,'XData',x,'YData',y)

M(k) = getframe;

end

最后,放映电影30次。

movie(M,30)

查找现有的对象句柄

用命令findobj可以通过搜索带特定属性值的对象得到图形对象的句柄。用findobj,可以指定任何属性组合的值,这样要从多个对象选出一个就变的容易。例如,可能需要找出带有正方标记蓝色外观的蓝线。

也可以指定搜索哪个图形或轴。以下各节提供示例阐述如何用findobj命令。

查找所有某类型的对象

由于所有对象都具有一个用来辨别类型的类型属性,你可以查找所有某特定类型对象事件的句柄。例如,

h = findobj('Type','line');

查找所有线对象的句柄。

查找某特定属性的对象

可以指定多个属性以缩窄搜索范围,例如,

h = findobj('Type','line','Color','r','LineStyle',':');

查找所有红色点线的句柄。

限制搜索范围

可以在通过把开始的图形或轴的句柄作为第一变元给对象等级指定开始点,例如,

h = findobj(gca,'Type','text','String','\pi/2');

只在当前轴下查找字符串/2 。

把findobj用作变元

由于findobj返回所找到的句柄,你可以用它来替换句柄变元,例如,

set(findobj('Type','line','Color','red'),'LineStyle',':')

找出所有红线及设定线型为点线。

设定对象属性

所有对象属性都有默认值。然而,改变一些属性设置以定制图形可能有用。有两个途径可以设定对象属性:

创建对象时指定属性值。

在现有的对象中设置属性值

从作图命令设定属性

类似作图函数,在诸如plot, mesh, 和surf的创建对象用的函数也可以指定对象属性值为变元。

例如,可以用创建线或表面的作图命令来指定属性名称和属性值为二元变元。命令

plot(x,y,'LineWidth',1.5)

以x和y为变元作出数据图,用到具有LineWidth 属性且设为1.5点(1点=1/72英寸)的线。可以用此法设定任何线对象。

设定现有对象的属性

要修改现有对象属性值,可以用set命令,如若作图编辑模式已打开,则可用属性编辑器。属性编辑器对许多对象属性提供图形用户界面。本节描述如何用设置命令。详见属性编辑器的使用。

很多作图命令可以返回所建对象的句柄,这样你可以用set命令修改对象。例如,下列语句创立一个5*5矩阵(创立5行,每行一列),然后设置Marker为正方形并设MarkerFaceColor为绿色。

h = plot(magic(5));

set(h,'Marker','s',MarkerFaceColor','g')

在此情形下,h是一个包含5个句柄的向量,每个句柄代表图形中五行之一。语句set 设置每一行的Marker和MarkerFaceColor为同一个值。

设置多个属性值

若要对每条线的属性设置另一个值,可以用单元数组来储存所有数据并把它传给set命令。例如,创建一幅图并保存线句柄。

h = plot(magic(5));

假如要对每条线添加不同的标记并对标记外观填上与线相同的颜色,则须定义两个单元数组,一个包含属性名,另一个则包含想设的属性值。

单元数组prop_name包含两个元素。

prop_name(1) = {'Marker'};

prop_name(2) = {'MarkerFaceColor'};

prop_values 单元数组包含10个值-5个表示表示Marker标记属性,另5个表示MarkerFaceColor属性。注意prop_values是一个二维单元数组。第一维表示不同值赋给h 中的哪个句柄,第二维表示值赋给哪个属性。

prop_values(1,1) = {'s'};

prop_values(1,2) = {get(h(1),'Color')};

prop_values(2,1) = {'d'};

prop_values(2,2) = {get(h(2),'Color')};

prop_values(3,1) = {'o'};

prop_values(3,2) = {get(h(3),'Color')};

prop_values(4,1) = {'p'};

prop_values(4,2) = {get(h(4),'Color')};

prop_values(5,1) = {'h'};

prop_values(5,2) = {get(h(5),'Color')};

MarkerFaceColor 总是把值赋给对应的线的颜色的(该颜色通过用get命令设置线的Color(颜色)属性得到)。

定义了单元数组后,调用set命令来指定新的属性值。

set(h,prop_name,prop_values)

图形对象

图形对象是用以显示图形和用户界面元素的基本元素。下表列出了各种图形对象。

对象级别

不同对象分布在一个树形结构级别里,反映它们的独立性。例如,线对象是在轴对象的框架下的。依次,轴对象只存在于figure对象中。以下图表阐明了这种树形结构。

图形的打印

你能直接在一台已连接到你的计算机上的打印机上打印一个MATLAB图形,或输出图形到一种MATLAB所支持的图象文件格式。这里提供两种打印或输出图形的方法。

在File菜单下用Print选项

用print命令

从菜单打印

在File菜单下方有四个菜单选择是关于打印的。

Page Setup选项显示一个对话框, 它使你能调整打印页图形的特征。

Print Setup选项显示一个对话框,它设置打印默认值, 但是实际上不打印图形。

Print Preview选项使你能查看到打印出来页面的样子。

Print选项显示一个对话框,它让你选择标准打印选项然后打印图形。

通常, 使用Print Preview确定打印的输出是否你想要的效果。如果不是,使用Page Setup 对话框来改变输出设置。选择Page Setup对话框的Help按钮以显示如何设置页面的帮助信息。

输出图形到图形文件

在文件菜单之下的Export选项使你能输出图形到多种标准图形文件格式。

用打印命令

print命令在输出的类型上提供更多的适应性送到打印机,并允许你到从M-文件控制打印。结果能直接送到你的默认打印机或保存到特定文件。多样化的输出格式,包括TIFF, JPEG 和PostScript都可用到。

例如, 以下语句将当前的图形窗口的内容保存到压缩2级PostScript颜色的文件,名字是magicsquare.eps。这也包括TIFF预览,能使大多数文字处理器显示这图画。

print -depsc2 -tiff magicsquare.eps

要用200dpi的分辨率把图像保存为TIFF文件,用命令

print -dtiff -r200 magicsquare.tiff

若在命令行中输入print,

print

MATLAB就在默认打印机上打印当前图形。

要显示以下双变量函数z = f (x,y)的图像:

分别对函数的定义域生成含有重复行与列的X和Y矩阵。

用X和Y来计算函数的图像。

函数meshgrid把由单向量或双向量x,y指定的定义域变换成矩阵X和Y,以用于计算双变量函数。X的行和Y的列分别是x和y向量的复制。

举例-sinc函数图像

此例计算并作出sinc函数sin(r)/r的在x和y方向间的图象。R是到原点的距离,出现在矩阵中心。添加eps(在系统中返回最小值的MATLAB命令)以避免在原点处出现0/0的不定型。

[X,Y] = meshgrid(-8:.5:8);

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

Z = sin(R)./R;

mesh(X,Y,Z,'EdgeColor','black')

在默认的情况下, MATLAB用通用流行的颜色对网孔进行着色,不过,这例子只使用单一的颜色着色网孔并且选定了EdgeColor 的表面属性。查看surface参考页可以看到全部的表面属性。

可以通过把原来的隐藏线显露出来建立一个透明的网孔。

hidden off

查看hidden参考页可以得到更多的关于这个操作的信息。

例子—为表面小块着色Example - Colored Surface Plots

表面小块和网孔小块的情形是相似的,除了表面小块的矩形的外观是有色的.它的颜色是由Z和colormap(colormap是一个颜色的顺序列表)的值所确定的 . 这些陈述用表面图来表示sinc函数的图像, 选择一种颜色, 然后添加颜色条使表示映射数据的图象得到颜色。

surf(X,Y,Z)

colormap hsv

colorbar

看colormap参考页以得到颜色图的信息。

带光照的表面图

光照是一种利用方向光源照亮物体的技术。在某些情况下,这技术能使表面微妙的差异更容易的看到。光照也能用来对三维的图象增加现实感。

这例子使用同前一个例子一样的表面,但是涂上了红色并且移除了网孔线。一个发光的物体被加到了"镜头"的左边(那是你从空间观看那个表面的位置)。

增加光源和设置好照明方式到phong后,使用view命令去改变视角,因而你从空间的另一个不同的点在观看表面(方位角-15和仰角65度). 最后, 用工具栏缩放方式放大外观。

surf(X,Y,Z,'FaceColor','red','EdgeColor','none');

camlight left; lighting phong

view(-15,65)

图形的编辑

MATLAB在一个图形中提供了可读性,设定轴的比例(包括单位长度),使用颜色及线型区

分图形的格式。然而,如果要创建用于介绍的图形,可能需要改变这些默认格式或添加描述性标签,符号,图例或其他注释以助解释数据。

MATLAB支持两种编辑所建图形的途径。

用鼠标交互地选择并编辑对象

在命令行或M-文件中用MATLAB函数

交互式的作图编辑

若在MATLAB的Figure窗口中打开作图编辑模式,就可以在图形中向对象作鼠标指向和点击的编辑。在这模式里,双击选择要编辑的对象。这就打开了属性编辑器,它提供了可编辑的对象属性,这些属性控制了对象的外观和性能。

关于交互式编辑的更多内容见作图编辑模式的使用。有关在作图编辑模式中编辑对象属性的信息见属性编辑器的使用。

注意作图编辑模式对访问MATLAB的图形对象属性提供了可选的途径。然而,在此机制中只能访问对象属性的一个子集。要达到所要求的效果,可能需要组合使用交互式编辑及命令行编辑。

用函数编辑图表

若你更喜欢用MATLAB的命令行工作或在创建M-文件,你可以用MATLAB命令编辑所建图形。使用MATLAB的句柄图形系统,则可以用set或get命令改变图形中的对象属性。关于使用命令行的更多内容见句柄图形

Figure的保存

要保存图形,从File菜单选择Save。要用图形格式如TIFF保存,以便在其他应用中使用,

则从File菜单选择Export。还可以从命令行中保存-用saveas命令,包括任何以其他格式保存图象的选项。

Getting Started

轴的标签与标题

用xlabel, ylabel, 及zlabel 命令添加x-,y-,z-等标签。用title 命令在图象顶部加标题,用text 函数在图象中任何部位添加文本。TeX标记的子集则产生希腊字母。可以交互地设置这些选项。详见图形的编辑。

t = -pi:pi/100:pi;

y = sin(t);

plot(t,y)

axis([-pi pi -1 1])

xlabel('-\pi \leq {\itt} \leq \pi')

ylabel('sin(t)')

title('Graph of the sine function')

text(1,-1/3,'{\itNote the odd symmetry.}')

matlab入门经典范例

num1=[13]; den1=conv([1,1],[1,0]); G1=tf(num1,den1); num2=[5.096,13]; ssys1=conv([1,1],[1,0]); ssys2=conv([0.098,1],[1]); den2=conv( ssys1,ssys2); G2=tf(num2,den2); figure(1) margin(G1); hold on margin(G2); num1=[13]; den1=conv([1,1],[1,0]); G1=tf(num1,den1); num2=[5.096,13]; ssys1=conv([1,1],[1,0]); ssys2=conv([0.098,1],[1]); den2=conv( ssys1,ssys2); G2=tf(num2,den2); figure(1) margin(G1); hold on margin(G2); num=[4.56,10]; ssys1=conv([1,1],[1,0]); ssys2=conv([0.114,1],[1]); den=conv( ssys1,ssys2); G=tf(num,den); figure(1) bode(G) num=[4.56,10]; ssys1=conv([1,1],[1,0]); ssys2=conv([0.114,1],[1]); den=conv( ssys1,ssys2); G=tf(num,den); figure(1) msrgin(G); num1=[13]; den1=conv([1,1],[1,0]);

matlab入门教程

MATLAB入门教程 1.MATLAB的基本知识 1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示:MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2); 若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle)

Matlab基础教程

1-1、基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可。例如: >> (5*2+1.3-0.8)*10/25 ans =4.2000 MATLAB会将运算结果直接存入一变数ans,代表MATLAB运算後的答案(Answer)并显示其数值於萤幕上。 小提示: ">>"是MATLAB的提示符号(Prompt),但在PC中文视窗系统下,由於编码方式不同,此提示符号常会消失不见,但这并不会影响到MATLAB的运算结果。 我们也可将上述运算式的结果设定给另一个变数x: x = (5*2+1.3-0.8)*10^2/25 x = 42 此时MATLAB会直接显示x的值。由上例可知,MATLAB认识所有一般常用到的加(+)、减(-)、乘(*)、除(/)的数学运算符号,以及幂次运算(^)。 小提示: MATLAB将所有变数均存成double的形式,所以不需经过变数宣告(Variable declaration)。MATLAB同时也会自动进行记忆体的使用和回收,而不必像C语言,必须由使用者一一指定.这些功能使的MATLAB易学易用,使用者可专心致力於撰写程式,而不必被软体枝节问题所干扰。 若不想让MATLAB每次都显示运算结果,只需在运算式最後加上分号(;)即可,如下例: y = sin(10)*exp(-0.3*4^2);

若要显示变数y的值,直接键入y即可: >>y y =-0.0045 在上例中,sin是正弦函数,exp是指数函数,这些都是MATLAB常用到的数学函数。 下表即为MATLAB常用的基本数学函数及三角函数: 小整理:MATLAB常用的基本数学函数 abs(x):纯量的绝对值或向量的长度 angle(z):复数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开

Matlab2012教程--经典教程

第1章基础准备及入门 1.1 最简单的计算器使用法 为易于学习,本节以算例方式叙述,并通过算例归纳一些MATLAB最基本的规则和语 法结构。建议读者,在深入学习之前,先读一读本节。 2 【例1.3-1】求[122(74)]3的算术运算结果。本例演示:最初步的指令输入形式 和必需的操作步骤。 (1)用键盘在MA TLAB指令窗中输入以下内容 >> (12+2*(7-4))/3^2 (2)在上述表达式输入完成后,按[Enter] 键,该指令被执行,并显示如下结果。 ans = 2 〖说明〗 本例在指令窗中实际运行的情况参见图 1.3-1。 指令行“头首”的“>>”是“指令输入提示符”,它是自动生成的。本书在此后的输入指令前将不再带提示符“>>”。理由是:(A)为使本书简洁;(B)本书用MATLAB 的M-book写成,而在M-book中运行的指令前是没有提示符的。 5

MATLAB的运算符(如+、- 等)都是各种计算程序中常见的习惯符号。 一条指令输入结束后,必须按[Enter] 键,那指令才被执行。 由于本例输入指令是“不含赋值号的表达式”,所以计算结果被赋给MATLAB的一个默认变量“ans”。它是英文“answer”的缩写。 【例1.3-2】“续行输入”法。本例演示:或由于指令太长,或出于某种需要,输入指令行必 须多行书写时,该如何处理。 S=1-1/2+1/3-1/4+ ... 1/5-1/6+1/7-1/8 S = 0.6345 〖说明〗 MA TLAB用3个或3个以上的连续黑点表示“续行”,即表示下一行是上一行的继续。 本例指令中包含“赋值号”,因此表达式的计算结果被赋给了变量S。 指令执行后,变量S被保存在MA TLAB 的工作空间(Workspace)中,以备后用。如果用户不用clear 指令清除它,或对它重新赋值,那么该变量会一直保存在工作空间中, 直到本MATLAB 指令窗被关闭为止。 1.3.3数值、变量和表达式 前节算例只是表演了“计算器”功能,那仅是MA TLAB全部功能中小小一角。为深入 学习MA TLAB,有必要系统介绍一些基本规定。本节先介绍关于变量的若干规定。 一数值的记述 MATLAB的数值采用习惯的十进制表示,可以带小数点或负号。以下记述都合法。 3 -99 0.001 9.456 1.3e-3 4.5e33 在采用IEEE浮点算法的计算机上,数值通常采用“占用64位内存的双精度”表示。 其相对精度是eps (MATLAB的一个预定义变量),大约保持有效数字16位。数值范围大308308 致从10到10。 二变量命名规则 变量名、函数名是对字母大小写敏感的。如变量myvar和MyVar表示两个不同的变量。 sin是MATLAB定义的正弦函数名,但SIN,Sin等都不是。 变量名的第一个字符必须是英文字母,最多可包含63个字符(英文、数字和下连符)。 如myvar201是合法的变量名。 变量名中不得包含空格、标点、运算符,但可以包含下连符。如变量名my_var_201是合法的,且读起来更方便。而my,var201由于逗号的分隔,表示的就不是一个变量名。 6

(完整word版)matlab_gui初学者教程

什么是GUI呢? GUI是Graphical User Interface 图形用户界面的意思。象很多高级编程语言一样。Matlab也有图形用户界面开发环境。随着计算机技术的飞速发展。人与计算机的通信方式也发生的很大的变化。从原来的命令行通讯方式(例如很早的DOS系统)变化到了现在的图形界面下的交互方式。而现在绝大多数的应用程序都是在图形化用户界面下运行的。 记得读书的时候。大学开学不久。学校很多同学就开始报考全国计算机等级考试了。当然我也是其中的一分子。其中C语言是大多数人选择的科目。当时在学C语言的时候。经常也会遇到人机交互的例子。譬如一个计算两个数相加的程序。运行程序后便切换到了Dos模式。然后在此模式下输入两个数。再回车。才能返回运算结果。当时就觉得很不方便。也不友好。后来才得知C语言是面向过程的语言。是非面向对象的语言(VC++,VB,Matlab等是面向对象的)。那么下面我们就来看看Matlab是如何简单、快速而友好地解决这类问题的吧。 Matlab GUI编程教程(适用于初学者) 1.首先我们新建一个GUI文件:File/New/GUI 如下图所示; 选择Blank GUI(Default) 2.进入GUI开发环境以后添加两个编辑文本框。6个静态文本框。和一个按钮。布置如下图所示;

布置好各控件以后。我们就可以来为这些控件编写程序来实现两数相加的功能了。3.我们先为数据1文本框添加代码; 点击上图所示红色方框。选择edit1_Callback。光标便立刻移到下面这段代码的位置。function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double 然后在上面这段代码的下面插入如下代码: %以字符串的形式来存储数据文本框1的内容. 如果字符串不是数字。 则现实空白内容 input = str2num(get(hObject,'String')); %检查输入是否为空. 如果为空,则默认显示为0 if(isempty(input)) set(hObject,'String','0')

matlab入门经典教程--第四章 数值计算

第四章数值计算 4.1引言 本章将花较大的篇幅讨论若干常见数值计算问题:线性分析、一元和多元函数分析、微积分、数据分析、以及常微分方程(初值和边值问题)求解等。但与一般数值计算教科书不同,本章的讨论重点是:如何利用现有的世界顶级数值计算资源MATLAB。至于数学描述,本章将遵循“最低限度自封闭”的原则处理,以最简明的方式阐述理论数学、数值数学和MATLAB计算指令之间的在联系及区别。 对于那些熟悉其他高级语言(如FORTRAN,Pascal,C++)的读者来说,通过本章,MATLAB 卓越的数组处理能力、浩瀚而灵活的M函数指令、丰富而友善的图形显示指令将使他们体验到解题视野的豁然开朗,感受到摆脱烦琐编程后的眉眼舒展。 对于那些经过大学基本数学教程的读者来说,通过本章,MATLAB精良完善的计算指令,自然易读的程序将使他们感悟“教程”数学的基础地位和局限性,看到从“理想化”简单算例通向科学研究和工程设计实际问题的一条途径。 对于那些熟悉MATLAB基本指令的读者来说,通过本章,围绕基本数值问题展开的容将使他们体会到各别指令的运用场合和在关系,获得综合运用不同指令解决具体问题的思路和借鉴。 由于MATLAB的基本运算单元是数组,所以本章容将从矩阵分析、线性代数的数值计算开始。然后再介绍函数零点、极值的求取,数值微积分,数理统计和分析,拟合和插值,Fourier分析,和一般常微分方程初值、边值问题。本章的最后讨论稀疏矩阵的处理,因为这只有在大型问题中,才须特别处理。 从总体上讲,本章各节之间没有依从关系,即读者没有必要从头到尾系统阅读本章容。读者完全可以根据需要阅读有关节次。除特别说明外,每节中的例题指令是独立完整的,因此读者可以很容易地在自己机器上实践。 MATLAB从5.3版升级到6.x版后,本章容的变化如下: ●MATLAB从6.0版起,其矩阵和特征值计算指令不再以LINPACK和EISPACK库为基础, 而建筑在计算速度更快、运行更可靠的LAPACK和ARPACK程序库的新基础上。因此,虽然各种矩阵计算指令没有变化,但计算结果却可能有某些不同。这尤其突出地表现在涉及矩阵分解、特征向量、奇异向量等的计算结果上。对此,用户不必诧异,因为构成空间的基向量时不唯一的,且新版的更可信。本书新版全部算例结果是在6.x版上给出的。 ●在5.3版本中,泛函指令对被处理函数的调用是借助函数名字符串进行的。这种调用 方式在6.x版中已被宣布为“过渡期允许使用但即将被淘汰的调用方式”;而新的调用方式是借助“函数句柄”进行的。因此,关于述泛函指令,本章新版着重讲述如何使用“函数句柄”,同时兼顾“函数名字符串”调用法。 ●MATLAB从6.0版起,提供了一组专门求微分方程“边值问题”数值解的指令。适应这 种变化,本章新增第4.14.5节,用2个算例阐述求解细节。 ● 5.3版中的积分指令quad8已经废止;6.x版启用新积分指令quad l;6.5版新增三重 积分指令triplequad。本章新版对此作了相应的改变。 4.2LU分解和恰定方程组的解

相关文档