《数学实验 第4版》课件 第一章 准备实验_第1页
《数学实验 第4版》课件 第一章 准备实验_第2页
《数学实验 第4版》课件 第一章 准备实验_第3页
《数学实验 第4版》课件 第一章 准备实验_第4页
《数学实验 第4版》课件 第一章 准备实验_第5页
已阅读5页,还剩178页未读 继续免费阅读

下载本文档

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

文档简介

第一章准备实验实验1.1MATLAB的基本用法实验1.2矩阵的运算实验1.4MATLAB绘图实验1.3M文件与程序设计实验1.5MATLAB符号运算实验1.1MATLAB的基本用法实验1.1

MATLAB的基本用法一、MATLAB简介二、矩阵的输入三、数组的输入及运算四、常量、变量、与表达式五、函数六、帮助系统七、数据显示格式一、MATLAB简介

1.MATLAB语言的发展实验1.1

MATLAB的基本用法MATLAB是英文MatrixLaboratory(矩阵实验室)的缩写,是一款由美国MATHWORKS公司出品的数学软件,每年都会推出新的版本.MATLAB最早是C.Moler为了减轻学生编程的负担,用Fortran语言编写的,后来他与另外两人合作创立了MATHWORKS公司,正式把MATLAB推向市场.MATLAB将计算、可视化和编程功能集成在非常便于使用的环境中,是一个交互式的、以矩阵计算为基础的科学和工程计算软件.2、Matlab适用领域(1)工业研究与开发(2)数学教学,特别是线性代数(3)数值分析和科学计算方面的教学与研究(4)电子学、控制理论和物理学等工程和科学学科方面的教学与研究(5)经济学、化学和生物学等计算问题的所有其他领域中的教学与研究实验1.1

MATLAB的基本用法实验1.1

MATLAB的基本用法3.MATLAB语言的特点编程效率高更接近我们通常进行计算时的思维方式.用它编程犹如在纸上书写公式,编程时间和程序量大大减少计算功能强它以不必指定维数的矩阵和数组为主要数据对象,矩阵和向量计算功能特别强,库函数也很丰富.使用简便方便调试,计算结果也用人们十分熟悉的数学符号表示出来.易于扩充用户可根据需要建立的文件可以与库函数一样被调用,还可以与Fortran、C语言子程序混合编程.实验1.1

MATLAB的基本用法4.丰富的MATLAB工具箱MATLAB主工具箱符号数学工具箱SIMULINK仿真工具箱控制系统工具箱信号处理工具箱图象处理工具箱

通讯工具箱系统辨识工具箱神经元网络工具箱金融工具箱统计工具箱小波分析工具箱……启动MATLAB后,就出现MATLAB的窗口命令行窗口:在这里输入命令和输出结果命令历史记录:显示过去所输入的命令当前文件夹:当前搜索目录下的文件5.

MATLAB窗口实验1.1

MATLAB的基本用法工作区:显示所有的变量菜单栏ans=0.3224

在命令窗口里首先可以按计算器一样使用了,如计算在MATLAB的命令窗口中输入:2*cos(0.3*pi)/(1+sqrt(7))↙实验1.1

MATLAB的基本用法2*cos(0.4*pi)/(1+sqrt(7))↙ans=0.1695实验1.1

MATLAB的基本用法按↑键(或用Ctrl+p,而↓键或Ctrl+n是调出下一行),调出上次的输入.用←或→健移动光标,将3改为4:

矩阵的输入方法是,将矩阵元素以行序为先在方括号内逐行输入矩阵各元素,同一行各元素之间用逗号或空格分开,两行元素之间用分号或回车分开,如输入:二、矩阵的输入

矩阵是MATLAB的基本数据形式,数和向量可视为它的特殊形式,用户不必对矩阵的行、列数作专门的说明.1.矩阵的输入实验1.1

MATLAB的基本用法A=123456789A

=[1,2,3;4,5,6;7,8,9]↙ans=8矩阵中的元素可以用它的行、列数表示,如:a=6A(3,2)↙a=A(2,3)↙实验1.1

MATLAB的基本用法矩阵A输入后一直保存在工作空间中,可随时调用,除非被清除或替代.可以直接修改矩阵的元素,如:A=123756789A=123075607891A(2,1)=7↙A(3,4)=1↙MATLAB还提供了一些函数来构造特殊矩阵,如:w=000000u=111111111w=zeros(2,3)↙u=ones(3)↙%2×3零矩阵%3×3全1矩阵v=eye(3,4)↙%3×4对角线为1的矩阵实验1.1

MATLAB的基本用法v=100001000010r=

0.81470.90580.1270n=0.8622-1.30770.34262.76940.3188-0.43363.5784-1.3499n=randn(2,4)↙%标准正态分布矩阵r=rand(1,3)↙%(0,1)均匀分布随机矩阵实验1.1

