Matlab编程实验报告.docx
《Matlab编程实验报告.docx》由会员分享,可在线阅读,更多相关《Matlab编程实验报告.docx(31页珍藏版)》请在冰豆网上搜索。
![Matlab编程实验报告.docx](https://file1.bdocx.com/fileroot1/2022-11/22/6fe5475e-682b-4d2e-a5fd-b894bbd827e6/6fe5475e-682b-4d2e-a5fd-b894bbd827e61.gif)
Matlab编程实验报告
(此文档为word格式,下载后您可任意编辑修改!
)
中北大学
Matlab编程实验报告
班级:
姓名:
学号:
2013年11月
2,实验一Matlab运算基础
一、实验目的
1、熟悉启动和退出MATLAB的方法。
2、熟悉MATLAB工作窗口的组成。
3、掌握建立矩阵的方法,矩阵分析与处理。
4、掌握MATLAB各种表达式的书写规则以及常用函数的使用。
二、实验内容
1.先求下列表达式的值,然后显示MATLAB工作空间的使用情况并保存全部变量。
z1=2*sin(85*pi180)(1+exp
(2))
z1=
0.2375
(2),其中
x=[2,1+2*i;-0.45,5]
x=
2.00001.0000+2.0000i
-0.45005.0000
z2=12*log(x+sqrt(1+x*x))
z2=
0.7114-0.0253i0.8968+0.3658i
0.2139+0.9343i1.1541-0.0044i
(3)
提示:
利用冒号表达式生成a向量,求各点的函数值时用点乘运算。
a=-3.0:
0.1:
3.0
a=
Columns1through9
-3.0000-2.9000-2.8000-2.7000-2.6000-2.5000-2.4000-2.3000-2.2000
Columns10through18
-2.1000-2.0000-1.9000-1.8000-1.7000-1.6000-1.5000-1.4000-1.3000
Columns19through27
-1.2000-1.1000-1.0000-0.9000-0.8000-0.7000-0.6000-0.5000-0.4000
Columns28through36
-0.3000-0.2000-0.100000.10000.20000.30000.40000.5000
Columns37through45
0.60000.70000.80000.90001.00001.10001.20001.30001.4000
Columns46through54
1.50001.60001.70001.80001.90002.00002.10002.20002.3000
Columns55through61
2.40002.50002.60002.70002.80002.90003.0000
>>z3=(exp(0.3.*a)-exp(-0.3.*a))2.*sin(a+0.3)
z3=
Columns1through9
0.43870.50720.56400.60890.64240.66480.67660.67840.6709
Columns10through18
0.65490.63130.60110.56520.52470.48050.43370.38540.3366
Columns19through27
0.28810.24100.19620.15430.11620.08240.05350.02990.0120
Columns28through36
-0.0000-0.0060-0.006000.01170.02880.05090.07750.1080
Columns37through45
0.14180.17800.21590.25470.29340.33110.36690.39980.4289
Columns46through54
0.45320.47190.48410.48910.48620.47480.45430.42430.3846
Columns55through61
0.33500.27550.20610.12720.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=
00.250001.2500-1.00000.2500
2.已知
,
求下列表达式的值:
(1)A+6.*B和A-B+I(其中I为单位矩阵)。
(2)A*B和A.*B。
(3)A^3和A.^3。
(4)AB和B\A。
(5)[A,B]和[A([1,3],:
);B^2]。
A=[1234-4;34787;3657];
B=[13-1;203;3-27];
z1=A+6.*B
z1=
1852-10
467105
215349
C=eye(3);
z2=A-B+C
z2=
1231-3
32884
0671
z3=A*B
z3=
684462
309-72596
154-5241
z4=A.*B
z4=
121024
680261
9-13049
z5=A^3
z5=
3722623382448604
247370149188600766
78688454142118820
z6=A.^3
z6=
172839304-64
39304343658503
27274625343
z7=AB
z7=
16.4000-13.60007.6000
35.8000-76.200050.2000
67.0000-134.000068.0000
z8=B\A
z8=
109.4000-131.2000322.8000
-53.000085.0000-171.0000
-61.600089.8000-186.2000
z9=[A,B]
z9=
1234-413-1
34787203
36573-27
z10=[A([1,3],:
);B^2]
z10=
1234-4
3657
451
11019
20-540
3.设有矩阵A和B
,
(1)求它们的乘积C。
(2)将矩阵C的右下角3×2子矩阵赋给D
(3)查看MATLAB工作空间使用情况。
A=[12345;678910;1112131415;1617181920;2122232425];
B=[3016;17-69;023-4;970;41311];
C=A*B
C=
9315077
258335237
423520397
588705557
753890717
D=C(3:
5,2:
3)
D=
520397
705557
890717
whos
NameSizeBytesClassAttributes
A5x5200double
B5x3120double
C5x3120double
D3x248double
4.完成下列操作:
(1)求[100,999]之间能被21整除的数的个数。
提示:
先利用冒号表达式,再利用find和length函数。
>>A=100:
999;
>>B=find(mod(A,21)==0)
B=
Columns1through16
627486990111132153174195216237258279300321
Columns17through32
342363384405426447468489510531552573594615636657
Columns33through43
678699720741762783804825846867888
>>C=length(B)
C=
43
>>
(2)建立一个字符串向量,删除其中的大写字母。
>>X='LIsaisABeAutifulGirl';
>>Y=find(X>='A'&X<='Z')
Y=
129111321
>>X(Y)=[]
X=
saiseutifulirl
提示:
利用find函数和空矩阵。
5.由指令A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。
(提示:
find和sub2ind)
>>A=rand(3,5)
A=
Columns1through4
0.6860.8030.7360.816
0.7990.6790.6630.989
0.4440.0570.5310.228
Column5
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,formatlong,A=rand(3,3),然后根据A写出两个矩阵:
一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同。
(提示:
diag)
>>clear
>>formatlong
>>A=rand(3,3)
A=
0.7730.1680.609
0.3330.5570.421
0.9160.5620.890
>>b=diag(A)
b=
0.773
0.557
0.890
>>B=diag(b)
B=
0.77300
00.5570
000.890
>>C=A-B
C=
00.1680.609
0.33300.421
0.9160.5620
>>
三、实验报告及要求
实验报告给出详细的实验过程、代码以及实验结果,必要时按照实验任务要求对结果进行分析。
实验二多项式及字符运算
一、实验目的
1、掌握多项式的表示与创建方法。
2、掌握多项式的四则运算以及多项式求根方法。
3、掌握字符串数组的创建及操作方法。
二、实验内容
1、已知,分别取和一个矩阵,求在处的值。
>>p=[2-103];
>>x=2;
>>y=polyval(p,x)
y=
15
>>x1=[12;34];
>>y1=polyval(p,x1)
y1=
415
48115
2、有3个多项式
试进行下列操作:
求=+。
(1)求的根。
>>p1=[12405];
>>p2=[12];
>>p3=[123];
>>R=conv(p2,p3)
R=
1476
>>p4=[01476];
p5=p1+p4
p5=
138711
>>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=[-11.2-1.4;0.7523.5;052.5];
>>y=polyval(p5,A)
y=
1.0e+003*
0.01000.03820.0125
0.02230.09700.4122
0.01101.24600.1644
>>
(3)当以矩阵A为自变量时,求P(x)的值。
其中A的值与(3)相同。
X=A
X=
-1.00001.2000-1.4000
0.75002.00003.5000
05.00002.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.14371.39001.1754
0.19341.74741.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
symsabcd
>>f=a*x^3+b*x^2+c*x+d
f=
a*x^3+b*x^2+c*x+d
2.创建符号矩阵。
>>A=sym('[a*cos(x)+b*sin(y)10+20;a*x^2+b*y^2+c*z^2sqrt(t*t+1)]')
A=
[a*cos(x)+b*sin(y),30]
[a*x^2+b*y^2+c*z^2,(t^2+1)^(12)]
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)isnotunique.
ans=
asin((1-x)^(12))
>>finverse(g)
ans=
x2-12
>>
4.符号函数,分别对、、、进行微分,对趋向于1求极限,并计算对的二次、三次微分,用findsym得出符号变量。
symsxyabcd
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)
L=
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.求极限。
symsn;
L=limit(symsum(12^n,n,0,inf),n,inf)
L=
2
6.求定积分和不定积分。
symsx;
>>f=sqrt(x)(1+x)^2;
>>int(f,x,1,inf)
ans=
pi4+12
>>symsxy;
>>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^(12)*t)*(2*7^(12)-3))2-(2*7^(12)+3)(2*exp(7^(12)*t))+(7^(12)*exp(7^(12)*t)*(2*7^(12)-3))7+(7^(12)*(2*7^(12)+3))(7*exp(7^(12)*t))
y=
(7^(12)*exp(7^(12)*t)*(2*7^(12)-3))14+(7^(12)*(2*7^(12)+3))(14*exp(7^(12)*t))
>>,其中
9.解微分方程的通解。
>
>y=dsolve('Dy+y*tanx=cosx','x')
y=
(cosx-C11exp(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=
154-37^(12)4
37^(12)4+154
y=
37^(12)4+54
54-37^(12)4
z=
37^(12)4-34
-37^(12)4-34
三、实验报告及要求
实验报告给出详细的实验代码以及实验结果,必要时标注代码注释,并按照实验任务要求对结果进行分析。
实验四选择结构程序设计
一、实验目的
1、掌握建立和执行M文件的方法。
2、掌握利用if语句实现选择结构的方法。
3、掌握利用switch语句实现多分支选择结构的方法。
4、掌握try语句的使用。
二、实验内容
1.求下列分段函数的值。
要求:
用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。
提示:
x的值从键盘输入。
请输入x的值:
-5
x=
-5
y=
14
请输入x的值:
-3
x=
-3
y=
11
请输入x的值:
1
x=
1
y=
2
请输入x的值:
2
x=
2
y=
1
请输入x的值:
2.5
x=
2.5000
y=
-0.2500
请输入x的值:
3
x=
3
y=
5
请输入x的值:
5
x=
5
y=
6
2.输入一个百分制成绩,要求输出成绩等级A,B,C,D,E。
其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
要求:
(1)用switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出错误信息。
(1)
请输入成绩:
61
grade=
61
rate=
D
请输入成绩:
54
grade=
54
rate=
E
请输入成绩:
87
grade=
87
rate=
B
请输入成绩:
78
grade=
78
rate=
C
(2)
请输入成绩:
103
grade=
103
成绩无效
3、建立5×6矩阵,要求输出矩阵第n行元素。
当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。
请输入行数n:
2
n=
2
356789
请输入行数n:
6
n=
6
468903
ans=
Indexexceedsmatrixdimensions.
三、实验报告及要求
实验报告给出详细的实验代码以及实验结果,必要时按照实验任务要求对结果进行分析。
实验五循环结构程序设计
一、实验目的
1、掌握利用for语句实现循环结构的方法。
2、掌握利用while语句实现循环结构的方法。
3、熟悉利用向量运算来代替循环操作的方法。
二、实验内容
1.根据,求的近似值。
当n分别取100、1000、10000时,结果是多少?
要求:
分别用循环结构和向量运算(使用sum函数)来实现。
(1)
请输入n值;100
n=
100
s=
3.1321
请输入n值;1000
n=
1000
s=
3.1406
请输入n值;10000
n=
10000
s=
3.1415
(2)
请输入n值;100
n=
100
s=
3.1321
请输入n值;1000
n=
1000
s=
3.1406
请输入n值;10000
n=
10000
s=
3.1415
2.根据.,求:
(1)y<3时的最大n值。
(2)与
(1)的n值对应的y值。
3.已知
求中:
(1)最大值、最小值、各数之和。
f
(1)=1;f
(2)=0;f(3)=1;
forn=4:
100
f(n)=f(n-1)-2*f(n-2)+f(n-3);
end
A=max(f)
B=min(f)
C=sum(f)
length(find(f>0))
length(find(f==0))
length(find(f<0))
(2)正数、零、负数的个数。
A=
4.