习题一
1、试个MATLAB的工作空间中建立以下2个矩阵:A=[1 2]
12
34
B
??
=??
??,求出矩阵A和B
的乘积,并将结果赋给变量C。
>> A=[1 2];B=[1 2;3 4];
>> C=A*B
C =
7 10
2、利用MATLAB提供的帮助信息,了解inv命令的调用格式。
>> help inv
3、使用help命令查询函数plot的功能以及调用方法,然后利用plot命令绘制函数
y=sin(x)的图形,其中0xπ≤≤.
>>help plot
>>x=0:pi/1000:pi;
>>y=sin(x);
>>plot(x,y)
>>xlabel('x');
>>ylabel('y=sin(x)');
>>title('正弦函数');
4、试用不同的方法建立数组A=[1 ],了解怎样访问数组A的第二个元素,然后
将其更换为。
建立数组 :>>A=[1 ]
访问元素:>> A(2) ans =
更换元素:>>A(2)=
A =
5、已知矩阵
12
34
B
??
=??
??,试用MATLAB提供的关系运算命令将B中所有大于2的元素全改
为0。
第一种:
>> B=[1 2;3 4];
>> B(find(B>2))=0
B =
1 2
0 0
第二种:
>> B=[1 2;3 4];
>> for m=1:2
for n=1:2
if B(m,n)>2 B(m,n)=0; end
end
end
>> B
B =
1 2
0 0
6、已知矩阵
123
456
789
A
??
??
=??
??
??,试求矩阵A的左右翻转矩阵,上下翻转矩阵,然后在工作空
间中利用size命令查看矩阵A的大小。
(1)生成矩阵A
>> A=reshape(A,3,3)
A =
1 4 7
2 5 8
3 6 9 (2)左右翻转:
>> fliplr(A)
ans =
7 4 1
8 5 2
9 6 3 (3)上下翻转:
>> flipud(A)
ans =
3 6 9 2 5 8 1
4 7 (4)查看矩阵A的大小:>> size(A)
ans =
3 3
7、已知矩阵
12
34
B
??
=??
??,试求其转置、逆、迹、特征值、特征向量和B对应的行列式的
值。
>> B=[1:4];
B=reshape(B,2,2) %生成矩阵B
B =
1 3
2 4
>> B' %矩阵转置
ans =
1 2
3 4
>> inv(B) %矩阵的逆运算
ans =
=trace(B) %矩阵的迹
a =
5
>> [x,y]=eig(B) %矩阵的特征值y,特征向量x
x =
y =
>> V=det(B) %矩阵的行列式
V =
-2
8、分别建立一个33
阶的单位阵、随机阵和魔方阵。>> A=eye(3) %生成3*3阶的单位矩阵A
A =
1 0 0
0 1 0
0 0 1
>> B=rand(3) %生成3*3阶的随机矩阵B B =
>> C=magic(3) %生成3*3阶的魔方矩阵C
C =
8 1 6
3 5 7
4 9 2
9、已知多项式
2
()22
ax x x
=+-
,
32
()31
b x x x x
=+-+
。试求两个多项式的和与乘积。
>> A=[1 2 -2];B=[1 1 -3 1];
>> a=poly2sym(A),b=poly2sym(B)
a =
x^2 + 2*x - 2
b =
x^3 + x^2 - 3*x + 1
>> c=a+b
c =
x^3 + 2*x^2 - x - 1
>> d=conv(A,B);poly2sym(d)
ans =
x^5 + 3*x^4 - 3*x^3 - 7*x^2 + 8*x - 2
10.复数
i
e
z
i
z
i
z6
3
2
1
2
,
2
1
,
4
3
π
=
+
=
+
=表达,及计算>> 3
2
1
z
z
z
z=
。
>> z1=3+4*i;z2=1+2*i;z3=2*exp(pi/6*i); >> z=z1*z2/z3
z =
+
11、产生1×5的均布随机数组,进行如下操作:1)寻访数组的第三个元素;2)寻访
数组的第一、二、五个元素组成的子数组;3)寻访前三个元素组成的子数组;
4)寻访除前2个元素外的全部其他元素。
>> rand('state',0) %产生的随机数都与第一次运行产生的相同
>> A=rand(1,5) %产生1×5的均布随机数组
A =
>> A(3) %寻访数组 x 的第三个元素
ans =
>> A([1 2 5]) %寻访数组 x 的第一、二、五个元素组成的子数组
ans =
>> A(1:3) %寻访前三个元素组成的子数组
ans =
>> A(3:end) %寻访除前 2 个元素外的全部其他元素
ans =
12、试用两种方法用MATLAB计算38
第一种:
>> nthroot(-8,3)
ans =
-2
第二种:
>> syms x
solve('x^3+8',x)
ans =
-2
1 - 3^(1/2)*i
1 + 3^(1/2)*i
第三种:
>> x=-8;
sign(x)*abs(x).^(1/3)
ans =
-2
13、求1)
1)(4)(2(32+++++s s s s s 的“商”及“余”多项式。
>> a=[1 0 2];b=[1 4];c=[1 1];d=[1 0 1 1]; e=conv(a,b);f=conv(e,c); >> a=[1 0 2];b=[1 4];c=[1 1];d=[1 0 1 1];
>> e=conv(a,b);f=conv(e,c);
>> [k,r]=deconv(f,d) %k 是商,r 是余式
k =
1 5
r =
0 0 5 4 3
14、求方程 x^4+7x^3 +9x-20=0的全部根。
第一种方法:
>> p=[1 7 0 9 -20];
roots(p)
ans =
+
-
第二种方法:
>> compan(p)
ans =
-7 0 -9 20
1 0 0 0
0 1 0 0
0 0 1 0
>> eig(ans)
ans =
+
-
15、今有多项式P1(x)=x4-2x+1,P2(x)=x2+,要求先求得P(x)=P1(x)+P2(x),然后计
算xi=*i 各点上的P(xi)(i=0,1,2,…,5)值。
>> a=[1 0 0 -2 1];b=[1 4 ];
>> p1=poly2sym(a); p2=poly2sym(b);
>> p=p1+p2
p =
x^4 + x^2 + 2*x + 1/2
>> P=sym2poly(p);
>> i=0:5;xi=*i;
>> polyval(P,xi)
ans =
16、已知一线性方程组如下所示:
1231231233 3.6
24 2.1
45 1.4x x x x x x x x x +-=++=-++=-,试求其结果。
>> A=[3 1 -1;1 2 4;-1 4 5];
B=[ ];
B/A
ans =
习题二
1、编制一个函数,使得该函数能对输入的两个数值进行比较,并返回其中的最小值。function y=min(m,n)
if m y=m; else y=n; end 2、试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。如N=5,原来x 为:x=[ 1 3 5 7 9 ]而经过颠倒处理后x中数据的次序应该为:x=[ 9 7 5 3 1 ] function temp(x) if(nargin==0) error('没有参数'); elseif(nargin>1) error('参数太多'); end len=length(x); for i=1:len/2 tmp=x(i); x(i)=x(len-i+1); x(len-i+1)=tmp; end x 3、编制一个m程序,计算阶乘n!= 1×2×3×…×n function y=jiecheng(N) if N<0 error('N should be positive or zero'); end if N==0|N==1 y=1; else y=N*jiecheng(N-1); end 4.利用循环语句进行程序设计:假设定义m×n的矩阵A。判断矩阵A的第1列元素是否为0,若全为0,则从矩阵A中删除第1列 function B=liu(A) [m,n]=size(A); b=0; a=1; while a<=m if A(a,1)==0 b=b+1; end a=a+1; end if b==m A(:,1)=[]; B=A; else B=A; end 5、利用循环语句进行程序设计:在区间[-2,-]内,步长为,对函数y=f(x)=1+1/x 求值,并列表。将所得x值和y值分别存入向量r和s中。 function [r,s]=fun a=0; x=-2; while x<= y=1+1/x; a=a+1; r(a)=x; s(a)=y; x=x+; end 运行结果: >> [r,s]=fun r = s = 6、编程计算 63 2i i k = =∑ 编制m程序: function k=fun1(x) k=0; for i=0:x k=k+2^i; end 计算: >> fun(63) ans = +019 7.写一个MATLAB 小程序,求出最小的 n 值,使得 n! > realmax。请问 n 的值是 多少?此时 (n-1)! 的值又是多少? function y=findN01(realmax) maxN = 1000; for n=1:maxN value = prod(1:n); if value>realmax break; end end fprintf('n = %d\n', n); fprintf('(n-1)! = %d\n', prod(1:n-1)); 习题三 1、用subplot命令在同一图形输出窗口中绘制以下4个函数的图形: ,[0,3] y xx =∈ , s i n,[1 ,1 ] y x x x =∈ - , 2,[0,1.5] y x x =∈ , t a n,[0,1.3] y x x =∈ 。>> clear >> subplot(2,2,1); >> x=1::3; >> plot(x,x,'-r*'); >> subplot(2, 2,2); >> x=-1::1; >> plot(x,x.*sin(x),'-r*'); >> subplot(2, 2,3); >> x=0::; >> plot(x,x.^2,'-r*'); >> subplot(2,2,4); >> x=0::; >>plot(x,tan(x),'-r*'); 2、绘制曲线 0.2s in x y e x - = 在 [0,5] xπ ∈ 区间上的阶梯图。 >>x=0:*pi:5*pi; y=exp*x).*sin(x); plot(x,y);axis([0,*pi,0,*pi]); hold on stairs(x,y,'r'); 3、试绘制以极坐标形式表示的图形: 51 c o s 43 θ ρ?? =+ ? ??,其中 θ 的范围为 [0,8]π 。 >> x=0:*pi:8*pi; >> p=cos(5*x/4)+1/3; >> polar(x,p,'-r')