MATLAB的基本用法2.矩阵的裁剪ans=7891B=12307560A(3,:)↙B=A(1:2,:)↙%A的第3行%A的第1、2行实验1.1

MATLAB的基本用法从一个矩阵中取出若干行(列)ans=258C=230560A(:,2)↙C=B(:,2:4)↙%A的第2列%B的第2~4列ans=032198A=230560891A(1:2:3,4:-1:2)↙%A的第1、3行,4、3、2列A(:,1)=[]↙%删除A的第一列,[]表示空集实验1.1

MATLAB的基本用法3.矩阵的拼接E=23005600F=123075601000左右拼接时行数要相同,上下拼接时列数要相同,如:E=[C,zeros(2,1)]↙F=[A(1:2,:);eye(1,4)]↙G=230115601191230G=[C,ones(2);9,F(1,:)]↙实验1.1

MATLAB的基本用法将几个矩阵接在一起4.矩阵编辑器当输入的矩阵很大,不适合用手工直接输入时,MATLAB提供了一个矩阵编辑器来方便用户创建和修改比较大的矩阵.w=[21;34];%先定义一个名为w的变量从主页菜单中找到“打开变量”就可以打开矩阵编辑器:实验1.1

MATLAB的基本用法在调用矩阵编辑器之前,需要预先定义一个变量,无论是数值还是矩阵均可.在这里就可以修改矩阵w的维数和元素了实验1.1

MATLAB的基本用法三、数组的输入及运算在MATLAB中数组是一种比矩阵更基本的数据形式,它是元素为一维连续存储的数据的集合.a=1234567a=[1,2,3,4,5,6,7]↙实验1.1

MATLAB的基本用法数组运算的最重要的特征是按对应元素进行运算.数组常采用“:”输入方式,如:ans=1c=00.50001.00001.50002.0000b=345678910b=3:10↙c=0:0.5:2↙c(3)↙实验1.1

MATLAB的基本用法MATLAB中有两个命令可以创建特殊的数组:x=00.78541.57082.35623.1416linspace(a,b,m)生成从a到b,m个数的等差数列logspace(a,b,n)生成从到,n个数的等比数列x=linspace(0,pi,5)↙实验1.1

MATLAB的基本用法ans=

列1至6

1.00001.58492.51193.98116.309610.0000

列7至11

15.848925.118939.810763.0957100.0000logspace(0,2,11)↙实验1.1

MATLAB的基本用法数组的运算符有“+”、“-”、“.*”、“./”、“.\”、和“.^”a1=1234a2=3214b1=4448b2=-2020b1=a1+a2↙b2=a1-a2↙a1=[1,2,3,4]↙a2=[3,2,1,4]↙实验1.1

MATLAB的基本用法数组的运算是数组的每一个元素进行相应的运算(注意“./”、和“.\”的区别),如:b3=34316b4=0.33331.00003.00001.0000b3=a1.*a2↙b4=a1./a2↙a1+2↙ans=3456b5=3.00001.00000.33331.0000b5=a1.\a2↙实验1.1

MATLAB的基本用法b8=392781b6=143256b7=182764b7=a1.^3↙b8=3.^a1↙b6=a1.^a2↙实验1.1

MATLAB的基本用法四、常量、变量、与表达式

变量名以字母开始,由字母、数字等构成,最多31个字符,区分大小写字母,在MATLAB中不必对变量作任何的类型说明.

MATLAB提供若干特殊的变量,如:实验1.1

MATLAB的基本用法pi(

);i(或j,虚数单位);eps(机器无穷小,约为);inf(无穷大);nan(不确定值,0/0,

/所得)当输入一个新变量时MATLAB自动建立变量并为其分配内存空间.

变量、常量和函数由运算符连接得到算术表达式.

通常表达式的值赋给某个变量称为赋值命令语句,其形式为:变量=表达式

但亦可略去“变量”,此时表达式之值自动赋给MATLAB系统指定的变量ans.实验1.1

MATLAB的基本用法当运算对象是矩阵时,应用矩阵运算符;当运算对象为数组时则用数组运算符.

用who或whos命令可以显示当前工作空间中各变量的名称及分配给这些变量的空间等信息,who给出的信息较少,whos给出的信息比较详细.a=1;↙b=[1234];↙c=zeros(2);↙who↙您的变量为:abc

实验1.1

MATLAB的基本用法disp(x)可以显示变量x的内容,可以用clear命令从工作空间中清除现存的变量.但clc

命令只清屏不清除变量.(注:命令后加“;”,MATLAB只计算不输出)函数或变量'a'无法识别.NameSizeBytesClassAttributesa1x18doublearrayb1x432doublearrayc2x232doublearrayclear↙a↙whos↙disp(c)↙0000实验1.1

