实验二 数组.docx

上传人:b****5 文档编号:5334747 上传时间:2022-12-15 格式:DOCX 页数:18 大小:239.01KB
下载 相关 举报
实验二 数组.docx_第1页
第1页 / 共18页
实验二 数组.docx_第2页
第2页 / 共18页
实验二 数组.docx_第3页
第3页 / 共18页
实验二 数组.docx_第4页
第4页 / 共18页
实验二 数组.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

实验二 数组.docx

《实验二 数组.docx》由会员分享,可在线阅读,更多相关《实验二 数组.docx(18页珍藏版)》请在冰豆网上搜索。

实验二 数组.docx

实验二数组

 

MATLAB原理及应用

 

实验二数组(矩阵)及其运算

一.实验目的

1、掌握MATLAB软件环境下进行的数值数组(矩阵)的创建和访问的基本方法。

2、掌握数值数组(矩阵)的算术运算、逻辑运算

二.实验设备

计算机、MATLAB软件

三.实验内容和程序

1、建立

(1)求矩阵A和B的积,矩阵A左除B,以及矩阵A的2次方

(2)求数组A和B的积,数组A左除B,及数组A的2次方

程序:

(1)

>>A=[1,2,1;2,-5,-1;4,10,3]

A=

121

2-5-1

4103

>>B=[2-13;31-5;4-11]

B=

2-13

31-5

4-11

>>C1=A*B;

>>C2=A\B;

>>C3=A^2;

>>C1,C2,C3

C1=

120-6

-15-630

503-35

C2=

0.93330.4000-2.1333

-0.73330.4000-1.4667

2.5333-2.20008.0667

C3=

922

-12194

36-123

(2)

>>D1=A.*B;

>>D2=A./B;

>>D3=A.^2;

>>D1,D2,D3

D1=

2-23

655

16-103

D2=

0.5000-2.00000.3333

0.66675.00000.2000

1.0000-10.00003.0000

D3=

141

4251

161009

2.建立矩阵

(1)用两种方法索引出A矩阵第3行第2列的元素,并将其值改为自己的学号加20

(2)索引出A矩阵第2行至第4行、第二列至第5列的所有元素

程序:

(1)

>>A=[15253-14

4611843

6-131258

21310685]

A=

15253-14

4611843

6-131258

21310685

>>a=A(3,2)

a=

-1

>>A(7)

ans=

-1

>>A(3,2)=56

A=

15253-14

4611843

65631258

21310685

(2)>>B=A(2:

4,2:

5)

B=

61184

563125

131068

3、使用两种方法建立范围为

的向量,使得向量中的元素相邻元素的间隔是2

(1)改变第二个元素的值,并将其赋给一个新的变量(学号加20),并求两个向量的点积

(2)从第二个元素开始提取三个元素,并与向量[123]做叉积

程序:

(1)

>>A=0:

2:

20

A=

02468101214161820

>>B=A

B=

02468101214161820

>>B

(2)=56

B=

056468101214161820

(2)>>b=B(3:

5)

b=

468

>>c=[1,2,3]

c=

123

>>D=cross(b,c)

D=

2-42

4、复数

表达,及计算

程序:

>>z1=3+4*i;z2=1+2*i;z3=2*exp(pi*i/6);

>>z=z1*z2*z3

z=

-18.6603+12.3205

5、建立随机矩阵:

(1)在区间[10,学号加40]内均匀分布的5阶随机矩阵A。

然后判断A的元素能否被3整除。

(2)均值为(学号/10)、方差为(100*学号)的5阶正态分布随机矩阵

(3)对

(1)向右取整,对

(2)向左取整数

程序:

(1)>>a=10+(36+40-10)*rand(5)

a=

63.771816.437720.402519.364553.2789

69.782328.380974.059137.836212.3570

18.381146.094273.173070.438566.0425

70.282873.195542.034862.285771.6436

51.735773.682662.818573.326554.7965

显然不能被3整除

(2)>>b=36/10+36*100*randn(5)

b=

1.0e+04*

0.37280.32020.5182-0.0364-0.0105

0.2620-0.41260.1174-0.0866-0.0590

-0.1089-0.3844-0.27140.11530.2263

0.1062-0.29110.49370.11300.3939

-0.2831-1.0596-0.6158-0.31100.3997

(3)对

(1)向右取整:

