文档库 最新最全的文档下载
当前位置:文档库 › (最新版)Matlab编程实验报告

(最新版)Matlab编程实验报告

(最新版)Matlab编程实验报告
(最新版)Matlab编程实验报告

中北大学Matlab编程实验报告

班级:

姓名:

学号:

2013 年11 月

2,实验一Matlab运算基础

一、实验目的

1、熟悉启动和退出MATLAB的方法。

2、熟悉MATLAB工作窗口的组成。

3、掌握建立矩阵的方法,矩阵分析与处理。

4、掌握MATLAB各种表达式的书写规则以及常用函数的使用。

二、实验内容

1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。

z1=2*sin(85*pi/180)/(1+exp(2))

z1 =

0.2375

(2),其中

x=[2,1+2*i;-0.45,5]

x =

2.0000 1.0000 + 2.0000i

-0.4500 5.0000

z2=1/2*log(x+sqrt(1+x*x))

z2 =

0.7114 - 0.0253i 0.8968 + 0.3658i

0.2139 + 0.9343i 1.1541 - 0.0044i

(3)

0.30.3

3sin(0.3), 3.0, 2.9, 2.8,,2.8,2.9,3.0 2

a a

e e

z a a

-

-

=+=---

提示:利用冒号表达式生成a向量,求各点的函数值时用点乘运算。

a=-3.0:0.1:3.0

a =

Columns 1 through 9

-3.0000 -2.9000 -2.8000 -2.7000 -2.6000 -2.5000 -2.4000 -2.3000 -2.2000

Columns 10 through 18

-2.1000 -2.0000 -1.9000 -1.8000 -1.7000 -1.6000 -1.5000 -1.4000 -1.3000

Columns 19 through 27

-1.2000 -1.1000 -1.0000 -0.9000 -0.8000 -0.7000 -0.6000 -0.5000 -0.4000

Columns 28 through 36

-0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000

Columns 37 through 45

0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000

1.3000 1.4000

Columns 46 through 54

1.5000 1.6000 1.7000 1.8000 1.9000

2.0000 2.1000

2.2000 2.3000

Columns 55 through 61

2.4000 2.5000 2.6000 2.7000 2.8000 2.9000

3.0000

>> z3=(exp(0.3.*a)-exp(-0.3.*a))/2.*sin(a+0.3)

z3 =

Columns 1 through 9

0.4387 0.5072 0.5640 0.6089 0.6424 0.6648 0.6766 0.6784 0.6709

Columns 10 through 18

0.6549 0.6313 0.6011 0.5652 0.5247 0.4805 0.4337

0.3854 0.3366

Columns 19 through 27

0.2881 0.2410 0.1962 0.1543 0.1162 0.0824 0.0535 0.0299 0.0120

Columns 28 through 36

-0.0000 -0.0060 -0.0060 0 0.0117 0.0288 0.0509 0.0775 0.1080

Columns 37 through 45

0.1418 0.1780 0.2159 0.2547 0.2934 0.3311 0.3669 0.3998 0.4289

Columns 46 through 54

0.4532 0.4719 0.4841 0.4891 0.4862 0.4748 0.4543 0.4243 0.3846

Columns 55 through 61

0.3350 0.2755 0.2061 0.1272 0.0392 -0.0574 -0.1619

(4),其中t=0:0.5:2.5

提示:用逻辑表达式求分段函数值。

t=0:0.5:2.5;

z4=(t>=0 & t<1).*(t.*t)+(t>=1 & t<2).*(t.*t-1)+(t>=2 & t<3).*(t.*t-2.*t-1)

z4 =

0 0.2500 0 1.2500 -1.0000 0.2500

2.已知

求下列表达式的值:

(1)A+6.*B和A-B+I(其中I为单位矩阵)。

(2)A*B和A.*B 。

(3)A^3和A.^3 。

(4)A/B和B\A 。

(5)[A,B]和[A([1,3],:);B^2] 。

A=[12 34 -4;34 7 87;3 65 7];

B=[1 3 -1;2 0 3;3 -2 7];

z1=A+6.*B

z1 =

18 52 -10

46 7 105

21 53 49

C=eye(3);

z2=A-B+C

z2 =

12 31 -3

32 8 84

0 67 1

z3=A*B

z3 =

68 44 62

309 -72 596

154 -5 241

z4=A.*B

z4 =

12 102 4

68 0 261

9 -130 49

z5=A^3

z5 =

37226 233824 48604

247370 149188 600766

78688 454142 118820 z6=A.^3

z6 =

1728 39304 -64

39304 343 658503

27 274625 343

z7=A/B

z7 =

16.4000 -13.6000 7.6000

35.8000 -76.2000 50.2000

67.0000 -134.0000 68.0000

z8=B\A

z8 =

109.4000 -131.2000 322.8000

-53.0000 85.0000 -171.0000

-61.6000 89.8000 -186.2000

z9=[A, B]

z9 =

