数值数组及向量化运算
- 格式:doc
- 大小:1.40 MB
- 文档页数:14
第 3 章数值数组及向量化运算
本章内容:
一、二维数值数组的创建、寻访、运算和向量化编程;
二、常用标准数组生成函数和数组构作技法;
三、非数NaN、“空”数组概念和应用;关系和逻辑操作。
符号——数值;连续——离散化
3.1数值计算的特点和地位
数值计算以有限精度数字为基本操作元素,所以它只能用有限长度的数据,以有限的精度,表现有限时间和范围内的函数关系。
●进行数值计算,必须首先确定一组自变量采样点。把连续变量离散化。
●执行数值计算的表达式都是在已知的数值点上进行,数值计算结果也是离散的。
●一般说来,直接观察数据,难以抽象出这组数据的内涵;而离散数据的图形曲线可以
形象地体现数据间的函数关系。但要注意:图形展示的函数性状仅在自变量的取值区间有意义,任何对区间外的延伸和猜测都需特别谨慎。
【例3.1-2】已知
)
sin(
)(t
e
t
f-
=,求⎰=4
)(
)
(dt
t
f
x
s。
(1)符号计算解法
syms t x
ft=exp(-sin(t))
sx=int(ft,t,0,4)
sv=vpa(sx,6)
ft =
exp(-sin(t))
Warning: Explicit integral could not be found. > In sym.int at 58
sx =
int(exp(-sin(t)),t = 0 .. 4)
sv =
3.06267
(2)数值计算解法
dt=0.05;
t=0:dt:4;
Ft=exp(-sin(t));
Sx=dt*cumtrapz(Ft);
Sx(end)
plot(t,Ft,'*r','MarkerSize',4)
hold on
plot(t,Sx,'.k','MarkerSize',15)
hold off
xlabel('x')
legend('Ft','Sx')
ans =
3.0632
图 3.1-2 在区间[0, 4]中间的被积函数及其原函数的离散计算结果
3.2
数值数组的创建和寻访
3.2.1 一维数组的创建
一
递增/减型一维数组的创建
(1)“冒号”生成法
x = a : inc : b
(2)线性(或对数)定点数法
x = linspace ( a , b , n ) 以a, b 为左右端点,产生线性等间隔的)1(n ⨯行数组 x = logspace ( a , b , n )
以a, b 为左右端点,产生对数等间隔的)1(n ⨯行数组
二 通用型一维数组的创建
(1)逐个元素输入法
(2)运用MATLAB 函数生成法
【例3.2-1】一维数组的常用创建方法举例。
a1=1:6
a2=0:pi/4:pi
a3=1:-0.1:0
a1 =
1 2 3 4 5 6
a2 =
0 0.7854 1.5708 2.3562 3.1416
a3 =
Columns 1 through 6
1.0000 0.9000 0.8000 0.7000 0.6000 0.5000
Columns 7 through 11
0.4000 0.3000 0.2000 0.1000 0
b1=linspace(0,pi,4)
b2=logspace(0,3,4)
c1=[2 pi/2 sqrt(3) 3+5i]
c1 =
Columns 1 through 3
2.0000 1.5708 1.7321 Column 4
3.0000 + 5.0000i
rand('state',0)
c2=rand(1,5)
c2 =
0.7621 0.4565 0.0185 0.8214 0.4447
3.2.2二维数组的创建
一小规模数组的直接输入法
●整个输入数组必须以方括号“[ ]”为其首尾;
●数组的行与行之间必须用分号“;”或回车键 [Enter] 隔离;
●数组元素必须由逗号“,”或空格分隔。
【例3.2-2】在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.0000 5.4716 + 0.4177i 0.6909 0.7071 4.8244 3.5000 + 1.0000i 二中规模数组的数组编辑器创建法
t
图3.2-1 利用数组编辑器创建中规模数组
三中规模数组的M文件创建法
图3.2-2 利用M文件创建数组
四利用MATLAB函数创建数组
【例3.2-5】标准数组产生的演示。
ones(2,4)
ans =
1 1 1 1
1 1 1 1
randn('state',0)
randn(2,3)
ans =
-0.4326 0.1253 -1.1465
-1.6656 0.2877 1.1909
D=eye(3)
D =
1 0 0
0 1 0
0 0 1
diag(D)
ans =
1
1
1
diag(diag(D))
ans =
1 0 0
0 1 0
0 0 1
randsrc(3,20,[-3,-1,1,3],1)
ans =
Columns 1 through 10
3 1 3 -1 -3 3 -3 -3 -1 3 1 3 1 3 -1 1 1 1 1 1 3 -1 -3 -1 1 -1 3 -1 -1 1 Columns 11 through 20
-1 -1 -3 1 1 -3 3 -1 1 3 1 1 3 -1 -1 -3 -1 -1 1 -3 1 -1 -3 3 -1 -1 3 -1 3 3 3.2.3二维数组元素的标识和寻访