2019年matlab作业习题集

2019年matlab作业习题集
2019年matlab作业习题集

习题一

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=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')

相关主题
相关文档
最新文档