12 34 -4 1 3 -1

34 7 87 2 0 3

3 65 7 3 -2 7

z10=[A([1,3],:);B^2]

z10 =

12 34 -4

3 65 7

4 5 1

11 0 19

20 -5 40

3.设有矩阵A和B

(1)求它们的乘积C 。

(2)将矩阵C的右下角3×2子矩阵赋给D

(3)查看MATLAB工作空间使用情况。

A=[1 2 3 4 5 ;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25];

B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11];

C=A*B

C =

93 150 77

258 335 237

423 520 397

588 705 557

753 890 717

D=C(3:5,2:3)

D =

520 397

705 557

890 717

whos

Name Size Bytes Class Attributes

A 5x5 200 double

B 5x3 120 double

C 5x3 120 double

D 3x2 48 double

4.完成下列操作:

(1)求[100,999]之间能被21整除的数的个数。

提示:先利用冒号表达式,再利用find和length函数。

>> A=100:999;

>> B=find(mod(A,21)==0)

B =

Columns 1 through 16

6 2

7 4

8 6

9 90 111 132 153 174 195 216 237 258 279 300 321

Columns 17 through 32

342 363 384 405 426 447 468 489 510 531 552

573 594 615 636 657

Columns 33 through 43

678 699 720 741 762 783 804 825 846 867 888 >> C=length(B)

C =

43

>>

(2)建立一个字符串向量,删除其中的大写字母。

>> X='LIsa is A BeAutiful Girl';

>> Y=find(X>='A'&X<='Z')

Y =

1 2 9 11 13 21

>> X(Y)=[]

X =

sa is eutiful irl

提示:利用find函数和空矩阵。

5.由指令A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。(提示:find和sub2ind)>> A=rand(3,5)

A =

Columns 1 through 4

0. 686 0. 803 0. 736 0. 816

0. 799 0. 679 0. 663 0. 989

0. 444 0. 057 0. 531 0. 228

Column 5

0. 809

0. 208

0. 031

>> K=find(A>0.5)

K =

1

2

3

4

8

10

12

[C,D]=ind2sub(size(A),K)

C =

1

2

3

1

2

1

3

D =

1

1

1

2

3

4

4

>>

6.先运行clear, format long, A=rand(3,3),然后根据A写出两个矩阵:一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同。(提示:diag)

>> clear

>> format long

>> A=rand(3,3)

A =

0. 773 0. 168 0. 609

0. 333 0. 557 0. 421

0. 916 0. 562 0. 890

>> b=diag(A)

b =

0. 773

0. 557

0. 890

>> B=diag(b)

B =

0. 773 0 0

0 0. 557 0

0 0 0. 890

>> C=A-B

C =

0 0. 168 0. 609

0. 333 0 0. 421

0. 916 0. 562 0

>>

三、实验报告及要求

实验报告给出详细的实验过程、代码以及实验结果,必要时按照实验任务要求对结果进行分析。

实验二 多项式及字符运算

一、实验目的

1、掌握多项式的表示与创建方法。

2、掌握多项式的四则运算以及多项式求根方法。

3、掌握字符串数组的创建及操作方法。

二、实验内容

1、已知,分别取和一个矩阵,求在处的值。 >> p=[2 -1 0 3]; >> x=2;

>> y=polyval(p,x) y = 15 >> x1=[1 2;3 4]; >> y1=polyval(p,x1) y1 =

4 1

5 48 115

2、 有3个多项式4322123()245,()2,()23,p x x x x p x x p x x x =+++=+=++试进行下列操作:

求=+。

(1) 求的根。 >> p1=[1 2 4 0 5]; >> p2=[1 2]; >> p3=[1 2 3]; >> R=conv(p2,p3) R =

1 4 7 6

>> p4=[0 1 4 7 6 ];

p5=p1+p4

p5 =

1 3 8 7 11

>> r=roots(p5)

r =

-1.3840 + 1.8317i

-1.3840 - 1.8317i

-0.1160 + 1.4400i

-0.1160 - 1.4400i

>>

(2)当x取矩阵A的每一元素时,求P(x)的值。其中

> A=[-1 1.2 -1.4;0.75 2 3.5;0 5 2.5];

>> y=polyval(p5,A)

y =

1.0e+003 *

0.0100 0.0382 0.0125

0.0223 0.0970 0.4122

0.0110 1.2460 0.1644

>>

(3)当以矩阵A为自变量时,求P(x)的值。其中A的值与(3)相同。

X=A

X =

-1.0000 1.2000 -1.4000

0.7500 2.0000 3.5000

0 5.0000 2.5000

>> Y=X^4+3*X^3+8*X^2+7*X^1+11

Y =

1.0e+003 *

0.0076 -0.1172 -0.0665

0.1437 1.3900 1.1754

0.1934 1.7474 1.5198

3.用两种方法建立如下的二维字符串数组:第一行为“Matlab编程”,第二行为“实验环节”,最后利用该二维字符串形成一个一行字符串数组,“Matlab 编程实验环节”>> A=['Matlab编程';'实验环节']

