p2p种子-微软2003
![fnc文件](/uploads/image/0317.jpg)
2023年4月6日发(作者:ps羽化在哪)
-1-
习题二
1.如何理解“矩阵是
MATLAB最基本的数据对象”
答:因为向量可以看成是仅有
一行或一列的矩阵,单个数据(标
量)可以看成是仅含一个元素的矩
阵,故向量和单个数据都可以作为
矩阵的特例来处理。
因此,矩阵是MATLAB最基本、
最重要的数据对象。
2.设A和B是两个同维同
大小的矩阵,问:
(1)A*B和A.*B的
值是否相等
答:不相等。
(2)A./B和B.A的
值是否相等
答:相等。
(3)A/B和BA的值
是否相等
答:不相等。
(4)A/B和BA所代
表的数学含义是什么
答:A/B等效于B的逆右
乘A矩阵,即A*inv(B),而
BA等效于B矩阵的逆左乘A
矩阵,即inv(B)*A。
3.写出完成下列操作的
命令。
(1)将矩阵A第2~5行中第
1,3,5列元素赋给矩
阵B。
答:B=A(2:5,1:2:5);
或B=A(2:5,[135])
(2)删除矩阵A的第
7号元素。
答:A(7)=[]
(3)将矩阵A的每个
元素值加30。
答:A=A+30;
(4)求矩阵A的大小
和维数。
答:size(A);
ndims(A);
(5)将向量t的0
元素用机器零来代替。
答:
t(find(t==0))=eps;
(6)将含有12个元
素的向量x转换成34
矩阵。
答:reshape(x,3,4);
(7)求一个字符串
的ASCII码。
答:abs(‘123’);或
double(‘123’);
(8)求一个ASCII码
所对应的字符。
答:char(49);
4.下列命令执行后,L1、
L2、L3、L4的值分别是多少
A=1:9;B=10-A;...
L1=A==B;
L2=A<=5;
L3=A>3&A<7;
L4=find(A>3&A<7);
答:L1的值为[0,0,0,
0,1,0,0,0,0]
L2的值为[1,1,1,
1,1,0,0,0,0]
L3的值为[0,0,0,
1,1,1,0,0,0]
L4的值为[4,5,
6]
5.已知
23100.7780
4145655
325032
69.54543.14
A
完成下列操作:
(1)取出A的前3行
构成矩阵B,前两列构成矩阵
C,右下角32子矩阵构成
矩阵D,B与C的乘积构成矩
阵E。
答:B=A(1:3,:);
C=A(:,1:2);
D=A(2:4,3:4);
E=B*C;
(2)分别求E
E&D、E|D、~E|~D和
find(A>=10&A<25)。
答:E
01
00
01
,
E&D=
11
01
11
,
E|D=
11
11
11
,
~E|~D=
00
10
00
find(A>=10&A<25)=[1;
5]。
6.当A=[34,NaN,Inf,
-Inf,-pi,eps,0]时,分析
下列函数的执行结果:
all(A),any(A),isnan(A),
isinf(A),isfinite(A)。
答:all(A)的值为0
any(A)的值为1
isnan(A)的值为[0,1,0,
0,0,0,0]
isinf(A)的值为[0,0,1,
1,0,0,0]
isfinite(A)的值为[1,0,
0,0,1,1,1]
7.用结构体矩阵来存储5
名学生的基本情况数据,每名学生
的数据包括学号、姓名、专业和6
门课程的成绩。
答:student(1).id='0001';
-2-
student(1).name='Tom';
student(1).major='computer
';
student(1).grade=[89,78,67
,90,86,85];
8.建立单元矩阵B并回
答有关问题。
B{1,1}=1;
B{1,2}='Brenden';
B{2,1}=reshape(1:9,3,
3);
B{2,2}={12,34,2;54,21
,3;4,23,67};
(1)size(B)和
ndims(B)的值分别是多少
答:size(B)的值为2,
2。
ndims(B)的值为2。
(2)B(2)和B(4)的
值分别是多少
答:
B(2)=
147
258
369
,B(4)=
[12][34][2]
[54][21][3]
[4][23][67]
(3)B(3)=[]和
B{3}=[]执行后,B的值分别是
多少
答:当执行B(3)=[]后,
B={1,[1,4,7;
2,5,8;3,6,9],{12,34,
2;54,21,3;4,23,67}}
当执行B{3}=[]
后,
B={1,[];[1,4,
7;2,5,8;3,6,9],{12,
34,2;54,21,3;4,23,67}}
习题三
1.写出完成下列操作的
命令。
(1)建立3阶单位矩
阵A。
答:A=eye(3);
(2)建立5×6随机
矩阵A,其元素为[100,200]
范围内的随机整数。
答:
round(100+(200-100)*rand
(5,6));
(3)产生均值为1,
方差为的500个正态分布的
随机数。
答:
1+sqrt*randn(5,100);
(4)产生和A同样大
小的幺矩阵。
答:ones(size(A));
(5)将矩阵A对角线
的元素加30。
答:
A+eye(size(A))*30;
(6)从矩阵A提取主
对角线元素,并以这些元素
构成对角阵B。
答:B=diag(diag(A));
2.使用函数,实现方阵左
旋90o或右旋90o的功能。例
如,原矩阵为A,A左旋后得
到B,右旋后得到C。
14710
25811
36912
A
101112
789
456
123
B
321
654
987
121110
C
答:
B=rot90(A);
C=rot90(A,-1);
3.建立一个方阵A,求A
的逆矩阵和A的行列式的值,并验
证A与A-1是互逆的。
答:A=rand(3)*10;
B=inv(A);
C=det(A);
先计算B*A,再
计算A*B,由计算可知
B*A=A*B,即A·A-1=A-1·A是
互逆。
4.求下面线性方程组的
解。
123
123
12
422
3210
1238
xxx
xxx
xx
答:
A=[4,2,-1;3,-1,
;12,3,0];
b=[2;10;8];
x=inv(A)*b
方程组的解为
x=
6.0000
26.6667
27.3333
5.求下列矩阵的主对角
线元素、上三角阵、下三角阵、
秩、范数、条件数和迹。
(1)
-3-
1123
5142
3052
111509
A
(2)
0.43432
8.9421
B
答:
(1)取主对角
线元素:
diag(A);
上三角阵:
triu(A);
下三角阵:
tril(A);
秩:
rank(A);
范数:
norm(A,1);或
norm(A);或
norm(A,inf);
条件数:
cond(A,1);或
cond(A,2);或
cond(A,inf)
迹:
trace(A);
(2)【请参考(1)】。
6.求矩阵A的特征值和
相应的特征向量。
110.5
110.25
0.50.252
A
答:[V,D]=eig(A);
习题四
1.从键盘输入一个4位
整数,按如下规则加密后输
出。加密规则:每位数字都加
上7,然后用和除以10的余数
取代该数字;再把第一位与第
三位交换,第二位与第四位交
换。
答:
a=input('请输入4位整数:
');
A=[a/1000,a/100,a/10,a];
A=fix(rem(A,10));
A=rem(A+7,10);
b=A(3)*1000+A(4)*100+A(1
)*10+A(2);
disp(['加密后的值为:
',num2str(b)]);
2.分别用if语句和
switch语句实现以下计算,其
中a、b、c的值从键盘输入。
2,0.51.5
sin,1.53.5
ln,3.55.5
c
axbxcx
yabxx
c
bx
x
答:(1)用if语句实现计算:
a=input('请输入a的值:');
b=input('请输入b的值:');
c=input('请输入c的值:');
x=input('请输入x的值:');
ifx>=&x<
y=a*x^2+b*x+c;
end
ifx>=&x<
y=a*((sin(b))^c)+x;
end
ifx>=&x<
y=log(abs(b+c/x));
end
disp(['y=',num2str(y)]);
(2)用switch语句实现计
算:
a=input('请输入a的值:');
b=input('请输入b的值:');
c=input('请输入c的值:');
x=input('请输入x的值:');
switchfix(x/
case{1,2}
y=a*x^2+b*x+c;
casenum2cell(3:6)
y=a*((sin(b))^c)+x;
casenum2cell(7:10)
y=log(abs(b+c/x));
end
disp(['y=',num2str(y)]);
3.产生20个两位随机整数,输
出其中小于平均值的偶数。
答:
A=fix(10+89*rand(1,20));
sum=0;
fori=1:20
sum=sum+A(i);
end
B=A(find(A<(sum/20)));
C=B(find(rem(B,2)==0));
disp(C);
4.输入20个数,求其中
最大数和最小数。要求分别用
循环结构和调用MATLAB的
max函数、min函数来实现。
答:
(1)用循环结构实
现:
v_max=0;
v_min=0;
fori=1:20
x=input(['请输入第',
num2str(i),'数:']);
ifx>v_max
v_max=x;
end;
ifx
v_min=x;
end;
-4-
end
disp(['最大数为:',
num2str(v_max)]);
disp(['最小数为:',
num2str(v_min)]);
(2)用max函数、min
函数实现:
fori=1:5
A(i)=input(['请输入
第',num2str(i),'数:']);
end
disp(['最大数为:',
num2str(max(A))]);
disp(['最小数为:',
num2str(min(A))]);
5.已知:
236312222s
,分别用循环结构和调用
MATLAB的sum函数求s的值。
答:
(1)用循环结构实现:
s=0;
fori=0:63
s=s+2^i;
end
s
(2)调用sum函数实现:
s=0:63;
s=2.^s;
sum(s)
6.当n分别取100、1000、
10000时,求下列各式的值。
(1)
1
1111
1(1)(ln2)
234
n
n
(2)
111
1()
3574
(3)
11111
()
4166443n
(4)
224466(2)(2)
133557(21)(21)2
nn
nn
要求分别用循环结构和向量
运算(使用sum或prod函数)来实
现。
答:
(1)用循环结构实现:
sum=0;
fork=1:100
sum=sum+(-1)^(k+1)/k;
end
sum
使用sum函数:
x=[];
fork=1:10000
x=[x,
(-1)^(k+1)/k];
end
sum(x)
(2)用循环结构实现:
sum=0;
fork=1:100
sum=sum+(-1)^(k+1)/(2*k-
1);
end
sum
使用sum函数:
x=[];
fork=1:100
x=[x,
(-1)^(k+1)/(2*k-1)];
end
sum(x)
(3)用循环结构实现:
sum=0;
fork=1:100
sum=sum+1/(4^k);
end
sum
使用sum函数实现:
x=[];
fork=1:100
x=[x,1/(4^k)];
end
sum(x)
(4)用循环结构实现:
t=1;
fork=1:100
t=t*(((2*k)*(2*k))/((2*k
-1)*(2*k+1)));
end
t
使用prod函数实现:
x=[];
fork=1:100
x=[x,
((2*k)*(2*k))/((2*k-1)*(2*k+1)
)];
end
prod(x)
7.编写一个函数文件,求小于
任意自然数n的斐波那契
(Fibnacci)数列各项。斐波那契
数列定义如下:
1
2
12
1,1
1,2
,2
nnn
fn
fn
fffn
答:
functionx=fibnacci(n)
fori=1:n
ifi<=2
x(i)=1;
else
-5-
x(i)=x(i-1)+x(i-2);
end
end
8.编写一个函数文件,用
于求两个矩阵的乘积和点乘,
然后在命令文件中调用该函
数。
答:
函数文件:
function[x,y]=myfnc(A,
B)
try
x=A*B;
catch
x=[];
end
y=A.*B;
命令文件:
A=input('请输入矩阵A:');
B=input('请输入矩阵B:');
[x,y]=myfnc(A,B);
iflength(x)==0
display('两矩阵的维
数不匹配,无法进行乘积运算!');
else
disp('矩阵A和矩阵B
的乘积为:');
x
end
disp('矩阵A和矩阵B的点乘
为:');
y
9.先用函数的递归调用
定义一个函数文件求
1
n
m
i
i
,然后调用该函数文
件求
1005010
2
111
1
kkk
kk
k
。
答:
函数文件:
functionsum=myfnc(n,m)
ifn<=1
sum=1;
else
sum=myfnc(n-1,
m)+n^m;
end
在命令窗口中调用文件,计
算
1005010
2
111
1
kkk
kk
k
:
sum=myfnc(100,1)+
myfnc(50,2)+myfnc(10,-1)
10.写出下列程序
的输出结果。
①s=0;
a=[12,13,14;15,1
6,17;18,19,20;21,22,
23];
fork=a
for
j=1:4
if
rem(k(j),2)~=0
s=s+k(j);
end
end
end
s
答:执行结果为
s=108
②命令文件执行后的结
果为:
x=
41220
y=
246
第五章
1.(1)x=-10::10;
y=100./(1+x.^2);
plot(x,y)
(2)x=-10::10;
y=1/(2*pi)*exp(-x.^2/2);
plot(x,y)
(3)ezplot('x^2+y^2=1')
(4)
t=-10::10;
x=t.^2;
y=5*t.^3;
plot(x,y)
2.
(1)
theta=0::2*pi;
rho=5*cos(theta)+4;
polar(theta,rho)
(2)
theta=::2*pi;
rho=12./sqrt(theta);
polar(theta,rho)
(3)theta=::2*pi;
rho=5./cos(theta)-7;
polar(theta,rho)
(4)
theta=::2*pi;
rho=pi/3.*theta.^2;
polar(theta,rho)
3.
(1)
t=0:pi/100:2*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z)
(2)
u=0:pi/100:2*pi;
v=0:pi/100:2*pi;
-6-
x=(1+cos(u)).*cos(v);
y=(1+cos(u)).*sin(v);
z=sin(u);
plot3(x,y,z)
(3)
(4)
5.
plot函数:
>>x=linspace(-10,10,200);
>>y=[];
>>forx0=x
ifx0>0
y=[y,x0.^2+(1+x0).^(1/4)+5
];
elseifx0==0
y=[y,0];
elseifx0<0
y=[y,x0.^3+sqrt(1-x0)-5];
end
end
>>plot(x,y)
fplot函数:
fplot('(x<0).*(x.^3+sqrt(1
-x)-5)+(x==0).*0+(x>0).*(x.^2+
(1+x).^(1/4)+5)',[-10,10])
第六章
1.
A=randn(10,5)
(1)mean(A);均值
std(A);标准方差
(2)max(max(A));最大元
素min(min(A));最小元
素
(3)B=sum(A,2);A每行
元素的和sum(B);A全部元
素之和
(4)sort(A);A的每列元
素按升序排列
sort(A,2,’descend’);A的
每行元素按将序排列
2.
(1)
(2)
X=[6481
100];
Y=1:10;
X1=1:100;
Y1=interp1(X,Y,X1,'cubic')
3.
x=[3141];
y=[5148];
P=polyfit(x,y,3)
P=
+003*
所以它的线性拟合曲线为:
p(x)=—+8433
4.
(1)P1=[032];P2=[5-1
2];P3=[10];
P=conv(conv(P1,P2),P3)
P=
0
所以P(x)=15x5++
(2)
roots(P)
ans=
+
-
(3)
i=0:10;
xi=*i;
polyval(P,xi)
ans=
5.
(1)
建立函数文件:
functionf=fxy(u)
x=u(1);y=u(2);
f=3.*x.^2+2*x.*y+y.^2
在命令窗口中输入以下命令:
[U,fmin]=fminsearch('fxy',
[1,1])
结果:
U=
*
fmin=
(2)
f=inline('-sin(x)-cos(x.^2
)');
fmax=fminbnd(f,0,pi)
fmax=
6.
(1)x=[pi/6pi/4pi/3];
f=inline('sin(x).^2+cos(x)
.^2');
dx=diff(f([x,5*pi/12]))/(p
i/12)可参见第157页例题
dx=
000
x=pi/2时单独计算:
x=pi/2;
f=inline('sin(x).^2+cos(x)
.^2');
diff(f([x,pi]))/(pi/2)
ans=
0
(2)
x=1:3;
f=inline('sqrt(x.^2+1)');
dx=diff(f([x,4]))
结果:
dx=
7.(1)
f=inline('sin(x).^5.*sin(5
*x)');
quad(f,0,pi)
ans=
-7-
(2)
f=inline('(1+x.^2)./(1+x.^
4)');
quad(f,-1,1)
ans=
(3)
f=inline('x.*sin(x)./(1+co
s(x).^2)');
quad(f,0,pi)
ans=
(4)
f=inline('abs(cos(x+y))');
dblquad(f,0,pi,0,pi)
ans=
8.
N=64;%采样点数
T=5;%采样时间
终点
t=linspace(0,T,N);%给出
N个采样时间ti(i=1:N)
y=exp(-t);%求各采样
点样本值y
dt=t(2)-t(1);%
采样周期
f=1/dt;%采
样频率
Y=fft(y);%计
算y的快速傅里叶变换Y
F=Y(1:N/2+1);%F(k)
=Y(k)
f=f*(0:N/2)/N;%使
频率轴f从0开始
plot(f,abs(F))%绘
制振幅-频率图
9.
(1)
矩阵求逆法:
A=[235;374;1-71];
b=[10;3;5];
x=inv(A)*b
x=
矩阵除法法:
A=[235;374;1-71];
b=[10;3;5];
x=Ab
x=
矩阵分解法:
A=[235;374;1-71];
b=[10;3;5];
[L,U]=lu(A);
x=U(Lb)
x=
(2)方法同(1)
10.
函数文件:
line_solution(A,b)
function
[x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
ifnorm(b)>0
ifrank(A)==rank([A,b])
ifrank(A)==n
disp('原方程组有唯一解
x');
x=Ab;
else
disp('原方程组有无穷个解,
特解为x,齐次方程组的基础解系为
y');
x=Ab;
y=null(A,'r');
end
disp('方程组无解');
x=[];
end
else
disp('原方程组有零解x');
x=zeros(n,1);
ifrank(A)
disp('方程组有无穷个解,基
础解系为y');
y=null(A,'r');
end
end
程序:
A=[21-11;42-21;21-1
-1];
b=[1;2;1];
[x,y]=line_solution(A,b)
结果:
原方程组有无穷个解,特解为
x,齐次方程组的基础解系为y
Warning:Rankdeficient,
rank=2,tol=.
>Inline_solutionat11
方程组无解
x=
[]
y=
0
0
00
11.
(1)
f=inline('x-sin(x)./x');
x=fzero(f,
x=
(2)
f=inline('(sin(x).^2).*exp
.*x).*abs(x)');
x=fzero(f,
x=
-8-
12.
函数文件:
functionf=fxy(u)
x=u(1)
y=u(2)
f(1)=*sin(x)*cos(y)
f(2)=*cos(x)+*sin(y)
在命令窗口输入以下命令:
x=fsolve('fxy',[,],optimse
t('Display','off'))
结果:
x=
15.
A=[-120;-12-1;-12-1;-1
2-1;02-1];
d=[-1;0;1];
B=spdiags(A,d,5,5);
b=[10000]';
x=(inv(B)*b)'
x=
更多推荐
fnc文件
发布评论