MATLAB的基本用法函数名称函数功能函数名称函数功能sin(x)正弦函数conj(z)复数的共轭cos(x)余弦函数round(x)四舍五入至最近整数tan(x)正切函数fix(x)向0方向取整asin(x)反正弦函数floor(x)

方向取整acos(x)反余弦函数ceil(x)

方向取整atan(x)反正切函数rat(x)将实数x化为分数表示sinh(x)双曲正弦函数rats(x)实数化为多项分数展开cosh(x)双曲余弦函数sign(x)符号函数tanh(x)双曲正切函数rem(x,y)求x除以y的余数asinh(x)反双曲正弦函数gcd(x,y)整数x和y的最大公因数acosh(x)反双曲余弦函数lcm(x,y)整数x和y的最小公倍数atanh(x)反双曲正切函数exp(x)自然指数abs(x)绝对值或向量的长度pow2(x)2的指数angle(z)复数的幅角log(x)自然对数sqrt(x)开平方log2(x)以2为底的对数real(z)复数的实部log10(x)常用对数imag(z)复数的虚部五、函数实验1.1

MATLAB的基本用法

这些函数本质上是作用于标量的,当它们作用于矩阵或数组时,是作用于矩阵或数组的每一个元素,如:y=00.58780.95110.95110.58780.0000x=(0:0.2:1)*pi;y=sin(x)↙实验1.1

MATLAB的基本用法a=[-3.5,4.6];b=round(a),c=floor(a),d=ceil(a),e=fix(a),f=rats(a)↙b=-45c=-44d=-35e=-34

另一个计算函数值的命令是feval(F,x),F是表示函数名的字符串,如:y=00.58780.95110.95110.58780.0000x=(0:0.2:1)*pi;y=feval('sin',x)↙实验1.1

MATLAB的基本用法函数名称函数功能函数名称函数功能max最大值mean平均值min最小值median中值sum和prod乘积length长度sort从小到大排列

有些函数只有当它们作用于(行或列)向量时才有意义,称为向量函数.实验1.1

MATLAB的基本用法这些函数也作用于矩阵,此时它产生一个行向量,行向量的每一个元素是函数作用于矩阵相应列向量的结果。b=-1.2000c=11.9000d=3.1000a=[4,3.1,-1.2,0,6];b=min(a),c=sum(a),d=median(a)↙实验1.1

MATLAB的基本用法f=sort(a)%升序排列↙f=-1.200003.10004.00006.0000g=sort(a,'descend')%降序排列↙g=6.00004.00003.10000-1.2000h=

-1.200003.10004.00006.0000index=

34215[h,index]=sort(a)%h是排序好的向量,index是向量h中对向量a的索引

实验1.1

MATLAB的基本用法六、帮助系统

MATLAB提供了非常方便的帮助系统,如果知道某个程序(或主题)的名字,就可用帮助命令:helpsin↙实验1.1

MATLAB的基本用法help程序(或主题)的名窗口中会给出sin命令的具体用法。MATLAB还提供了一个命令lookfor,它可以搜索包含某个关键词的帮助主题,这个关键词并不一定是MATLAB的命令或函数lookforequation

↙窗口中会显示出所有与equation有关的命令。七、数据显示格式1.如果数据是整数,则显示整数;命令显示格式命令显示格式formatshort小数点后4位,缺省显示formatshorte5位科学记数法formatlong15位数字formatlonge15位科学记数法formatbank小数点后2位formatrat最接近的有理数format+显示+,-或0(分数表示)MATLAB显示数据结果时,一般遵循下列原则:实验1.1

MATLAB的基本用法2.如果数据是实数,在缺省情况下显示小数点后4位数字.可以在要输出的数据前加上这些命令,如ans=3.1416formatshort,pi↙format+,pi↙formatbank,pi↙ans=3.14ans=+formatlonge,pi↙formatrat,pi↙ans=355/113ans=3.141592653589793e+00实验1.1

MATLAB的基本用法第一章准备实验实验1.1MATLAB的基本用法实验1.2矩阵的运算实验1.4MATLAB绘图实验1.3M文件与程序设计实验1.5MATLAB符号运算实验1.2矩阵的运算实验1.2

矩阵的运算一、矩阵的四则运算二、矩阵的转置、行列式、秩和逆三、对角阵、上(下)三角阵和稀疏矩阵四、特征值与特征向量一、矩阵的四则运算矩阵的四则运算符有:+加法、-减法、^幂、*乘法、/右除、\左除在使用时应该注意两点:①左除和右除的区别:设A是可逆矩阵,AX=B的解是A左除B,即X=A\B;XA=B的解是A右除B,即X=A/B。②幂,乘、除三种运算和线性代数中的定义一致,但.^;.*;./;.\是指数组之间的运算,即对应元素进行相应的运算。实验1.2

矩阵的运算M=1.00000.50002.00002.00003.00003.00004.50001.00006.0000R1=

