习题1解答物教文档格式.docx
《习题1解答物教文档格式.docx》由会员分享,可在线阅读,更多相关《习题1解答物教文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
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'
last'
[row,col]=find(...)
[row,col,v]=find(...)
[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(s)
“单下标”寻访。
生成“s指定的”一维数组。
S若是“行数组”(或“列数组”),则A(s)就是长度相同的“行数组”(或“列数组”)
A(L)
“逻辑1”寻访。
生成“一维”列数组:
由与A同样大小的“逻辑数组”L中的“1”元素选出A的对应元素;
按“单下标”次序排成长列组成。
A(r,c)=Sa
以“双下标”方式,对子数组A(r,c)进行赋值;
Sa的“行宽、列长”必须与A(r,c)的“行宽、列长”相同
)=D(:
全元素赋值方式。
结果:
保持A的“行宽、列长”不变。
条件:
A、D两个数组的总元素相等,但“行宽、列长”不一定相同
A(s)=Sa
按“单下标”方式,对A的部分元素重新赋值。
s单下标数组的长度必须与“一维数组”Sa的长度相等,但是s、Sa不一定同是“行数组”或“列数组”
例:
不同寻访和赋值方式示例。
在MATLAB中创建下面的矩阵
a=1:
8;
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:
16
(10)如何获取矩阵的第2到6行,3到7列的元素改为1:
25——A(2:
7)=reshape(1:
25,5,5)
(11)如何删除矩阵的第2、5、7列——A(:
[257])=[]
(12)如何删除矩阵的第13行——A([13],:
)=[]
(13)如何获取矩阵中大于6的元素——A(A>
6)
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
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;
100
L=L+(2*n-1).^2;
L
法二
n=1;
whilen<
=100
L=L+(2*n-1).^2;
n=n+1;
法三
n=1:
100;
y=(2*n-1).^2;
L=sum(y)
1.20分析:
考查知识点——选择结构
x=input('
x='
ifx<
y=0
elseifx>
3&
x<
8
y=(x-3)/5
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:
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
x=-2:
0.1:
2;
y=x;
Z=X.^2+exp(Y).*abs(X);
调用三维曲面绘图指令——surf绘图
surf(X,Y,Z)
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分析:
%由坐标向量产生坐标矩阵——meshgrid
Z=(X.^2+Y.^2)./6;
%将X、Y代入函数中计算Y,——数组运算
z=x^2+y^2;
%等价于z=sym('
x^2+y^2'
ezsurf(z,[-2,2,-2,2])
1.25分析:
考查知识点——非均匀采样数据曲面的绘制方法(略)自己看书——下同
1.26分析:
考查知识点——坐标变换
1.27分析:
考查知识点——彗星图——comet函数
自己在命令窗口中演示
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;
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);
复数矩阵的操作
MATL