数学建模ch02.docx
《数学建模ch02.docx》由会员分享,可在线阅读,更多相关《数学建模ch02.docx(33页珍藏版)》请在冰豆网上搜索。
![数学建模ch02.docx](https://file1.bdocx.com/fileroot1/2022-11/18/f1822a64-a2ff-4105-898e-3a4b21b31109/f1822a64-a2ff-4105-898e-3a4b21b311091.gif)
数学建模ch02
第二章数值数组及其运算
数值数组(NumericArray)和数组运算(ArrayOperations)始终是MATLAB的核心内容。
自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-inDataType),而数组运算就是定义在这种数据结构上的方法(Method)。
本章系统阐述:
一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;关系和逻辑操作。
顺便指出:
(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
(2)MATLAB5.x和6.x版在本章内容上的差异极微。
(3)MATLAB6.5版新增的两种逻辑操作,在第2.13.2节给予介绍。
.1引导
【例2.1-1】绘制函数
在
时的曲线。
x=0:
0.1:
1
y=x.*exp(-x)
plot(x,y),xlabel('x'),ylabel('y'),title('y=x*exp(-x)')
x=
Columns1through7
00.10000.20000.30000.40000.50000.6000
Columns8through11
0.70000.80000.90001.0000
y=
Columns1through7
00.09050.16370.22220.26810.30330.3293
Columns8through11
0.34760.35950.36590.3679
图2.1-1
.2一维数组的创建和寻访
.2.1一维数组的创建
.2.2一维数组的子数组寻访和赋值
【例2.2.2-1】子数组的寻访(Address)。
rand('state',0)
x=rand(1,5)
x=
0.95010.23110.60680.48600.8913
x(3)
ans=
0.6068
x([125])
ans=
0.95010.23110.8913
x(1:
3)
ans=
0.95010.23110.6068
x(3:
end)%
ans=
0.60680.48600.8913
x(3:
-1:
1)%
ans=
0.60680.23110.9501
x(find(x>0.5))
ans=
0.95010.60680.8913
x([12344321])
ans=
Columns1through7
0.95010.23110.60680.48600.48600.60680.2311
Column8
0.9501
【例2.2.2-2】子数组的赋值(Assign)。
x(3)=0
x=
0.95010.231100.48600.8913
x([14])=[11]
x=
1.00000.231101.00000.8913
.3二维数组的创建
.3.1直接输入法
【例2.3.1-1】在MATLAB环境下,用下面三条指令创建二维数组C。
a=2.7358;b=33/79;
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i]
C=
1.00005.4716+0.4177i0.6909
0.70714.82443.5000+1.0000i
【例2.3.1-2】复数数组的另一种输入方式。
M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16]
CN=M_r+i*M_i
M_r=
123
456
M_i=
111213
141516
CN=
1.0000+11.0000i2.0000+12.0000i3.0000+13.0000i
4.0000+14.0000i5.0000+15.0000i6.0000+16.0000i
.3.2利用M文件创建和保存数组
【例2.3.2-1】创建和保存数组AM的MyMatrix.m文件。
(1)
%MyMatrix.mCreationandpreservationofmatrixAM
AM=[101,102,103,104,105,106,107,108,109;...
201,202,203,204,205,206,207,208,209;...
301,302,303,304,305,306,307,308,309];
(2)
(3)
.4二维数组元素的标识
.4.1“全下标”标识
.4.2“单下标”标识
.4.3“逻辑1”标识
【例2.4.3-1】找出数组
中所有绝对值大于3的元素。
A=zeros(2,5);
A(:
)=-4:
5
L=abs(A)>3
islogical(L)
X=A(L)
A=
-4-2024
-3-1135
L=
10001
00001
ans=
1
X=
-4
4
5
【例2.4.3-2】演示逻辑数组与一般双精度数值数组的关系和区别。
(本例在例2.4.3-1基础上进行)。
(1)
Num=[1,0,0,0,1;0,0,0,0,1];
N_L=Num==L
c_N=class(Num)
c_L=class(L)
N_L=
11111
11111
c_N=
double
c_L=
double
(2)
islogical(Num)
Y=A(Num)
ans=
0
?
?
?
Indexintomatrixisnegativeorzero.Seereleasenotesonchangesto
logicalindices.
.5二维数组的子数组寻访和赋值
【例2.5-1】不同赋值方式示例。
A=zeros(2,4)
A=
0000
0000
A(:
)=1:
8
A=
1357
2468
s=[235];
A(s)
Sa=[102030]'
A(s)=Sa
ans=
235
Sa=
10
20
30
A=
120307
10468
A(:
[23])=ones
(2)
A=
1117
10118
.6执行数组运算的常用函数
.6.1函数数组运算规则的定义:
.6.2执行数组运算的常用函数
【例2.6.2-1】演示pow2的数组运算性质。
A=[1:
4;5:
8]
A=
1234
5678
pow2(A)
ans=
24816
3264128256
.7数组运算和矩阵运算
.7.1数组运算和矩阵运算指令对照汇总
【例2.7.1-1】两种不同转置的比较
clear;A=zeros(2,3);
A(:
)=1:
6;
A=A*(1+i)
A_A=A.'
A_M=A'
A=
1.0000+1.0000i3.0000+3.0000i5.0000+5.0000i
2.0000+2.0000i4.0000+4.0000i6.0000+6.0000i
A_A=
1.0000+1.0000i2.0000+2.0000i
3.0000+3.0000i4.0000+4.0000i
5.0000+5.0000i6.0000+6.0000i
A_M=
1.0000-1.0000i2.0000-2.0000i
3.0000-3.0000i4.0000-4.0000i
5.0000-5.0000i6.0000-6.0000i
.8多项式的表达方式及其操作
.8.1多项式的表达和创建
10一多项式表达方式的约定
10二多项式行向量的创建方法
【例2.8.1.2-1】求3阶方阵A的特征多项式。
A=[111213;141516;171819];
PA=poly(A)
PPA=poly2str(PA,'s')
PA=
1.0000-45.0000-18.00000.0000
PPA=
s^3-45s^2-18s+1.8303e-014
【例2.8.1.2-2】由给定根向量求多项式系数向量。
R=[-0.5,-0.3+0.4*i,-0.3-0.4*i];
P=poly(R)
PR=real(P)
PPR=poly2str(PR,'x')
P=
1.00001.10000.55000.1250
PR=
1.00001.10000.55000.1250
PPR=
x^3+1.1x^2+0.55x+0.125
.8.2多项式运算函数
【例2.8.2-1】求
的“商”及“余”多项式。
p1=conv([1,0,2],conv([1,4],[1,1]));
p2=[1011];
[q,r]=deconv(p1,p2);
cq='商多项式为';cr='余多项式为';
disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])
商多项式为s+5
余多项式为5s^2+4s+3
【例2.8.2-2】两种多项式求值指令的差别。
S=pascal(4)
P=poly(S);
PP=poly2str(P,'s')
PA=polyval(P,S)
PM=polyvalm(P,S)
S=
1111
1234
13610
141020
PP=
s^4-29s^3+72s^2-29s+1
PA=
1.0e+004*
0.00160.00160.00160.0016
0.00160.0015-0.0140-0.0563
0.0016-0.0140-0.2549-1.2089
0.0016-0.0563-1.2089-4.3779
PM=
1.0e-010*
0.00160.00330.00900.0205
0.00450.01010.02860.0697
0.00950.02100.06530.1596
0.01630.03870.12260.3019
【例2.8.2-3】部分分式展开。
a=[1,3,4,2,7,2];
b=[3,2,5,4,6];
[r,s,k]=residue(b,