5.50004.50009.000016.000010.000024.000018.000016.000029.5000例如M=[1,.5,2;2,3,3;4.5,1,6]↙N=[2,2,3;3,1,4;1,1,2]↙N=223314112R1=M*N↙R2=M.*N↙R2=2.00001.00006.00006.00003.000012.00004.50001.000012.0000实验1.2

矩阵的运算二、矩阵的转置、行列式、秩和逆

设A是一个矩阵.A’求A的转置det(A)求A的行列式(方阵),rank(A)求A的秩inv(A)求A的逆矩阵(若不可逆,则给出警告信息)A=123221343A=[1,2,3;2,2,1;3,4,3]↙实验1.2

矩阵的运算ans=123224313ans=2ans=3A'↙det(A)↙rank(A)↙B=inv(A)↙B=1.00003.0000-2.0000-1.5000-3.00002.50001.00001.0000-1.0000实验1.2矩阵的运算A=123456789ans=2警告:矩阵接近奇异值,或者缩放不良。结果可能不准确。RCOND=1.541976e-18。

ans=

1.0e+16*

-0.45040.9007-0.45040.9007-1.80140.9007-0.45040.9007-0.4504A=[1,2,3;4,5,6;7,8,9]↙rank(A)↙inv(A)↙实验1.2

矩阵的运算三、对角阵、上(下)三角阵和稀疏矩阵1.提取(产生)对角阵v=diag(x):若输入向量x,则输出v是以x为对角元素的对角阵;v=100020003ans=123x=[123]↙x=123diag(v)↙v=diag(x)↙若输入矩阵x,则输出v是x的对角元素构成的向量.实验1.2

矩阵的运算2.提取(产生)上(下)三角阵v=triu(x):输入矩阵x,输出x的上三角阵v;v=tril(x):输入矩阵x,输出x的下三角阵v.a=123456789b=123056009c=100450789a=[123;456;789]↙b=triu(a)↙c=tril(a)↙实验1.2

矩阵的运算3.稀疏矩阵的处理

对稀疏矩阵在存储和运算上的特殊处理,是MATLAB进行大规模科学计算时的特点和优势之一.a=sparse(r,c,v,m,n):创建m行n列的稀疏矩阵a;其第r行、c列的元素为v。aa=full(a):将稀疏矩阵a转换为满矩阵aa(包括零元素)。用以下语句输入稀疏矩阵的非零元素(零元素不必输入),即可进行计算.实验1.2

矩阵的运算a=(2,2)8(2,3)8aa=00000880a=sparse(2,2:3,8,2,4),aa=full(a)↙实验1.2

矩阵的运算关于特征值与特征向量,MATLAB有以下命令:命

令作

用poly(A)输出A的特征多项式的系数(按降幂排列)d=eig(A)返回方阵A的全部特征值所构成的向量[V,D]=eig(A)返回矩阵V和D.其中,对角阵D的对角元素为A的特征值,V的列向量是相应的特征向量,使得A*V=V*Dd=eig(A,B)求解

返回方阵A和B的广义特征值所构成的向量[V,D]=eig(A,B)求广义的特征值D和特征向量V,使得AV=BV*D实验1.2

矩阵的运算四、特征值与特征向量A=400031013ans=1-1032-32ans=244例如:A=[400;031;013]↙poly(A)↙eig(A)↙实验1.2

矩阵的运算v=

001.0000-0.70710.707100.70710.70710d=200040004ans=

400

031

013[v,d]=eig(A)↙v*d*inv(v)↙inv(v)*d*v↙ans=400040002实验1.2矩阵的运算A=21-15B=3114d=

0.7405

1.3504V=

-1.0000-0.1708-0.85411.0000D=

0.7405001.3504A=[21;-15]↙B=[31;14]↙d=eig(A,B)↙[V,D]=eig(A,B)↙实验1.2矩阵的运算A*V↙%验证A*V=B*V*Dans=-2.85410.6584

-3.27055.1708B*V*D↙

ans=-2.85410.6584

-3.27055.1708实验1.2矩阵的运算55第一章准备实验实验1.1MATLAB的基本用法实验1.2矩阵的运算实验1.4MATLAB绘图实验1.3M文件与程序设计实验1.5MATLAB符号运算实验1.3M文件与程序设计一、M文件二、程序控制结构三、函数M-文件四、应用举例一、M文件1.M文件概述

MATLAB作为一种应用广泛的科学计算软件,不仅可以通过直接交互的指令和操作方式进行强大的数值计算、绘图等,还可以像

C、C++等高级程序语言一样,根据自己的语法规则来进行程序设计.

M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器.实验1.3

M文件与程序设计编写的程序文件以

.m作为扩展名,称之为M文件.2.M文件的建立与打开(1)建立新的M文件菜单操作:主页——新建——脚本操作后会启动MATLAB文本编辑器,输入M文件的内容并存盘就建立了一个新的M文件。实验1.3

