宁波大学数值计算与matlab的实验教程.docx

上传人:b****3 文档编号:3467985 上传时间:2022-11-23 格式:DOCX 页数:77 大小:411.70KB
下载 相关 举报
宁波大学数值计算与matlab的实验教程.docx_第1页
第1页 / 共77页
宁波大学数值计算与matlab的实验教程.docx_第2页
第2页 / 共77页
宁波大学数值计算与matlab的实验教程.docx_第3页
第3页 / 共77页
宁波大学数值计算与matlab的实验教程.docx_第4页
第4页 / 共77页
宁波大学数值计算与matlab的实验教程.docx_第5页
第5页 / 共77页
点击查看更多>>
下载资源
资源描述

宁波大学数值计算与matlab的实验教程.docx

《宁波大学数值计算与matlab的实验教程.docx》由会员分享,可在线阅读,更多相关《宁波大学数值计算与matlab的实验教程.docx(77页珍藏版)》请在冰豆网上搜索。

宁波大学数值计算与matlab的实验教程.docx

宁波大学数值计算与matlab的实验教程

 

第一章MATLAB简介

………………………………………

1

第二章进阶的绘图功能

………………………………………

18

第三章MATLAB函数

………………………………………

24

第四章线性代数与矩阵

………………………………………

32

第五章联立线性方程组

………………………………………

37

第六章内插及曲线拟合

………………………………………

38

第七章方程组的根

………………………………………

43

第八章数值积分与微分

………………………………………

46

第九章常微分方程组

………………………………………

49

第十章 MATLAB的数值计算实习

………………………………………

52

第一章MATLAB简介

1.1MATLAB的视窗环境

进入MATLAB之后,会看道到一个视窗MATLABCommandWindow称为指令视窗,它是你键入指令的地方也是MATLAB将计算结果显示在此。

而在它的功能菜单一共有File,Edit,View,Web,Windows,Help六个主要功能,每一个之下各又有下一层的功能,我们会在后面相关的地方说明。

 

1.2简易数学

我们先从MATLAB的数学运算开始说明。

就像你的计算器一样,数学式的计算是直接了当。

如果我们要算1+2+3及1×10+2×20+3×30这二个式子,以下例子接著提示符号>>之后的是要键入的算式,MATLAB将计算的结果以ans显示。

如果算式是x=1+2+3,MATLAB将计算的结果以x显示。

>>1+2+3

ans=

6

>>1*10+2*20+3*30

ans=

140

>>x=1+2+3

x=

6

如果在上述的例子结尾加上’;’,则计算结果不会显示在指令视窗上,要得知计算值只须键入该变量值即可

>>x=1+2+3;

>>x

x=

6

以下的例子,显示MATLAB对使用变量的弹性

>>apple=5

apples=

5

>>orange=10

orange=

10

>>total_cost=apple*2+orange*4

total_cost=

50

>>average_cost=total_cost/(apple+orange)

average_cost=

3.33334

MATLAB提供基本的算术运算有:

加(+)、减(-)、乘(*)、除(/)、幂次方(^),范例为:

5+3,5-3,5*3,5/3,5^3

其它在计算常用的功能我们来看一个算式来说明。

要计算面积Area=

半径r=2,则可键入(Matlab中pi专指

,是保留字,不能当变量)

>>r=2;

>>area=pi*r^2;

>>area=

12.5664

我们也可以将上述指令打在同一行,以,或是;分开,例如

>>r=2,area=pi*r^2

>>r=2;area=pi*r^2;

请注意上述二式的差异,前者有计算值显示,而后者则无。

如果一个指令过长可以在结尾加上...(代表此行指令与下一行连续),例如

>>r=2;

>>area=pi...

*r^2

另外一个符号注解是由%起头,也就是说在%之后的任何文字都被视为程序的注解。

注解的功能是简要的说明程序的内容,过多的注解在程序中或许没有必要,但是我们写程序时往往用了太少的注解。