A =

Matlab编程

实验环节

>> B=str2mat('Matlab编程','实验环节')

B =

Matlab编程

实验环节

>> C=[B(1,:),B(2,:)]

C =

Matlab编程实验环节

三、实验报告及要求

实验报告给出详细的实验代码以及实验结果,必要时按照实验任务要求对结果进行分析。

实验三 Matlab 符号计算

一、实验目的

1、熟练掌握MATLAB 符号表达式的创建

2、熟练掌握符号表达式的代数运算

3、掌握符号表达式的化简和替换

4、熟练掌握符号微积分

5、熟练掌握符号方程的求解

二、实验内容

1. 创建符号表达式:。 (用两种方式分别创建) >> f=sym('a*x^3+b*x^2+c*x+d') f =

a*x^3 + b*x^2 + c*x + d syms a b c d

>> f=a*x^3+b*x^2+c*x+d f =

a*x^3 + b*x^2 + c*x + d 2. 创建符号矩阵。

222cos()sin()1020a x b y A ax by cz ++??=?++?? >> A=sym('[a*cos(x)+b*sin(y) 10+20;a*x^2+b*y^2+c*z^2 sqrt(t*t+1)]') A =

[ a*cos(x) + b*sin(y), 30]

[ a*x^2 + b*y^2 + c*z^2, (t^2 + 1)^(1/2)]

3. 已知表达式,计算当时的值;计算与的复合函数,、的逆函数。

f=1-sin(x)*sin(x);

>> x=1

x =

1

>> subs(f)

ans =

0.2919

> f=sym('1-sin(x)*sin(x)');

>> g=sym('2*x+1');

>> compose(f,g)

ans =

1 - sin(2*x + 1)^2

>> finverse(f)

Warning: finverse(1 - sin(x)^2) is not unique.

ans =

asin((1 - x)^(1/2))

>> finverse(g)

ans =

x/2 - 1/2

>>

4. 符号函数,分别对、、、进行微分,对趋向于1求极限,并计算对的二次、三次微分,用findsym得出符号变量。

syms x y a b c d

f=a*x^3+b*y^2+c*y+d;

>> A=diff(f,x)

A =

3*a*x^2

>> B=diff(f,y)

B =

c + 2*b*y

>> C=diff(f,c)

C =

y

>> D=diff(f,d)

D =

1

>> L=limit(a*x^3+b*y^2+c*y+d,y,1)

a*x^3 + b + c + d

> E=diff(f,x,2)

E =

6*a*x

>> F=diff(f,x,3)

F =

6*a

>> findsym(E)

ans =

a,x

>> findsym(F)

ans =

a

>>

>>

5. 求极限。

syms n;

L=limit(symsum(1/2^n,n,0,inf),n,inf) L =

6. 求定积分和不定积分。

syms x;

>> f=sqrt(x)/(1+x)^2;

>> int(f,x,1,inf)

ans =

pi/4 + 1/2

>> syms x y;

>> q=x*exp(-x*y);

I=int(q)

I =

-(x*y + 1)/(y^2*exp(x*y))

>> S=int(I)

S =

(x*y + 2)/(y^3*exp(x*y))

>>

7. 求微分方程在满足,的解。

y=dsolve('D2y+2*Dy+2*y','y(0)=1','Dy(0)=0','x') y =

cos(x)/exp(x) + sin(x)/exp(x)

8. 求解微分方程组

[x,y]=dsolve('Dx=2*x+3*y','Dy=x-2*y','x(0)=1','y(0)=2','t')

x =

(exp(7^(1/2)*t)*(2*7^(1/2) - 3))/2 - (2*7^(1/2) + 3)/(2*exp(7^(1/2)*t)) + (7^(1/2)*exp(7^(1/2)*t)*(2*7^(1/2) - 3))/7 + (7^(1/2)*(2*7^(1/2) + 3))/(7*exp(7^(1/2)*t))

y =

(7^(1/2)*exp(7^(1/2)*t)*(2*7^(1/2) - 3))/14 + (7^(1/2)*(2*7^(1/2) + 3))/(14*exp(7^(1/2)*t))

>>,其中

9. 解微分方程的通解。

>

> y=dsolve('Dy+y*tanx=cosx','x')

y =

(cosx - C11/exp(tanx*x))/tanx

10、求解方程组

[x,y,z]=solve('x+2*y-z=7','x+z=3','x^2+3*y^2=28','x','y','z')

x =

15/4 - 37^(1/2)/4

37^(1/2)/4 + 15/4

y =

37^(1/2)/4 + 5/4

5/4 - 37^(1/2)/4

z =

37^(1/2)/4 - 3/4

- 37^(1/2)/4 - 3/4

三、实验报告及要求

实验报告给出详细的实验代码以及实验结果,必要时标注代码注释,并按照实验任务要求对结果进行分析。

相关文档