M文件与程序设计命令操作:命令行窗口中输入edit注:储存时文件名遵循MATLAB变量命名的原则,但必须以.m为扩展名.实验1.3

M文件与程序设计(2)打开已有的M文件菜单操作:主页——打开——选择文件M文件根据调用方式的不同分为两类:脚本文件(ScriptFile)和函数文件(FunctionFile).实验1.3

M文件与程序设计命令操作:命令行窗口中输入:edit文件名然后在命令行窗口中输入:f1c↙c=22.7778InputFahrenheittemperature:73↙实验1.3

M文件与程序设计clear;%清除工作空间中的变量f=input(‘InputFahrenheittemperature:');c=5*(f-32)/9例1

分别建立脚本文件和函数文件,将华氏温度f转换为摄氏温度c.解1首先建立脚本文件并以文件名f1c.m存盘.解2首先建立函数文件f2c.m.functionc=f2c(f)c=5*(f-32)/9;然后在MATLAB的命令行窗口调用该函数文件.InputFahrenheittemperature:70↙x=21.1111clear;y=input('InputFahrenheittemperature:');x=f2c(y)↙实验1.3

M文件与程序设计二、关系运算与逻辑运算1.关系运算符

关系运算符主要用以比较数、字符串、矩阵之间的大小或不等关系,其返回值为0或1,当返回值为1时,表示比较的两个对象关系为真;当返回值为0时,表示比较的两个对象关系为假.关系操作符功能<

判断小于关系<=判断小于等于关系>

判断大于关系>=判断大于等于关系==判断等于关系~=判断不等于关系注:关系运算符“==”和赋值运算符“=”是不同的,“==”用来判断两个数字或者变量是否有相等关系,“=”用来给变量赋值.实验1.3

M文件与程序设计A=1:2:10;

B=10-A;big=A>4

%判断A中元素是否大于4,结果是1表明为真,结果是0表明为假big=1×5logical数组00111ab=(A==B)↙ab=1×5logical数组00100%判断A、B中对应元素是否相等实验1.3

M文件与程序设计2.逻辑运算符逻辑运算符说明&与(Element-wiseLogicalAND)|或(Element-wiseLogicalOR)~非(优先级最高)注:三种运算符的优先顺序按从高到低排列为:算术运算符、关系运算符、逻辑运算符,从高到低,如果要改变运算的优先级,可以在表达式中加入括号.实验1.3

M文件与程序设计实验1.3

M文件与程序设计A=1:2:10;a1=(A>2)&(A<6)↙a1=1×5logical数组01100a2=(A>7)|(A<6)↙a2=1×5logical数组11101%当A中的元素大于2并且小于6时,返回1%当A中的元素大于7或者小于6时,返回1三、程序控制结构1.顺序结构——依次顺序执行程序的各条语句MATLAB语言的程序控制结构与其它高级语言是一致的,分为顺序结构,选择结构,循环结构。(1)数据的输入——input调用格式:A=input(提示信息,选项)

如果在input函数调用时采用‘s’选项,则允许用户输入一个字符串。实验1.3

M文件与程序设计其中提示信息为一个字符串,用于提示用户输入什么样的数据。(2)数据的输出——disp调用格式:disp(输出项)其中输出项既可以为字符串,也可以为矩阵。(3)程序的暂停——pause调用格式:

pause(延迟秒数)如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行.实验1.3

M文件与程序设计若要强行中止程序的运行可使用Ctrl+C命令.例2

输入x,y的值,并将它们的值互换后输出。x=input(‘Inputxplease:');y=input(‘Inputyplease:');z=x;x=y;y=z;disp(x);disp(y);存盘为f1.m,在命令行窗口中输入f1↙Inputxplease:5↙Inputyplease:6↙6

5解实验1.3

M文件与程序设计a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))])例3

求一元二次方程的根.解程序如下:实验1.3

M文件与程序设计注:num2str函数的作用是把数值转换成字符串,以便用disp进行输出.2.选择结构——根据一定条件来执行各条语句(1)if语句条件语句if最简单的用法是:if条件<语句组1>end

如果条件成立,则语句组1执行;

否则,执行end的后继命令实验1.3

M文件与程序设计如果条件成立,则语句组1执行;否则,语句组2执行,然后执行end的后续命令if语句的另一种用法是:if条件<语句组1>else<语句组2>endif条件1<语句组1>elseif条件2<语句组2>……elseif条件m<语句组m>else<语句组n>end当我们有多个选择时,还可以用下列结构:实验1.3

