人教版 信息技术 必修1 4.2数值运算课件(共70张ppt)

文档属性

名称 人教版 信息技术 必修1 4.2数值运算课件(共70张ppt)
格式 zip
文件大小 692.0KB
资源类型 教案
版本资源 通用版
科目 信息技术(信息科技)
更新时间 2019-08-22 09:13:42

图片预览

文档简介

课件70张PPT。Matlab程序设计 数值运算Matlab程序设计第一节 数组和矩阵的创建数组:是指由一组实数或复数排成的长方阵列。
数组运算:是指无论在数组上施加什么运算(+、-、×、÷或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。
目的:
使计算程序简单、易读,使程序指令更接近于教科书上的数学计算公式;
提高程序的向量化程度,提高计算效率,节省计算机开销。Matlab程序设计 一维数组的创建 (1)逐个元素输入法
x=[2 pi/2 sqrt(3) 3+5i]
(2)冒号生成法
通过“步长”设定,生成一维“行”数组的方法。
通用格式:x=a:inc:b
(3)采用linspace和logspace函数法
x=linspace(a,b,n):该指令生成(1 ×n)数组,其作用与x=a:(b-a)/(n-1):b同,n默认值为100。
logspace(a,b,n):生成10a到10b之间按对数等分的n个元素的行向量,n默认值为50。Matlab程序设计 二维数组的创建 直接输入法对于较小数组,从键盘上直接输入最方便。
二维数组必须有以下三个要素:
整个输入数组必须以方括号“[ ]”为其首尾;
数组的行与行之间必须用分号“;”或回车键隔离;
数组元素必须由逗号“,”或空格分隔。 利用M文件创建和保存数组对于今后经常需要调用的数组,尤其是比较大而复杂的数组,为它专门建立一个M文件是值得的。Matlab程序设计 MATLAB函数法 通过MAT数据文件加载矩阵load指令,或File →Import DataMatlab程序设计第二节 数组元素的标识 一维数组的标识 二维数组的标识 全下标标识:行下标,列下标   优点:几何概念清楚,引述简单。 例:矩阵A=[ 1 2 3 4 5    6 7 8 9 10   11 12 13 14 15 ] 则 A(2,3)= 8 , A(3,2)= 12 A(3,5)= 15 , A(1,5)= 5 Matlab程序设计Matlab程序设计Matlab程序设计 逻辑1标识 - 通过与A同样大小的逻辑数组L中“逻辑值1”所在的位置,指出A中元素的位置。
- L的元素或是0或是1,它是“逻辑数组(Logical Array)”。是一种特殊的数据类型。
例: A(L)逻辑数组的创建
1 直接建立逻辑数组 x=[true false]
2 用逻辑运算建立逻辑数组Matlab程序设计子数组寻访和赋值格式汇总表 Matlab程序设计 多(高)维数组的创建   多维数组的第一维称为“行(Row)”,第二维称为“列(Column)”,第三维称为“页(Page)”,第四维称为“箱(Box)”,……直接通过全下标元素赋值方式创建多维数组;
由若干同样大小的低维数组组合成多维数组;
由函数ones,zeros,rand,randn直接创建标准多维数组;
借助cat,repmat,reshape等函数构作多维数组。第三节 多维数组的创建和标识Matlab程序设计 多维数组的标识数组的维数(Dimension)和ndims指令
指令ndims(A)可直接给出数组A的维数。
数组的大小(Size)和size指令
不管A数组的维数是多少,size(A)可给出A各维的大小,而指令length(A)可给出所有维中的最大长度。即length(A)等价于max(size(A))。Matlab程序设计第四节 数组运算和矩阵运算无论在数组上施加什么运算(+、-、×、÷或函数),总认为那种运算对被运算数组中的每个元素(Element)平等地实施同样的操作。
当两个数组具有相同阶数时,进行加、减、乘、除的点运算,其运算是按元素对元素方式进行的。 数组运算Matlab程序设计 矩阵运算矩阵转置:转置符:’
矩阵的乘法
矩阵的相除
左除,符号为/
右除,符号为
矩阵的乘方
当矩阵为方阵时,可进行指数乘法运算。Matlab程序设计 数组运算和矩阵运算的区别从外观形状和数据结构上看,二维数组和(数学中的)矩阵没有区别。
但是,矩阵作为一种变换或映射算子的体现,矩阵运算有着明确而严格的数学规则;数组运算是MATLAB软件所定义的规则,其目的是为了数据管理方便、操作简单、指令形式自然和执行计算的有效。
虽然数组运算尚缺乏严谨的数学推理,数组运算本身仍在完善和成熟中,但它的作用和影响正随着MATLAB的发展而扩大。Matlab程序设计数组运算和矩阵运算指令对照汇总(一)Matlab程序设计数组运算和矩阵运算指令对照汇总(二)Matlab程序设计第五节 特殊矩阵Matlab程序设计 非数NaN按IEEE规定,0/0,∞/∞,0×∞等运算都会产生非数(Not a Number)。该非数在MATLAB中用NaN或nan记述。
根据IEEE数学规范,NaN具有以下性质:
NaN参与运算所得的结果也是NaN,即具有传递性;
非数没有大小概念,因此不能比较两个非数的大小。
非数的功用:
真实记述0/0,∞/∞,0×∞运算的后果;
避免可能因0/0,∞/∞,0×∞运算而造成程序执行的中断;
在数据可视化中,用来裁剪图形。Matlab程序设计 空数组(空阵)“空”数组是MATLAB为操作和表述需要而专门设计的一种数组。
某维长度为0或若干维长度均为0的数组都是“空”数组。
“空”数组的功用:
在有“空”数组参与的运算时,计算结果中的“空”可以合理地解释“所得结果的含义”;
运用“空”数组对其他非空数组赋值,可以改变数组的大小,但不能改变数组的维数。Matlab程序设计第六节 关系操作和逻辑操作在程序流控制和逻辑、模糊逻辑推理中,都需要对一类是非问题作出“是真,是假”的回答。为此MATLAB设计了关系操作、逻辑操作 和一些相关函数。
MATLAB的约定:
在所有关系表达式和逻辑表达式中,作为输入的任何非0数都被看作是“逻辑真”,而只有0才被认为是“逻辑假”。
所有关系表达式和逻辑表达式的计算结果,即输出,是一个由0和1组成的“逻辑数组(Logical Array)”。在此数组中的1表示“真”,0表示“假”。
逻辑数组是一种特殊的数值数组。Matlab程序设计 关系操作Matlab程序设计 逻辑操作Matlab程序设计 关系、逻辑函数MATLAB中能给出“逻辑数组”类型计算结果的函数有很多,包括:关系逻辑函数、工作状态判断函数、特殊数据判断函数、数据类型判断函数等。Matlab程序设计关系逻辑函数Matlab程序设计特殊数据判断指令Matlab程序设计数据类型判断指令Matlab程序设计第七节 字符串数组字符串数组简称串数组。
字符串数组的作用:没有串数组及相应的操作,那么数据可视化、图形用户界面GUI的制作将会遇到困难,构作MATLAB的宏指令也将会遇到困难。
字符变量的创建方式:把待建的字符放在“单引号对”中。
注意: “单引号对”必须在英文状态下输入,其作用是MATLAB识别送来内容“身份”(是变量名、数字,还是字符串)所必需的。
数字标量在内存中存放时需要8个字节(Byte),而一个字符的存放只需2个字节。Matlab程序设计 一维字符数组的创建name='Thomas R. Lee'
字符数组的连接
t=[a b]:a,b尾部的空格被保留 
strcat(S1,S2,S3,...):horizontally concatenates corresponding rows of the character arrays S1, S2, S3 etcMatlab程序设计 复杂串数组的创建多行串数组的直接创建
在直接创建多行串数组时,关键是要保证串数组的各行字符数要相等,即保证各行等长。为此,有时不得不通过空格符的增减来调节各行的长度,使它们彼此相等。
例: S=['This string array '
'has multiple rows.']增加一空格使两行长度相等Matlab程序设计利用串操作函数创建多行串数组
用专门函数char , str2mat , strvcat创建多行串数组示例。
Char: 创建字符串数组或将其他类型变量转化为字符串数组(与[]区别)
str2mat :将字符串转换为含有空格行的数组
Strvcat:创建字符串数组(不含空格行)
这三个函数创建多行数组时,不必担心每行字符数是否相等。它们总会按最长行设置第二维的长度,其他行的尾部用空格填充。 复杂串数组的创建Matlab程序设计 复杂串数组的创建Matlab程序设计 执行字符串 e_val函数(执行表达式)
e_val(expression)
[a1,a2,a3,…]= e_val(‘fun_ction(b1,b2,b3,…’)
feval函数(执行函数)
[y1,y2,…]=feval(fhandle,x1,…,xn)
[y1,y2,…]=feval(fun_ction,x1,…,xn)Matlab程序设计串转换函数Matlab程序设计串操作函数(一)Matlab程序设计串操作函数(二)Matlab程序设计第八节 异质(元胞)数组异质(元胞)数组的基本组分(Element)是元胞(Cell )(抽屉或单元)。
每个元胞本身在数组中是平等的,它们只能以下标区分。
元胞可以存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,同一个异质(元胞)数组中各元胞中的内容可以不同。
异质(元胞)数组的维数不受限制;异质(元胞)数组对元胞的编址方法也有单下标编址和全下标编址两种。Matlab程序设计对异质(元胞)数组来说,元胞和元胞里的内容是两个不同范畴的东西。因此,寻访元胞和寻访元胞中的内容是两种不同的操作。
MATLAB设计了两种不同的操作:
元胞外标识(Cell Indexing)
元胞内编址(Content Addressing)
例:
A(2,3):是指A异质(元胞)数组中的第2行第3列元胞元素;
A{2,3}:是指A异质(元胞)数组第2行第3列元胞中所允许存或取的内容;
注意:两者的区别仅在于所用的括号不同。
“外标识的元胞元素”用的是“圆括号”
“内编址元胞元素”内涵”用的是“花括号”Matlab程序设计 异质(元胞)数组的创建直接使用花括号{}将所有元素内容一次设定完成
A={'how are you.',[1 2;3 4];eye(3,4),{'Tom','Jane'}}
外标识元胞元素赋值法
A(1,1)={'How are you.'}
A(1,2)={5+3i}
编址元胞元素内涵的直接赋值法
A{1,1}= 'How are you.'
A{1,2}=5+3i
Matlab程序设计 异质(元胞)数组的创建利用cell函数为元胞数组预留空间
(1)cell(n)
   创建一个n×n的空元胞数组
(2)cell(m,n) or cell([m n])
   创建一个m×n的空元胞数组
(3)cell(m,n,p,…) or cell([m n p …])
  创建一个m×n×p×…的空元胞数组
(4)cell(size(A))
  创建一个与数组A相同大小的空元胞数组Matlab程序设计 异质(元胞)数组的内容显示使用celldisp命令显示元胞数组的内容
celldisp(A):以列顺序显示元胞数组A的内容
celldisp(A,name):用串name作为数组的显示名
使用cellplot命令以图形显示元胞数组的内容
cellplot(A):涂满颜色的方格表示向量或数组的元素,标量和短文本显示为文本。
cellplot(A,’lengend’):旁边显示一图例Matlab程序设计 异质(元胞)数组内容的获取取一个元胞
>> A(1,2)
取一个元胞的内容
>> A{2,1}
取元胞内的子数组
>> A{2,1}(2,2)
同时调取多个元胞内容
>> [x1,x2,x3]=deal(A{[2,3,4]})Matlab程序设计异质(元胞)数组的扩充、收缩和重组异质(元胞)数组的扩充
利用cell指令创建元胞数组
元胞数组的“列”扩充和“行”扩充
异质(元胞)数组的收缩和重组
异质(元胞)数组的收缩 A(:,n)=[]
异质(元胞)数组的重组 reshapeMatlab程序设计第九节 结构(构架)数组结构(构架)数组:与元胞数组一样,也能在一个数组里存放各类数据。从一定意义上讲,结构(构架)数组组织数据的能力比元胞数组更强、更富于变化。
结构(构架)数组的基本组分是构架(Structure)。数组中的每个构架是平等的,它们以下标区分。构架必须在划分域(Fields,字段)后才能使用。数据不能直接存放于构架,而只能存放在域(字段)中。构架的域可存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,不同构架的同名域(字段)中存放的内容可以不同。
结构(构架)数组的维数不受限制。结构(构架)数组对构架的编址方法也有单下标编址和全下标编址两种。Matlab程序设计结构(构架)数组与异质(元胞)数组的异同比较Matlab程序设计 结构数组的创建直接创建
>>student(1).name=‘张三’;
>>student(1).sex=‘female’;
利用struct函数创建
s=struct(‘field1’,value1,’field2’,value2,…)
s=struct(‘field1’,{},’field2’,{},…)
s=struct([])
>>student(1)=struct('name','李四','sex','female');Matlab程序设计预分配结构数组的三种方法Matlab程序设计 结构数组的获取和设置使用“.”符号获取
>>stu=student(1).name
利用getfield获取结构数组的数据
getfield(array,{array_index},field,{field_index})
>>sex=getfield(student,{1},’sex’)
利用setfield设置结构数组的数据
new_structure = setfield(array,{array_index},field,{field_index},V)
>>stu1=setfield(student,{1},’sex’,’male’)Matlab程序设计 结构数组域的获取使用fieldnames获取结构数组的所有域
>>x=fieldnames(student)
获取结构数组域的数据
①使用“[]”合并相同域的数据并排成水平向量
>>names=[student.name];
②使用cat将其变成多维数组
>>cat(1,student.name);
>>cat(2,student.name);Matlab程序设计 使用动态字段名structName.(expression)
structName.(expression)(i,j)
expression为变量Matlab程序设计 增加和删除结构字段增加结构字段
只要为一个结构数组中的任何一个结构增加就可以了
从结构中删除字段
①s = rmfield(s,'field')
从数组s中删除指定的字段
②s = rmfield(s,FIELDS)
删除多个字段。FIELDS是多个字段名的字符数组或字符元胞数组Matlab程序设计第十节 稀疏矩阵Matlab程序设计 稀疏矩阵的创建使用sparse命令直接创建稀疏矩阵:
格式:S=sparse(i,j,s,m,n)
其中是i行索引,j是列索引,s是非零元素所形成的向量,m是S的列维数,n是S的行维数。
使用spdiags命令可由对角线元素来构建一个稀疏矩阵:
格式:S=spdiags(D,p,m,n)
其中D的每一个列代表矩阵的对角线向量,p代表对角线的位置(0代表主对角线,-1代表向下位移一单位的次对角线,1代表向上位移一单位的次对角线,依此类推),m与n则分别代表矩阵的行维数与列维数。Matlab程序设计常用的稀疏矩阵处理函数Matlab程序设计 稀疏矩阵的储存空间对于一个只包含实数的稀疏矩阵,假设其维数为m×n,含有nnz个非零元素,MATLAB动用了三个内部数组来储存此稀疏矩阵的相关信息:
第一个数组:以double方式储存了所有的非零元素,其长度为nnz,使用的空间大小为8×nnz字节(Bytes);
第二个数组:以整数方式储存了每个元素的行索引,其长度为nnz,使用的空间大小为4×nnz字节(Bytes) ;
第三个数组:以整数方式储存了列的起始指针,其长度为n,使用的空间大小为4×n字节(Bytes) ;
整个稀疏矩阵占用的空间大小为8×nnz+4×nnz+4×n+4=12×nnz+4×n+4Matlab程序设计第十一节 多项式降幂多项式
P(x) = a0xn + a1xn-1 + … + an-1x + an
用以下系数矢量(系数行向量)表示:
p= [a0 , a1 , … , an-1 , an]
即把多项式的各项系数依降幂次序排放在行向量中。
注意:假如多项式中缺某幂次项,则应认为该幂次项的系数为零。Matlab程序设计 创建多项式的方法- 系数矢量的直接输入法
  在命令窗直接输入多项式的系数矢量,然后利用转换函数poly2sym将多项式由系数矢量形式转换为符号形式。
- 由根矢量创建多项式
  由给定的根矢量创建多项式,由函数poly实现。 若希望创建实系数多项式,根矢量的复数根必须共轭成对。
  含复数根的根矢量所创建的多项式系数矢量的系数中,有可能带有很小(在截断误差数量级)的虚部,此时可采用取实部的命令(real)把虚部滤掉。Matlab程序设计 多项式运算- 多项式求值
  polyval(p,s)
polyvalm(p,s) s必须为方阵
- 多项式求根
  r=roots(p)
- 特征多项式
  p=poly(s) s必须为方阵,p特征多项式
- 部分分式展开
   [r,p,k] = residue(b,a)Matlab程序设计- 多项式乘法和除法
  p=conv(p1,p2)
[q,r]=deconv(p1,p2) %q是商,r是余子式
- 多项式的微分
  r=polyder(p)
- 多项式的积分
用[p./length(p):-1:1,k]的方法来完成积分,k为常数。
- 多项式的拟合
  p=polyfit(x,y,n) %x,y为n个数据点的横纵坐标;n为用来拟合的多项式阶次;p为拟合的多项式的n+1个系数。Matlab程序设计- 多项式插值
插值条件:
①只能在自变量取值范围内进行插值
②自变量必须是单调的。
一维插值
yi=interp1(x,y,xi,’method’)
x,y为行向量
xi是插值范围内任意点的x坐标
yi则是插值运算后的y坐标
method是插值函数的的类型:
linear为线性插值
nearest为最接近的相邻点插值
spline为三次样条插值
cubic为三次插值
Matlab程序设计- 多项式插值
二维插值
zi=interp2(x,y,z,xi,yi,’method’)
method是插值函数的的类型:
linear为线性插值
nearest为最接近的相邻点插值
cubic为三次插值Matlab程序设计多项式运算函数的调用格式 Matlab程序设计第十二节 数据分析 数据分析原则:
如果输入是向量,则按整个向量进行运算。
如果输入是矩阵,则按列进行运算。
 通常将需要分析的数据按列进行分类,而用行表示同类数据的不同样本。Matlab程序设计常用数据分析和统计函数Matlab程序设计思考:1、要求在闭区间[0,2π ]上产生50个等距采样的一维数组。试用两种不同的指令实现。Matlab程序设计3、说出MATLAB指令A(3,1,2,: )=1:4所产生数组的维数、大小和长度;然后对A进行降维处理;最后指出所有非零元素的“全下标”位置。
4、现有五个数组: (2×3)的实数数组A; (2×3)的复数数组B; (2×3)的字符串数组C; (2×3)的异质(元胞)数组D; (2×3)的结构(构架)数组E。问,它们各占多少字节?
5、写出使以下这段文字成为字符串的MATLAB程序。注意保持这段文字的格式。
在英式用法中,引号通常是单引号,如‘Fire!’。
In GB usage quotation marks are usually single:’Fire!’.Matlab程序设计6、请建立下列4×3的异质数组A,如表所示。7、将上题异质数组A转换成结构数组song,其中:
song(1).singer=‘张惠妹’
song(1).name=‘听海’
song(1).year=‘1998’
song(2).singer=‘周华健’
…精品课件!精品课件!Matlab程序设计8、学生的基本信息包括学号、姓名、性别、出生日期、家庭地址、班级、专业、入学年份,每个班有多名学生,学生的姓名均不相同。请设计程序,实现学生信息的录入和查询。要求查询方式可以是“按学号”或“按姓名”。
同课章节目录