实验二 数组.docx
《实验二 数组.docx》由会员分享,可在线阅读,更多相关《实验二 数组.docx(18页珍藏版)》请在冰豆网上搜索。
![实验二 数组.docx](https://file1.bdocx.com/fileroot1/2022-12/14/8b9ecaed-1d44-41e8-9546-3285d5ed5744/8b9ecaed-1d44-41e8-9546-3285d5ed57441.gif)
实验二数组
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');