M文件与程序设计例4计算分段函数的值.解程序如下:x=input('请输入x的值:');ifx<=0y=(x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy实验1.3

M文件与程序设计例5

输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出.

c=input('请输入一个字符','s');ifc>='A'&c<='Z'disp(setstr(abs(c)+abs('a')-abs('A')));elseifc>='a'&c<='z'disp(setstr(abs(c)-abs('a')+abs('A')));elseifc>='0'&c<='9'disp(abs(c)-abs('0'));elsedisp(c);end解

实验1.3

M文件与程序设计(2)switch语句switch

表达式case

表达式1〈语句组1〉case

表达式2〈语句组2〉……otherwise〈语句组n〉endswitch语句根据表达式的值来执行相应的语句,用法如下:实验1.3

M文件与程序设计例6

某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):

price<200没有折扣

200≤price<5003%折扣

500≤price<10005%折扣

1000≤price<25008%折扣

2500≤price<500010%折扣

5000≤price14%折扣输入所售商品的价格,求其实际销售价格。实验1.3

M文件与程序设计price=input(‘请输入商品价格:’);switchfix(price/100)case{0,1}rate=0;case{2,3,4}rate=3/100;casenum2cell(5:9)rate=5/100;casenum2cell(10:24)rate=8/100;解程序如下:实验1.3

M文件与程序设计请输入商品价格:700↙price=665存盘为ff2.m,在命令窗口中输入:ff2↙casenum2cell(25:49)rate=10/100;otherwiserate=14/100;endprice=price*(1-rate)实验1.3

M文件与程序设计(3)try语句try〈语句组1〉catch〈语句组2〉end

运行时先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息付给保留的lasterr变量,并转去执行语句组2。try语句用法如下:实验1.3

M文件与程序设计例7

矩阵乘法运算要求两矩阵的维数相容,否则会出错.先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘.A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];try

C=A*B;catch

C=A.*B;endClasterr

%显示出错原因解程序如下:实验1.3

M文件与程序设计(1)for语句for循环变量=初值:步长:终值循环体语句end3.循环结构——被重复执行的一组语句,循环是计算机解决问题的主要手段注:步长为1时可以省略循环语句for的一般形式为:实验1.3

M文件与程序设计例8

一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,编写程序输出全部水仙花数.form=100:999m1=fix(m/100);

%求m的百位数字m2=rem(fix(m/10),10);%求m的十位数字m3=rem(m,10);

%求m的个位数字ifm==m1*m1*m1+m2*m2*m2+m3*m3*m3disp(m)endend解程序如下:实验1.3

M文件与程序设计例9

已知

,当n=100时,求y的值.y=0;n=100;fori=1:ny=y+1/(2*i-1);endy

解程序如下:在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替:

n=100;i=1:2:2*n-1;y=sum(1./i);y实验1.3

M文件与程序设计for循环更一般的格式为:for循环变量=矩阵表达式

循环体语句end执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。实验1.3

M文件与程序设计例10

写出下列程序的执行结果.s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];fork=as=s+k;enddisp(s')解

该程序的作用是求矩阵每一行的和,输出结果为39485766实验1.3

M文件与程序设计(2)while语句如果不知道循环次数,可以使用while循环来完成,其一般形式为:

while(条件)循环体语句

end

其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环.实验1.3

M文件与程序设计例11从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和.

sum=0;

cnt=0;

val=input('Enteranumber(endin0):');

while(val~=0)

sum=sum+val;

cnt=cnt+1;

val=input('Enteranumber(endin0):');endif(cnt>0)

sum

mean=sum/cntend解实验1.3

M文件与程序设计(3)break语句和continue语句

continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将跳过循环体中所有剩下的语句,继续下一次循环。与循环结构相关的语句还有break语句和continue语句.它们一般与if语句配合使用.

break语句用于终止循环的执行.当在循环体内执行到该语句时,程序将跳出循环,继续执行循环语句的下一语句.实验1.3

M文件与程序设计例12

求[100,200]之间第一个能被21整除的整数。forn=100:200ifrem(n,21)~=0continueendbreakendn↙n=105解

循环语句可以嵌套,即一个循环结构的循环体又包括一个循环结构,也称为多重循环。(4)循环的嵌套实验1.3

M文件与程序设计例13

若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数.求[1,500]之间的全部完数.628496解

form=1:500s=0;fork=1:m/2ifrem(m,k)==0s=s+k;endendifm==sdisp(m);endend↙实验1.3

M文件与程序设计三、函数M-文件function输出形参=函数名(输入形参)%注释说明部分函数体语句注2:这个M-文件的文件名必须是函数名.m1.函数文件的基本结构函数M-文件必须由function语句引导,其基本结构为:注1:若输出形参不止一个,可用方括号将它们括起来,并用逗号分开。实验1.3

M文件与程序设计例14

编写函数文件求半径为r的圆的面积和周长.

解函数文件如下:function[s,p]=fcircle(r)%CIRCLEcalculatetheareaandperimeterofacircleofradiir%r圆半径%s圆面积%p圆周长%2023年12月30日编s=pi*r*rp=2*pi*r实验1.3

M文件与程序设计2.函数调用函数调用的一般格式是:[输出实参表]=函数名(输入实参表)注:函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错

函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能.实验1.3

M文件与程序设计例15

利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换.function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);