>>ceil(a)

ans=

6417212054

7029753813

1947747167

7174436372

5274637455

(2)向左取整:

>>floor(b)

ans=

372832015181-365-105

2620-41261174-866-590

-1089-3845-271511522263

1061-2911493611293939

-2831-10596-6158-31103996

实验三MATLAB的符号运算

1.提取符号表达式

的自由变量

(当符号表达式中含有多余一个符号变量时,只有一个变量是独立变量,其余的符号当作常量。

如果不指定那一个变量当作是自由变量,matlab将基于一定原则选择一个自由变量。

提示:

findsym(s,n)

程序:

>>symsaruzm

>>h=sym('a+r^2+u^2+z+m^2');

>>findsym(h)

ans=

a,m,r,u,z

2.在MATLAB中计算多项式

的父母和分子

(提示:

使用[n,d]=numden(A))

程序:

>>A=sym('(x^3+x^2+1)/(x^2+2)+(2*x+5)/(3*x-2)');

>>[n,d]=numden(A)

n=

3*x^4+3*x^3+3*x^2+7*x+8

d=

(3*x-2)*(x^2+2)

2.1、建立符号函数

(1)提取该表达式的分子和分母,并分别付给两个变量

(2)对这两个变量分别进行代数运算(加减乘除及乘方)

程序:

(1)>>A=sym('3/2*x^3+2/3*x^2+3/5*x');

>>[n,d]=numden(A)

n=

45*x^3+20*x^2+18*x

d=

30

(2)>>a1=n-d;

>>a2=n+d;

>>a3=n*d;

>>a4=n/d;

>>a5=n^d;

>>a=[a1;a2;a3;a4;a5]

a=

45*x^3+20*x^2+18*x-30

45*x^3+20*x^2+18*x+30

1350*x^3+600*x^2+540*x

(3*x^3)/2+(2*x^2)/3+(3*x)/5

(45*x^3+20*x^2+18*x)^30

3.在MATLAB中,按照不同的方式合并表达式

的参数类项。

程序:

>>symsxy

>>f=sym('(x^3+exp(-y)*x^2-y)*(sqrt(x)*y+exp(3*y)*x)');

>>R1=collect(f,x);

>>R2=collect(f,y);

>>R3=collect(f,exp(y));

>>R2=collect(f,exp(y));

>>R=[R1;R2;R3]

R=

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

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

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

3.1.按

来合并表达式

的同类项。

程序:

>>symsxt

>>f=sym('(x^2+x*exp(-t)+1)*(x+exp(-t))');

>>collect(f,exp(-t))

ans=

x*exp(-2*t)+(2*x^2+1)*exp(-t)+x*(x^2+1)

4、使用simple和simplify两个指令分别化简

,比较两个结果有什么不同

程序:

>>f=sym((1/(3*x^3)+6/(4*x^2)-5/x+8)^(1/3));

>>simplify(f)

ans=

((48*x^3-30*x^2+9*x+2)/(6*x^3))^(1/3)

>>simple(f)

simplify:

(6^(2/3)*((48*x^3-30*x^2+9*x+2)/x^3)^(1/3))/6

radsimp:

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

simplify(100):

((48*x^3-30*x^2+9*x+2)/(6*x^3))^(1/3)

combine(sincos):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

combine(sinhcosh):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

combine(ln):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

factor:

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

expand:

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

combine:

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

rewrite(exp):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

rewrite(sincos):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

rewrite(sinhcosh):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

rewrite(tan):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

mwcos2sin:

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

collect(x):

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

ans=

(3/(2*x^2)-5/x+1/(3*x^3)+8)^(1/3)

5.求级数1+x+x2+…+xk+…和

的和。

(使用symsum函数)

程序:

>>symsum(x^k,k,0,inf)

ans=

piecewise([1<=x,Inf],[abs(x)<1,-1/(x-1)])

>>symsum(x^k/sym('k!

'),k,0,inf)

ans=

exp(x)

6.分别求下例积分

(1)

(2)

(3)

程序:

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

>>int(f)

ans=

atan(x)

(2)>>symsab

>>int(f,a,b)

ans=

atan(b)-atan(a)

(3)>>int(f,0,4)

ans=

atan(4)

>>eval(ans)

ans=

1.3258

7.

程序:

>>y=sym('sin(x^2+2)');

>>diff(y)

ans=

2*x*cos(x^2+2)

>>diff(y,2)

ans=

2*cos(x^2+2)-4*x^2*sin(x^2+2)

>>diff(y,3)

ans=

-12*x*sin(x^2+2)-8*x^3*cos(x^2+2)

8.求三元非线性方程组

的解

程序:

>>A=sym('x^2+2*x+1=0');

>>B=sym('x^2+3*z');

>>C=sym('2*y+z^2');

>>[x,y,z]=solve(A,B,C)

x=

-1

y=

-1/18

z=

-1/3

实验四MATLAB程序设计

1.为

编写赋值程序。

建立M文本程序:

x=input('x=');

ifx>1

y=x^2+1;

elseifx==1

y=x+2;

elsex<1

y=x^2-1;

end

end

保存为”ex2.m”文件

运行程序如下

>>ex2

x=1

>>y

y=

3

2.使用for...end循环的array向量编程求出1+4+7...+200的值

程序:

>>s=0;

>>fork=1:

3:

200

s=s+k;

end

>>s

s=

6700

3.计算1+4+7...+200的值,当和大于2000时终止计算。

程序:

>>s=0;

>>fork=1:

3:

200;

ifs>2000

break;

else

s=s+k;

end

end

>>s

s=

2035

>>k

k=

112

3.计算从1开始多少个自然数之和超过200。

>>s=0;

>>fork=1:

1:

200;

ifs>200

break;

else

s=s+k;

end

end

>>k

k=

21

>>s

s=

210

4.求1!

+3!

+5!

+……+11!

的值。

程序:

>>s=0;

>>m=1;

>>forn=1:

2:

11;

m=m*n;

s=s+m;

end

>>s

s=

11464

5.写程序,判断一年是否为闰年,符合下面两条件之一:

(1994~2014)

A、能被4整除,不能被100整除

B、能被4整除,不能被400整除

程序:

>>k=0;

>>fory=1994:

2014;

if((rem(y,4)==0&rem(y,100)~=0)|(rem(y,4)==0&rem(y,400)~=0));

k=k+1;

end

end

>>k

k=

4

实验五MATLAB计算机可视化与GUI

1、编写程序绘制如下图形(时间间隔自己设定)

图中曲线标注:

sin(t)标注在(1.7*pi,-0.3),cos(t)标注在(1.6*pi,0.8)

程序:

>>t=0:

0.01:

4*pi;

>>y=sin(t);

>>y1=cos(t);

>>plot(t,y,'r',t,y1,'--b')

>>text(1.7*pi,-0.3,'sint')

>>text(1.6*pi,0.8,'cost')

2.使用subplot指令在不同区域画出下列曲线y=sinAx;y=cosAx;y=Aex,y=x^2。

x的取值范围是

,A为自己的学号。

程序:

>>x=0:

0.1:

15;

>>y1=sin(36*x);

>>subplot(2,2,1);

>>plot(x,y1);

>>y2=cos(36*x);

>>subplot(2,2,2);

>>plot(x,y2);

>>y3=(36*exp(x));

>>subplot(2,2,3);

>>plot(x,y3);

>>y4=x.^3;

>>subplot(2,2,4);

>>plot(x,y4);

3.画出衰减振荡曲线

及其它的包络线

的取值范围是

,图的标题字体大小(fontsize)为10号,字体(fontname)宋体,字体风格为斜体1(it)字体,并选择合适的位置在图上标注自己的学号,姓名,以及作图日期,字体大小、字体风格自己指定。

程序:

>>t=0:

0.01:

4*pi;

>>y0=exp(-t/3);

>>y1=-exp(-t/3);

>>y=exp(-t/3).*sin(3*t);

>>plot(t,y0,'--b',t,y,'r',t,y1,'--b');

>>title('y=e^(-t/3)sin(3t)及它的包络线','fontsize',10','fontweigh','bold','fontangle','italic');

>>text(8.5,-0.6,['姓名:

谢述春'],'fontsize',10','fontweigh','bold','fontangle','italic');

>>text(8.5,-0.7,['学号:

1201064236'],'fontsize',10','fontweigh','bold','fontangle','italic');

>>text(8.5,-0.8,['作图时间:

2014.5.18'],'fontsize',10','fontweigh','bold','fontangle','italic');

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1