任何可能产生混淆的地方都应该省用注解,将适量的注解可在往后想了解程序时能节省一些不必要的时间与「有看没有懂」的痛苦。

例如

>>r=2;%键入半径

>>area=pi*r^2;%计算面积

MATLAB可以将计算结果以不同的精确度的数字格式显示,我们可以在指令视窗上的功能菜单上的Options下选NumericalFormat,或者直接在指令视窗键入以下的各个数字显示格式的指令,以π值为例

指令

数字值

说明

formatshort

3.1416

预设的4位有效小数位数

formatlong

3.14159265358979

15位有效小数位数

formatshorte

3.1416e+000

4位有效小数位数加上指数表格式

1.3变量

MATLAB对使用变量名称的规定:

1.变量名称的英文大小写是有区别的(apple,Apple,AppLe,三个变量不同)。

2.变量的长度上限为19个字元。

3.变量名的第一个字必须是一英文字,随后可以掺杂英文字、数字或是底线。

以下列出MATLAB所定义的特别变量及其意义

变量名

意义

help

线上说明,如helpquit

who

列出所有定义过的变量名称

ans

最近一次计算结果的变量名

eps

MATLAB定义的正的极小值=2.2204e-16

pi

内建的π值

inf

∞值,正无穷大

NaN

不定值

i或j

虚数单位

Version

MATLAB版本

NARGIN

函数输入参数的个数

NARGOUT

函数输出参数的个数

1.4其它功能

MATLAB利用了↑↓二个光标键可以将所下过的指令叫回来重覆使用。

按下↑则前一次指令重新出现,之后再按Enter键,即再执行前一次的指令。

而↓键的功用则是往后执行指令。

其它在键盘上的几个键如→←,Delete,Insert,其功能则显而易见,试用即知无须多加说明。

当要暂时执行操作系统(例如Dos)的指令而还要执行MATLAB,可以利用!

加上原操作系统的指令,例如!

dir,!

formata:

键入who可以查看所有定义过的变量名称。

而键入clear则是去除所有定义过的变量名称;如果只是要去除x及y二个变量则可以键入clearxy。

Ctrl-C(即同时按Ctrl及C二个键)可以用来中止执行中的MATLAB的工作。

1.5在线帮助

在MATLAB系统中相关的线上(on-line)求助方式有三:

1.是利用help指令,如果你已知要找的题材(topic)为何的话,直接键入help

所以即使身旁没有使用手册,也可以使用help指令查询不熟悉的指令或是题材之用法,例如helpsqrt,helptopic。

2.是利用lookfor指令,它可以从你键入的关键字(key-word)(即始这个关键字并不是MATLAB的指令)列出所有相关的题材,例如lookforcosine,lookforsine。

3.是利用指令视窗的功能菜单中的Help,从中选取TableofContents(目录)或是Index(索引)。

例如

>>helpsqrt

SQRTSquareroot.

SQRT(X)isthesquarerootoftheelementsofX.Complex

resultsareproducedifXisnotpositive.

>>helpmonkey

monkeynotfound.

>>*lookfortangent

ACOTInversecotangent.

ACOTHInversehyperboliccotangent.

ATANInversetangent.

ATANHInversehyperbolictangent.

ATAN2Fourquadrantinversetangent.

COTCotangent.

COTHHyperboliccotangent.

TANTangent.

TANHHyperbolictangent.

>>helpatan

ATANInversetangent.

ATAN(X)isthearctangentoftheelementsofX.SeealsoATAN2.

1.6简易数组

MATLAB的运算事实上是以数组(array)及矩阵(matrix)方式在做运算,而这二者在MATLAB的基本运算性质不同,数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。

在此只说明如何定义矩阵,至于矩阵的详细运算语法,我们将留待第四章再说明。

而宣告一变量为数组或是矩阵时,如果是要个别键入元素,须用中括号[]将元素置于其中。