x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,the]=tran(x,y);rhothe调用tran.m的命令文件main1.m:解编写函数文件tran.m:实验1.3

M文件与程序设计

函数可以嵌套调用,即一个函数可以调用别的函数,甚至调用它自身,一个函数调用它自身称为函数的递归调用。例16

利用函数的递归调用求n!functionf=factor(n)ifn<=1f=1;elsef=factor(n-1)*n;end解递归调用函数文件factor.m如下:ans=120factor(5)↙实验1.3

M文件与程序设计3.函数参数的可调性在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数.实验1.3

M文件与程序设计只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入、输出参数个数,从而决定函数如何进行处理.MATLAB中用global命令定义全局变量,格式为:

global变量名实验1.3

M文件与程序设计4.全局变量与局部变量

函数文件内部的变量是局部变量,它们与其他函数文件及MATLAB工作空间相互隔离.但是,如果在若干函数中都把某一变量定义为全局变量,那么这些函数将公用这一个变量.

全局变量的作用域是整个MATLAB工作空间,所有的函数都可以对它进行存取和修改.因此,定义全局变量是函数间传递信息的一种手段.98第一章准备实验实验1.1MATLAB的基本用法实验1.2矩阵的运算实验1.4MATLAB绘图实验1.3M文件与程序设计实验1.5MATLAB符号运算数学实验99实验1.4MATLAB绘图一、一元函数的作图(二维图形)二、其他二维图形三、隐函数绘图五、图形修饰处理数学实验四、三维图形一、二维数据曲线图实验1.4

MATLAB绘图(1)符号函数绘图——fplotfplot函数的基本调用格式为:fplot(f,xinterval)

,

其中f为要绘制的函数,常用函数句柄来表示.xinterval为x的取值范围注:函数句柄是一种表示函数的MATLAB数据类型,它的作用是将一个函数封装成一个变量,使其能够像其它变量一样在程序的不同部分传递。函数句柄可以表示命名函数或匿名函数,要创建函数句柄,可用

@

操作符,并且要使用数组运算符。例如,创建用于计算表达式

的匿名函数的句柄为:f=@(x,y)(x.^2-y.^2)1.绘制单根二维曲线fplot(@(x)cos(tan(pi*x)),[0,1])↙例1

用fplot函数绘制的曲线.解

命令如下:实验1.4

MATLAB绘图实验1.4

MATLAB绘图(2)数值数据绘图——plotplot函数的基本调用格式为:plot(x,y),其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据.例2

在区间内,绘制曲线解命令如下:x=0:pi/100:2*pi;y=2*exp(-0.5*x).*cos(4*pi*x);plot(x,y)例3

绘制曲线:解

命令如下:

t=0:0.1:2*pi;x=t.*sin(3*t);y=t.*sin(t).*sin(t);plot(x,y)实验1.4

MATLAB绘图2.绘制多根二维曲线绘制多根二维曲线可采用下面两种形式:(1)plot函数的输入参数是矩阵形式1)当x是向量,y是其行(列)向量与x同维的矩阵时,则绘制出多根不同颜色的曲线.曲线条数等于y矩阵的列(行)向量的维数,x被作为这些曲线共同的横坐标.2)当x,

y是同维矩阵时,则以x,

y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数.实验1.4

MATLAB绘图3)对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数.当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线.调用格式为:plot(x1,y1,x2,y2,…,xn,yn)(2)含多个输入参数的plot函数1)当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同.每一向量对可以绘制出一条曲线,这样可以在同一坐标系内绘制出多条曲线.实验1.4

MATLAB绘图2)当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数.x1=linspace(0,2*pi,100);x2=linspace(0,3*pi,100);x3=linspace(0,4*pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1)例4

分析下列程序绘制的曲线.实验1.4

MATLAB绘图解

该程序在同一坐标中绘制出和的图像:在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数.(3)具有两个纵坐标标度的图形调用格式为:plotyy(x1,y1,x2,y2),其中x1,y1对应一条曲线,x2,y2对应另一条曲线.横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对.实验1.4

MATLAB绘图x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plotyy(x,y1,x,y2)

命令如下:实验1.4

MATLAB绘图例5

用不同标度在同一坐标系内绘制曲线

和(4)图形保持holdon/off命令是控制保持原有图形还是刷新原有图形,不带参数的

hold命令在两种状态之间进行切换。实验1.4

MATLAB绘图例6

采用图形保持,在同一坐标内绘制曲线

和解

