数值数组及向量化运算

2019-04-22 08:05

第 3 章 数值数组及向量化运算

本章内容:

一、 二维数值数组的创建、寻访、运算和向量化编程; 二、 常用标准数组生成函数和数组构作技法;

三、 非数NaN、“空”数组概念和应用;关系和逻辑操作。

符号——数值;连续——离散化

3.1 数值计算的特点和地位

数值计算以有限精度数字为基本操作元素,所以它只能用有限长度的数据,以有限的精度,表现有限时间和范围内的函数关系。

? 进行数值计算,必须首先确定一组自变量采样点。把连续变量离散化。

? 执行数值计算的表达式都是在已知的数值点上进行,数值计算结果也是离散的。

? 一般说来,直接观察数据,难以抽象出这组数据的内涵;而离散数据的图形曲线可以

形象地体现数据间的函数关系。但要注意:图形展示的函数性状仅在自变量的取值区间有意义,任何对区间外的延伸和猜测都需特别谨慎。

【例3.1-2】已知

f(t)?e?sin(t),求s(x)?? 4 0f(t) dt。

(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

1

图 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

2

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 利用数组编辑器创建中规模数组

3

三 中规模数组的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

二维数组元素的标识和寻访

4

【例3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。

A=zeros(2,6) A(:)=1:12 A =

0 0 0 0 0 0 0 0 0 0 0 0 A =

1 3 5 7 9 11 2 4 6 8 10 12

A(2,4)

A(8) ans = 8 ans = 8

A(:,[1,3]) A([1,2,5,6]') ans =

1 5 2 6 ans = 1 2 5 6

A(:,4:end) ans =

7 9 11 8 10 12

A(2,1:2:5)=[-1,-3,-5] A =

1 3 5 7 9 11 -1 4 -3 8 -5 12

A(2,[1,2,5])=[0,0,0] A(:,end:-1:3)=30 A =

1 3 5 7 9 11 0 0 -3 8 0 12 A =

1 3 30 30 30 30 0 0 30 30 30 30

A=zeros(2,6); A(:)=1:12

B=A([1,2,2,2],[1,3,5] ) A =

1 3 5 7 9 11 2 4 6 8 10 12 B =

1 5 9 2 6 10 2 6 10 2 6 10

5


数值数组及向量化运算.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:安顺市环境保护局突发环境事件应急预案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: