习题1解答物教讲解.docx

上传人:b****5 文档编号:5785098 上传时间:2023-01-01 格式:DOCX 页数:20 大小:144.43KB
下载 相关 举报
习题1解答物教讲解.docx_第1页
第1页 / 共20页
习题1解答物教讲解.docx_第2页
第2页 / 共20页
习题1解答物教讲解.docx_第3页
第3页 / 共20页
习题1解答物教讲解.docx_第4页
第4页 / 共20页
习题1解答物教讲解.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

习题1解答物教讲解.docx

《习题1解答物教讲解.docx》由会员分享,可在线阅读,更多相关《习题1解答物教讲解.docx(20页珍藏版)》请在冰豆网上搜索。

习题1解答物教讲解.docx

习题1解答物教讲解

习题1解答(物教)

1.1请分别用直接构造法、增量构造法(冒号表达式)和linspace函数创建数组:

(1,3,5,7,9,11),体会以上创建方法有何区别和联系。

若数组b为在0--2π之间均匀分布的22个数据,c=(1.3,2.5,7.6,2,-3),d=(23,20,17,14,11,8,5,2),各用何种方法输入较为简单?

写出源程序。

分析:

考查知识点——行向量的产生方法

【法一:

直接构造法】向量元素必须用[]括住;向量元素必须用逗号或空格分隔;对于矩阵:

在[]内矩阵的行与行之间必须用分号(;)或Enter键分隔。

矩阵元素可以是任何matlab表达式,可以是实数,也可以是复数,复数可用特殊变量i,j输入。

——对于一般较小的简单的矩阵,元素值又没有规律,可采用此法。

【法二:

增量构造法——冒号表达式法】

,可产生一个初值为e1,步长为e2,终值为e3的行向量,向量元素值是一个以e2为公差的等差数列。

e2可缺省,缺省值为1。

——如果已知一个向量的初值、终值和步长,采用此法比较简单。

【法三:

linspace函数构造法】语法:

v=linspace(a,b,n),其中a和b是生成向量的第一个和最后一个元素,n是元素总数。

——如果已知一个向量的初值、终值和元素的总数(即向量长度),采用此法比较简单。

小结:

上面三种方法创建的向量a是等价的,尤其法二和法三之间一般可相互转换。

但我们应该根据已知条件选择最方便的方法来创建向量。

例如:

●已知:

初值a,步长为b,终值为c,则易采用冒号表达式:

t=a:

b:

c来创建向量。

注意有时和t=linspace(a,c,fix(c-a)/b)+1)并不等价,为什么?

●已知:

初值a,终值为c,元素的总数n,则易采用linspace函数来创建:

t=linspace(a,c,n),等价于t=a:

(c-a)/(n-1):

c。

表格1MATLAB中的取整函数汇总

函数

函数功能

floor(A)

返回小于或等于A的整数值,对于复数来说,分别对A的实部和虚部进行运算。

即朝负无穷方向取整,如floor(-1.3)=-2;floor(1.3)=1;

ceil(A)

返回大于或等于A的整数值,对于复数来说,分别对A的实部和虚部进行运算。

即朝正无穷方向取整,如ceil(-1.3)=-1;ceil(1.3)=2;

round(X)

返回距离X最近的整数值。

即四舍五入到最近的整数,

如round(-1.3)=-1;round(-1.52)=-2;round(1.3)=1;round(1.52)=2。

fix(A)

返回A的整数部分,小数部分为0

●已知:

初值a,步长为b,元素的总数n,法一和法二均可以。

即:

t=a:

b:

(n-1)*b或t=linspace(a,(n-1)*b,n)

解题:

a=[1357911];%或a=[1,3,5,7,9,11],直接输入法

a=1:

2:

11;%冒号表达式

a=linspace(1,11,6);%linspace函数法

b=linspace(0,2*pi,22);——易用linspace函数法

c=[1.32.57.62-3];——易用直接输入法

d=23:

-3:

2;——易用冒号表达式

1.2设一向量A可表示为数组A=[1,2,3],求A的长度和方向角。

(提示:

向量的长度可用指令sqrt(dot(A,A))或sqrt(sum(A,A));方向角可利用反三角函数求得。

分析:

考查知识点——对向量的操作

表格2适用於向量的常用函数

函数

函数功能

min(x)

向量x的元素的最小值

max(x)

向量x的元素的最大值

mean(x)

向量x的元素的平均值

median(x)

向量x的元素的中位数

std(x)

向量x的元素的标准差

diff(x)

向量x的相邻元素的差——差分

sort(x)

对向量x的元素进行排序

length(x)

向量x的长度(即元素个数,与numel(x)等价)——对矩阵不适合。

norm(x)

向量x的欧氏(Euclidean)长度

sum(x)

向量x的元素总和

prod(x)

向量x的元素总乘积

cumsum(x)

向量x的累计元素总和

cumprod(x)

向量x的累计元素总乘积

dot(x,y)

向量x和y的内积

cross(x,y)

向量x和y的外积

本题我们是要求表示向量的数组的长度和方向角。

在MATLAB中,平面上的向量

用向量[x,y]来表示;

空间上的向量

用向量[x,y,z]来表示;

向量长度和方向余弦分别为

解题:

A=[123];

r=sum(sqrt(A.^2))

forn=1:

3

a(n)=acosd(A(n)/r);

end

a

1.3矩阵大小的测试是由指令numel和size来实现的,利用帮助系统查看该指令函数的调用格式及例题,然后确定矩阵A=[3,5,6;2,5,8;3,5,9;3,7,9]的元素个数和行数及列数。

分析:

考查知识点——获取已建立变量的信息。

函数

函数功能

函数

函数功能

length

矩阵的长度

class

类型

ndims

矩阵的维数

size

大小

numel

矩阵的元素总数

isa

判断类型

whos

查看变量详细信息

解题:

A=[356;258;359;379];

numel(A)

size(A)

1.4分析:

考查知识点——矩阵的定位——find函数

语法:

ind=find(X)

ind=find(X,k)

ind=find(X,k,'first')

ind=find(X,k,'last')

[row,col]=find(...)

[row,col,v]=find(...)

解题:

A=[356;258;359;379];

[i1j1]=find(A==3)

[i2,j2]=find(A>3)

1.5分析:

考查知识点——子矩阵的寻访

1)“全下标”标识

m,n为标量(AccessingSingleElements)

A(m,n)m,n有一为冒号(:

)(AccessingMultipleElements)

m,n为行向量

2)“单下标”标识

s为标量

A(s)s为冒号(:

s为向量、矩阵

3)“逻辑1”标识A(L)——L必须是逻辑数组

表格3子数组寻访和赋值格式汇总表

子数组寻访和赋值

使用说明

A(r,c)

它由A的“r指定行”和“c指定列”上的元素组成