数组为一维元素所构成,而矩阵为多维元素所组成,例如

>>x=[123]%一维1x3数组

>>x=[123;456]%二维2x3矩阵,以;区隔各列的元素

>>x=[123%二维2x3矩阵,各列的元素分二行键入

456]

假设要计算y=sin(x),0 x π而x=0,0.2π,0.4π,...,π,即可用数组方式运算,例如

>>x=[00.2*pi0.4*pi0.6*pi0.8*pipi]%注意数组内也可作运算

x=

00.62831.25661.88502.51333.1416

>>y=sin(x)

y=

00.58780.95110.95110.58780.0000

要找出数组的某个元素或数个元素,可参考以下的例子

>>x(3)%第三个x的元素

ans=

1.2566

>>y(5)%第五个y的元素

ans=

0.5878

>>x(1:

5)%列出第一到第五个x的元素

ans=

00.62831.25661.88502.5133

>>y(3:

-1:

1)%列出第三到第一个y的元素,3为起始值,1为终止值,-1为增量

ans=

0.95110.58780

>>x(2:

2:

6)%列出第二到第六个x的元素,2为起始值,6为终止值,2为增量

ans=

0.62831.88503.1416

>>y([4251])%列出y元素,排列元素依序为原来y数组的4,2,5,1个

ans=

0.95110.58780.58780

1.7建立数组

前一节提到数组产生的方式须个别键入其元素,这方法只适用于数组元素很少时。

如果要建立的数组的元素多达数百个,则须采用以下的数种方式

>>x=(0:

0.0.2:

1)%以:

区隔起始值=0、增量值=0.0.2、终止值=1

>>x=linspace(0,1,51)%利用linspace,以区隔起始值=0终止值=1之间的元素数目=51

>>x=(0:

0.01:

1)*pi%注意数组外也可作运算

>>a=1:

5,b=1:

2:

9%这二种方式更直接

a=

12345

b=

13579

>>c=[ba]%可利用先前建立的数组a及数组b,组成新数组

c=

1357912345

>>d=[b(1:

2:

5)101]%由数组b的三个元素再加上三个元素组成

d=

159101

1.8数组运算

以下将数组的运算符号及其意义列出,除了加减符号外其余的数组运算符号均须多加.符号。

数组运算功能功能

+加

-减

.*乘

./左除

.^次方

.'转置

>>a=1:

5;a-2%从数组a减2

ans=

-10123

>>2*a-1%以2乘数组a再减1

ans=

13579

>>b=1:

2:

9;a+b%数组a加数组b

ans=

2581114

>>a.*b%数组a及b中的元素与元素相乘

ans=

16152845

>>a./b%数组a及b中的元素与元素相除

ans=

1.00000.666670.60000.57140.5556

>>a.^2%数组中的各个元素作二次方

ans=

1491625

>>2.^a%以2为底,以数组中的各个元素为次方

ans=

2481632

>>b.^a%以数组b中的各个元素为底,以数组a中的各个元素为次方

ans=

19125240159049

>>b=a'%数组b是数组a的转置结果

b=

1

2

3

4

5

1.9特殊矩阵

虽然矩阵的运算要等到第五章才详细说明,但是一些特别矩阵的定义,如元素皆为0,1或是单位矩阵,因为在运算时常会用到,所以在此先介绍。

zeros函数是形成元素皆为0的矩阵;ones函数是形成元素皆为1的矩阵;eye则是产生一个单位矩阵,之所以称为eye是取其发音与原来单位矩阵符号I相同,而又避免与定义复数中的虚部所用的符号i雷同,所以改以eye替代。

上述三个函数的使用语法都相似,如zeros(m)可以产生一个m×m的正方矩阵,而zeros(m,n)产生的是m×n的矩阵。