命令如下:fplot(@(x)0.2*exp(-0.5*x).*cos(4*pi*x),[0,2*pi])holdonfplot(@(x)2*exp(-0.5*x).*cos(pi*x),[0,2*pi])↙3.设置曲线样式线方式-:-.--实线(solid)点线(dotted)虚点线(dashdot)波折线(dashed)点方式.+*xosdv^<>ph圆点加号星号x形小圆正方形菱形下三角形上三角左三角形右三角形五角星六角形颜色yrgbwkmc黄色红色绿色蓝色白色黑色洋红色青色实验1.4

MATLAB绘图

要设置曲线样式可以在plot函数中加绘图选项,其调用格式为:plot(x1,y1,’选项1’,x2,y2,’选项2’,…,xn,yn,’选项n’)如

x=0:pi/100:2*pi;y1=0.2*exp(-0.5*x).*cos(4*pi*x);y2=2*exp(-0.5*x).*cos(pi*x);plot(x,y1,x,y2,'k:')↙实验1.4

MATLAB绘图4.图形标注与坐标控制title(’图形名称’)加图形标题xlable(’x轴说明’)加x轴说明ylable(’y轴说明’)加y轴说明text(x,y,’图形说明’)在指定位置添加图形说明legend(‘图例1’,‘图例2,…’)加图例实验1.4

MATLAB绘图(1)图形标注注:命令中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容.x=0:pi/100:2*pi;y1=2*exp(-0.5*x);y2=cos(4*pi*x);plot(x,y1,x,y2)title('xfrom0to2{\pi}');%加图形标题xlabel('VariableX');%加X轴说明ylabel('VariableY');%加Y轴说明text(0.8,1.5,‘曲线y1=2e^{-0.5x}’);%在指定位置添加图形说明

text(2.5,1.1,'曲线y2=cos(4{\pi}x)');legend('y1','y2')

%加图例解

命令如下:例7

在区间内,绘制曲线和并给图形添加图形标注.实验1.4

MATLAB绘图实验1.4

MATLAB绘图x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(x,y,x,z)gtext('sinx'),gtext('cosx')也可以用鼠标来确定字符串的位置,方法是输入命令:gtext例如:

实验1.4

MATLAB绘图axis([xmin

xmax

ymin

ymax])[]中分别给出x轴和y轴的最小、最大值axisequalx轴和y轴的单位长度相等axisauto使用缺省设置axissquare图框呈方形axisoff(on)取消(显示)坐标轴boxon/off命令控制是加还是不加坐标边框线,不带参数的box

命令在两种状态之间进行切换。实验1.4

MATLAB绘图(2)坐标控制——axisgridon/off命令控制是画还是不画网格线,不带参数的

grid命令在两种状态之间进行切换。例8

在同一坐标中,绘制3个同心圆,并加坐标控制.解

命令如下:t=0:0.01:2*pi;x=exp(i*t);y=[x;2*x;3*x]';plot(y)gridon;%加网格线

boxon;%加坐标边框

axisequal%坐标轴采用等刻度实验1.4

MATLAB绘图实验1.4

MATLAB绘图MATLAB在“绘图”菜单中提供了可视化的图形编辑工具,该菜单中列出了一些常用的图形样式,在工作区中选定变量后,可直接点击相应的图形按钮,系统就会自动地匹配出图形.5.图形的可视化编辑6.图形窗口的分割——subplotsubplot函数的调用格式为:subplot(m,n,p)该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区.在每一个绘图区允许以不同的坐标系单独绘制图形.x=linspace(0,2*pi,30);y=sin(x);z=cos(x);u=2*sin(x).*cos(x);v=sin(x)./cos(x);subplot(2,2,1),plot(x,y),axis([02*pi-11]),title('sin(x)')subplot(2,2,2),plot(x,z),axis([02*pi-11]),title('cos(x)')subplot(2,2,3),plot(x,u),axis([02*pi-11]),title('2sin(x)cos(x)')subplot(2,2,4),plot(x,v),axis([02*pi-2020]),title('sin(x)/cos(x)')↙例9

在图形窗口中,以子图形式同时绘制多根曲线.实验1.4

MATLAB绘图实验1.4

MATLAB绘图1.极坐标图——polarpolar(theta,rho,选项)theta(极角,用弧度)rho(极径)是同维向量,选项的内容同plot函数实验1.4

MATLAB绘图二、其他二维图形t=0:pi/50:2*pi;r=sin(t).*cos(t);polar(t,r,'-*')↙例10绘制

的极坐标图,并标记数据点.

命令如下:2.二维统计分析图

MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等bar(x,y,’选项’)条形图stairs(x,y,’选项’)阶梯图stem(x,y,’选项’)杆图fill(x1,y1,’选项1’,x2,y2,’选项2’,…)填充图实验1.4

MATLAB绘图x=0:pi/10:2*pi;y=2*sin(x);subplot(2,2,1);bar(x,y,

温馨提示

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

评论

0/150

提交评论