A(r,:

它由A的“r指定行”和“全部列”上的元素组成

A(:

c)

它由A的“全部行”和“c指定列”上的元素组成

A(:

“全元素”寻访。

它由A的各列按自左到右的次序,首尾相接而生成“一维长列”数组

A(s)

“单下标”寻访。

生成“s指定的”一维数组。

S若是“行数组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)

A(L)

“逻辑1”寻访。

生成“一维”列数组:

由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素;按“单下标”次序排成长列组成。

A(r,c)=Sa

以“双下标”方式,对子数组A(r,c)进行赋值;Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同

A(:

)=D(:

全元素赋值方式。

结果:

保持A的“行宽、列长”不变。

条件:

A、D两个数组的总元素相等,但“行宽、列长”不一定相同

A(s)=Sa

按“单下标”方式,对A的部分元素重新赋值。

结果:

保持A的“行宽、列长”不变。

条件:

s单下标数组的长度必须与“一维数组”Sa的长度相等,但是s、Sa不一定同是“行数组”或“列数组”

例:

不同寻访和赋值方式示例。

在MATLAB中创建下面的矩阵

a=1:

8;

A=[a;a;a;a;a;a;a;a];

(1)如何获取矩阵的第3行——A(3,:

(2)如何获取矩阵的第4列——A(:

4)

(3)如何获取矩阵的第2到6行,3到7列——A(2:

6,3:

7)

(4)如何获取矩阵的第1、2、7、8行,2、5、7列——A([1278],[257])

(5)如何实现矩阵第1列和第4列数据的交换——A(:

[42315:

8])

(6)如何获取矩阵按列的倒序排列矩阵——A(:

end:

-1:

1)

(7)如何获取矩阵单下标号为奇数的元素——A(1:

2:

numel(A))

(8)如何将矩阵的第3行的元素全修改为0——A(3,:

)=0

(9)如何将矩阵的第4列的元素全修改为[246810121416]——A(:

4)=2:

2:

16

(10)如何获取矩阵的第2到6行,3到7列的元素改为1:

25——A(2:

6,3:

7)=reshape(1:

25,5,5)

(11)如何删除矩阵的第2、5、7列——A(:

[257])=[]

(12)如何删除矩阵的第13行——A([13],:

)=[]

(13)如何获取矩阵中大于6的元素——A(A>6)

解题:

A=[356;258;359;379];

A(2,:

);%访问矩阵A的第2行

A([14],:

);%访问矩阵A的第1、4行

A([23],[12]);%访问矩阵A的第2、3行与1、2列的交叉元素

1.6分析:

考查知识点——用matlab函数创建矩阵

表格4用于输入特殊的矩阵的函数

函数

功能

函数

功能

compan

伴随阵

toeplitz

Toeplitz矩阵

diag

对角阵

vander

Vandermonde矩阵

hadamard

Hadamard矩阵

zeros

元素全为0的矩阵

hankel

Hankel矩阵

ones

元素全为1的矩阵

invhilb

Hilbert矩阵的逆阵

rand

元素服从均匀分布的随机矩阵

kron

Kronercker张量积

randn

元素服从正态分布的随机矩阵

magic

魔方矩阵

eye

对角线上元素为1的矩阵

pascal

Pascal矩阵

meshgrid

由两个向量生成的矩阵

上面函数的具体用法,可以用帮助命令help得到。

如:

eye、zeros、ones、rand这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。

其调用格式是:

●zeros(m)产生m×m零矩阵

●zeros(m,n)产生m×n零矩阵。

●zeros(size(A))产生与矩阵A同样大小的零矩阵

解题:

A=zeros(3,4)%产生3×4维的零矩阵A

B=rand(4,2)%产生4×2维的随机矩阵B

C=eye(4)%产生4×4维的单位矩阵C

1.7分析:

考查知识点——数组运算和矩阵运算

数组运算

矩阵运算

指令

含义

指令

含义

A.’

非共轭转置。

相当于conj(A’)

A’

共轭转置

A=s

把标量s赋给A的每个元素(X)A(:

)=s

 

 

s+B

标量s分别与B元素之和

 

 

s-B,B-s

标量s分别与B的元素之差

 

 

s.*A

标量s分别与A的元素之积

s*A

标量s分别与A每个元素之积

s./B,B.\s

s分别去除B的每个元素

s*inv(B)

B阵的逆乘s

A.^n

A的每个元素自乘n次

A^n

A为方阵时,自乘n次

A.^p

对A的各元素分别求非整数幂

A^p

方阵A的非整数乘方

p.^A

以p为底,分别以A的元素为指数求幂值

p^A

A阵为方阵时,标量的矩阵乘方

A±B

对应元素相加减

A±B

矩阵相加减

A.*B

对应元素相乘

A*B

内维相同矩阵的乘积

A./B

A的元素被B的对应元素除

A/B

A右除B

B.\A

(一定与上相同)

B\A

A左除B(一般与右除不同)

exp(A)

以自然数e为底,分别以A的元素为指数,求幂

expm(A)

A的矩阵指数函数

log(A)

对A的各元素求对数

logm(A)

A的矩阵对数函数

sqrt(A)

对A的各元素求平方根

sqrtm(A)

A的矩阵平方根函数

f(A)

求A各个元素的函数值。

f(.)表示为上节所列各函数

funm(A,’FN’)

一般函数矩阵

A#B

A、B阵对应元素间的关系运算。

#代表关系运算符

 

 

A@B

A、B阵对应元素间的逻辑运算。

#代表逻辑运算符

 

 

1.8分析:

考查知识点——外部数据调入法产生矩阵

【方法】自己上机练习

(1)选择File——>ImportData菜单操作,可打开任意类型的数据文件

(2)用户能够通过load命令,将MATLAB外部数据文件中的内容调入到工作空间中创建矩阵

1.9分析:

考查知识点——数组编辑器的使用

解题:

自己上机练习,注意右键的使用

1.10分析:

考查知识点——符号对象的产生方法

sym和syms

1、符号常量是不含变量的符号表达式,用sym命令来创建

语法:

●sym('常量')

●sym(常量,参数)%按某种格式转换为符号常量

说明:

参数可以选择为’d’、’f’、’e’或’r’四种格式,也可省略。

2、符号变量

语法:

变量=sym(‘变量’,参数)%把变量定义为符号对象——单个符号变量

syms(‘arg1’,‘arg2’,…,参数)

symsarg1arg2…,参数 

用这种格式定义符号变量时不要在变量名上加字符分界符('),变量间用空格而不要用逗号分隔。

1.11分析:

考查知识点——符号表达式的创建和运算

●用sym函数直接建立符号表达式。

●使用已经定义的符号变量组成符号表达式

解题:

symsabt;

f1=a+cos(t)

f2=b*cos(t)

s1=f2-f1

s2=f1^2+f2^2

1.12分析:

考查知识点——符号表达式的创建和代数运算

解题:

symsabckpxy;

e1=a*c*x^2*y+a*p*x^2+b*c*x*y+b*p*x+c*k*y+k*p

e2=c*y+p

f=e1/e2

1.13分析:

考查知识点——符号矩阵的创建和代数运算

●用sym创建矩阵——直接创建

●使用已定义的符号对象构成符号矩阵的元素

解题:

f1=sym('[112;2334]')

f2=sym('[55;55]')

f=f1+f2

1.14分析:

考查知识点——计算精度的控制——vpa

在matlab中有三种不同的算术运算:

●数值类型matlab的浮点算术运算

●有理数类型maple的精确符号运算

●vpa类型maple的任意精度算术运算

⏹vpa(s,n)——显示可变精度计算

解题:

c=sym('exp(sqrt(79))')

class(c)

vpa(c,8)

vpa(c,18)

1.15分析:

考查知识点——置换操作

通用置换指令

RES=subs(ES,old,new)用new置换ES中的old后产生RES

RES=subs(ES,new)用new置换ES中的自由变量后产生RES

解题:

symsabkxyntd;

f=a*x^n+b*y+k;

f1=subs(f,{a,b,k},{sin(t),log(t),c*exp(-d*t)})

f2=subs(f,{n,k},{5,pi})

f3=subs(f,k,1:

4)

1.16分析:

考查知识点——M文件的编写

注意命令文件和函数文件的区别

1.17分析:

考查知识点——M文件编辑器的用法,上机练习

1.18分析:

考查知识点——函数句柄的创建方法

●fhandle=@functionname

●fhandle=str2func(functionname)

1.19分析:

考查知识点——循环结构

解题:

法一

L=0;

forn=1:

100

L=L+(2*n-1).^2;

end

L

法二

L=0;n=1;

whilen<=100

L=L+(2*n-1).^2;

n=n+1;

end

L

 

法三

n=1:

100;

y=(2*n-1).^2;

L=sum(y)

1.20分析:

考查知识点——选择结构

解题:

x=input('x=')

ifx<3

y=0

elseifx>3&x<8

y=(x-3)/5

elseifx>8

y=1

else

disp('x未定义!

')

end

1.21分析:

考查知识点——对角阵

X=diag(v,k)——由向量v构成矩阵X的第k条对角线,其他元素为0,创建矩阵X

X=diag(v)——k缺省表示k=0为主对角线

v=diag(X,k)——提取矩阵X的第k条对角线

v=diag(X)——提取矩阵X的主对角线

解题:

a=5*ones(1,5);

A=diag(a);

1.22分析:

考查知识点——三维网线图的绘制

解题:

【法一】数据可视化——mesh

第一步:

准备绘图数据

clear;clf;

x=-10:

0.2:

10;%产生坐标向量

y=-8:

0.2:

8;%产生坐标向量

[X,Y]=meshgrid(x,y);%由坐标向量产生坐标矩阵——meshgrid

r=sqrt(X.^2+Y.^2);

Z=sin(r)./r;

第二步:

指明绘图位置——默认

第三步:

调用三维曲面绘图指令——mesh绘图

mesh(X,Y,Z)

【法二】符号可视化——ezsurf

第一步:

定义可视化的符号对象

symsxy;r=sqrt(x.^2+y.^2);

f=sin(r)./r;

第二步:

调用ezmesh显示符号表达式z

ezmesh(f,[-10,10,-8,8])

1.23分析:

考查知识点——三维曲面的绘制

【法一】数据可视化——surf

第一步:

准备绘图数据

 

clear;clf;

x=-2:

0.1:

2;%产生坐标向量

y=x;%产生坐标向量

[X,Y]=meshgrid(x,y);%由坐标向量产生坐标矩阵——meshgrid

Z=X.^2+exp(Y).*abs(X);

第二步:

指明绘图位置——默认

第三步:

调用三维曲面绘图指令——surf绘图

surf(X,Y,Z)

【法二】符号可视化——ezsurf

第一步:

定义可视化的符号对象

symsxy;f=x.^2+exp(y).*abs(x);

%等价于f=sym('x.^2+exp(y).*abs(x)')

第二步:

调用ezsurf显示符号表达式z

ezsurf(f,[-2,2,-2,2])

1.24分析:

考查知识点——三维曲面的绘制

【法一】数据可视化——surf

第一步:

准备绘图数据

x=-2:

0.1:

2;%产生坐标向量

y=x;%产生坐标向量

[X,Y]=meshgrid(x,y);%由坐标向量产生坐标矩阵——meshgrid

Z=(X.^2+Y.^2)./6;%将X、Y代入函数中计算Y,——数组运算

第二步:

指明绘图位置——默认

第三步:

调用三维曲面绘图指令——surf绘图

surf(X,Y,Z)

【法二】符号可视化——ezsurf

第一步:

定义可视化的符号对象

symsxy;z=x^2+y^2;%等价于z=sym('x^2+y^2')

第二步:

调用ezsurf显示符号表达式z

ezsurf(z,[-2,2,-2,2])

1.25分析:

考查知识点——非均匀采样数据曲面的绘制方法(略)自己看书——下同

1.26分析:

考查知识点——坐标变换

1.27分析:

考查知识点——彗星图——comet函数

解题:

自己在命令窗口中演示

clear;clf;shg

t=linspace(0,pi,300);%采样变量

n=10;

x=n*cos(2*t).*cos(t).^2;%注意数组运算

y=n*sin(2*t).*sin(t).^2;%注意数组运算

plot(x,y)

holdon

comet(x,y,0.001)

1.28分析:

考查知识点——电影方式动画的产生

解题:

自己在命令窗口中演示

t=linspace(0,2*pi,200);%采样变量

x=cos(t);

y=sin(t);

fori=1:

200

plot(x(1:

i),y(1:

i),'c.',x,0,'-b')

axis([-1,1,-1,1])

M(i)=getframe;

end

shg,movie(M,2)

1.29分析:

考查知识点——图形窗口的使用,自己上机练习

1.30分析:

考查知识点——图形窗口的使用

补充知识点总结

1、MATLAB中常用函数和值(书上表1.3.2P14)

2、如何获取一个已定义变量的数据类型?

方法一:

whos要查看的变量名注:

查看多个变量时各变量之间用空格分开,不能用逗号分开。

方法二:

使用class函数,函数调用常用格式:

str=class(object)——函数返回object的类型。

object是常量或已定义的变量,下同。

方法三:

使用isa函数,函数调用常用格式:

n=is(object,'类型')——函数返回值为1,说明object为第二个参数指定的类型,0表示不是。

3、复数矩阵的创建方法和操作

复数矩阵的创建

【方法】

(1)直接输入法——同实数矩阵

(2)由实部和虚部间接创建

例:

复数数组的另一种输入方式。

M_r=[1,2,3;4,5,6];

M_i=[11,12,13;14,15,16];

则复数矩阵可由下面两种方式创建,必须保证上面两个矩阵大小是相同的。

CN1=M_r+i*M_i;

CN2=complex(M_r,M_i);

复数矩阵的操作

MA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1