也可以使恶用这三个函数将一m×n矩阵原来元素全部取代成0,1或是单位矩阵的值,不过要加上size指令来指出其矩阵大小是m,n,所以语法为zeros(size(A)),其中A是原来矩阵。

>>A=zero

(2)%0的矩阵

A=

00

00

>>B=zeros(2,3)

B=

000

000

>>C=[12;34;56];

>>size(C)%使用size指令得到C矩阵的大小

ans=

32

>>D=zeros(size(C))%加上size指令将矩阵C原来的元素全部以0取代

>>A=ones

(2),B=ones(2,3)%1的矩阵

A=

11

11

B=

111

111

>>C=[12;34;56];

>>D=ones(size(C));

>>A=eye

(2),B=eye(2,3)%单位矩阵

A=

10

01

B=

100

010

>>C=[12;34;56];

>>D=eye(size(C));

1.10数组运算的特色

MATLAB在许多运算皆是以数组为对象,即是以数组的元素为对象。

因此除了+,-这二个运算外,其余的运算符号(乘、除、次方)皆须加上.来强调数组之间的运算。

以下几个例子可以说明数组运算的特色。

如果a,b各代表二个不同的数组,a与b之间的运算是元素对元素的方式,例如

几个例子如下:

>>x=1.5;%x是纯量

>>y=exp(x^2);%exp(x^2)是纯量运算

>>y1=x/y%x/y是纯量运算

>>x=1:

0.1:

2;%x是数组

>>y=exp(x.^2);%exp(x.^2)是数组运算

>>y1=x./y%x./y是数组运算

这个例子的算式较长,一样也须注意纯量与数组运算的差别

>>x=2.0%x是一纯量

>>nume=x^3-2*x^2+x-6.3;

>>deno=x^2+0.05*x-3.14;

>>f=nume/deno

>>x=1:

5;%注意x是一数组

>>nume=x.^3-2*x.^2+x-6.3;

>>deno=x.^2+0.05*x-3.14;

>>f=nume./deno

1.11简易绘图

MATLAB的绘图功能很强,我们先从最简单的二维绘图指令plot介绍起。

plot是用来划函数x对函数y的二维图,例如要划出y=sin(x),0 x 2π。

plot可以在一个图上划数条曲线,且以不同的符号及颜色来标示曲线,其指令见线上说明helpplot。

如要在x及y轴及全图加注说明,则可利用指令xlabel,ylabel,title,其指令见线上说明helpxlabel,helpylabel,helptitle。

三维图的指令为plot3,其指令见线上说明helpplot3。

此外二维图及三维图皆可使用指令grid加上格线。

MATLAB会将绘图结果展示在另一个视窗称为MATLABFigureWindows,如果你看不到此视窗,别担心它只是被盖住,可以进入Windows再选择Figure。

接著我们就来看以下的例子

>>v1=linspace(0,2*pi,20);v2=sin(v1);%建立v1及v2数组

>>plot(v1,v2)%利用plot,输入的变量为x轴接著的变量为y轴

>>v3=cos(v1);%建立v3数组

>>plot(v1,v2,v1,v3)%划二条曲线,一条代表v1-v2函数关系

%一条代表v1-v2和v1-v3函数关系

>>plot(v1,v2,v1,v2,'+')%一样划二条曲线,不过第二条曲线以符号+标示

>>plot(v1,v2,v1,v2.*v3,'--')%划二条曲线,一条代表v1-v2函数关系,一条

%代表v1-(v2.*v3)函数关系且以符号'标示

>>xlabel('x-axis')%加上x轴的说明,在二个单引号'之间键入文字的说明

>>ylabel('y-axis')%加上y轴的说明

>>title('2Dplot')%加上图的说明

>>plot3(v2,v3,v1),gridon%将v2-v1-v3函数关系分别以x轴y轴及z轴划,并加上格线

1.12交谈式的输入

我们来看一个已经讲过的算式:

要计算面积Area=

,可利用指令input在萤幕印出提示文字做为交谈式的输入。

>>r=input('Typeradius:

')%在两个单引号'之间键入提示文字

Typeradius:

%现在键入2做为半径值

r=

2

>>area=pi*r^2;%键入面积算式

>>name=input('Yournameplease:

','s')%要键入文字则须在加上's',s是代表字串(string)

Yournameplease:

%键入名字J.C.Wu

name=

J.C.Wu

1.13输出格式

至于输出有二种格式:

自由格式(disp)和格式化输出(fprintf)。

要直接输出文字或是一数值,可使用disp,例如

>>temp=20;

>>disp(temp);disp('degreesC');disp('度C')%中文也接受呢!

20

degreesC

度C

而指令fprintf则是用来控制输出数据及文字的格式,它的基本格式如

>>fprintf('Theareais%8.5f\n',area)

在二个单引号间包括输出的字串Theareais,接著是输出数据的格式%8.5f,再来是跳行符号以避免下一个输出数据或是提示符号也挤在同一行,最后键入要输出的数据名area。

例如

>>fprintf('Theareais%8.5f\n',area)%注意输出格式前须有%符号,跳行符号须有\符号

Theareais12.56637%输出值为8位数含5位小数

在此要稍加说明的是输出数据的格式,以下的例子各说明了不同型态的输出格式

>>fprintf('f_form:

%12.5f\n',12345.2)%输出值为12位数,含5位小数

f_form:

12345.20000

>>fprintf('f_form:

%12.3f\n',1.23452)%输出值为12位数,含3位小数

f_form:

1.235

>>fprintf('e_form:

%12.5e\n',12345.2)%输出值为指数格式的12位数,含5位小数

e_form:

1.23452e+004

>>fprintf('f_form:

%12.0f\n',12345.2)%输出值为整数格式的12位数

f_form:

12345

1.14如何撰写MATLAB程序

我们前面各节所介绍在MATLAB所做的运算,是适合于所要计算的算式不太长或是想以交谈式方式做运算,如果要计算的算式很长有数十行或是须要一再执行的算式,则那样的方式就行不通了。

MATLAB提供了所谓的M-file的方式,可让使用者自行将指令及算式写成巨集程序然后储存成个特别的档案,其附加档是m,譬如test.m,其中的test就是档案名称。

至于要撰写程序可以用任何一种编辑软体(如Win3.1的记事本或是Dos下的PE2)或是文书处理软体(如Word,AmiPro),但是储存格式必须是Ascii的格式。

在指令视窗中的功能菜单可以选择File再选择New,即进入指定的编辑软体或是文书处理软体。

当程序写完后要存档时,必须以.m档名称储存。

要执行M-file可以在指令视窗下直接键入该档名如test;或是选择功能表上的RunM-file来找到M-file的所在目录再执行M-file。

OpenM-file,RunM-file。

如果要修改M-file可以选择功能表上的OpenM-file,即可搜寻要修改的M-file,修改后再存档。

以下的tutex1.m档是一个简易绘图程序做为示范使用M-file

%M-file,tutex1.m

%SimpleplotforillustrationofusingM-file.

%简易绘图以做为示范使用M-file

x=linspace(0,2*pi,20);y=sin(x);

plot(x,y,'r+')

xlabel('x-value')

ylabel('y-value')

title('2Dplot')

写好上述程序后即可在指令视窗下键入tutex1,即可执行已建立的tutex1.m程序。

再来看另一个M-file:

tutex2.m的例子

%M-file,tutex2.m

%计算一个球的体积

r=input('Typeradius:

');

area=pi*r^2;

volume=(4/3)*pi*r^3;

fprintf('Theradiusis%12.5f\n',r)

fprintf('Theareaofacircleis%12.5f\n',area)

fprintf('Thevolumeofasph

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

当前位置:首页 > 经管营销 > 销售营销

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

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