MATLAB数值运算实验报告.docx
《MATLAB数值运算实验报告.docx》由会员分享,可在线阅读,更多相关《MATLAB数值运算实验报告.docx(10页珍藏版)》请在冰豆网上搜索。
MATLAB数值运算实验报告
实验报告
系(部):
信息工程班级:
XX:
学号:
课程:
MATLAB实验名称:
Matlab数值运算
一.实验目的
掌握MATLAB的数值运算及其运算中所用到的函数,掌握构造数组和细胞数组的操作。
二.实验容
1.多项式运算。
2.多项式插值和拟合。
3.数值微积分。
4.构造数组和细胞数组。
三.实验步骤
1.多项式运算
(1)多项式表示。
在MATLAB中,多项式表示成向量形式。
如:
s^4+3s*s^3-5*s^2+9
>>S=[13-509]
(2)多项式的加减法相当于向量的加减法,但须注意阶次要一样。
如不同,低阶要补0。
如多项式2*s^2+3*s+9与多项式s^4+3*s^3-5*s^2+4s+7相加。
(3)多项式的乘、除法分别用函数conv和deconv实现。
(4)多项式求根用函数roots
(5)多项式求值用函数polyval
练习1:
求(s^2+1)(s+3)(s+1)/(s^3+2*s+1)的“商〞及“余〞多项式
2.多项式插值和拟合
有一组实验数据如表所示
X
1
2
3
4
5
6
7
8
9
10
Y
16
32
70
142
260
436
682
1010
1432
1960
请分别用拟合〔二阶至三阶〕和插值〔线性和三次样条〕的方法来估测X=9.5时Y的值。
3.数值微积分
(1)差分使用diff函数的实现
(2)可以用因变量和自变量差分的结果相除得到数值微分
(3)Cumsum函数求累计积分,trapz函数用梯形法求定积分,即曲线的面积
练习:
如图瑞士地图,为了算出其国土面积,首先对地图作如下测量:
以由西向向为X轴,由南到北方为Y轴,选择方便的原点,并将从最西边点到最东边界点在X轴的区间适当划分假设干级,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,这样就得到了下表,根据地图比例知道18mm相当于40km,试有测量数据计算瑞士国土近似面积,与其准确值41228km^2比拟。
X
7
10.5
13
17.5
34
40.5
44.5
48
56
61
68.5
76.5
80.5
91
Y1
44
45
47
50
50
38
30
30
34
36
34
41
45
46
Y2
44
59
70
72
93
100
110
110
110
117
118
116
118
118
X
96
101
104
106.5
111.5
118
123.5
136.5
142
146
150
157
158
Y1
43
37
33
28
32
65
55
54
52
50
66
66
68
Y2
121
124
121
121
121
116
122
83
81
82
86
85
68
4.构造数组与细胞数组
(1)构造数组的创立
(2)构造数组的操作
练习:
创立一构造数组stusorce,其域为:
No,Name,English,Math,Chinese,Total,Average。
构造数组的大小为2*2。
(3)细胞数组的创立
(4)细胞数组的操作
练习:
创立一大小为2*2细胞数组stucell,其元素的类型分别为:
构造类型、字符串、矩阵和细胞类型。
四.实验具体过程及数据分析
1.
>>S1=[242]
S1=
242
>>roots(S1)
ans=
-1
-1
>>S=[13-509]
S=
13-509
>>S1=[2311]
S1=
2311
>>S2=[13-547]
S2=
13-547
>>S3=conv(S1,S2)
S3=
291026-296577
>>S4=deconv(S3,S1)
S4=
13-547
>>S1=[242]
S1=
242
>>polyval(S1,3)
ans=
32
>>x=1:
10
x=
12345678910
>>y=polyval(S1,x)
y=
81832507298128162200242
练习1:
>>clearall
>>s1=[101]
s2=[13]
s3=[11]
s4=conv(s1,s2)
Y=conv(s4,s3)
X=[1021]
[Q,R]=deconv(Y,X)
s1=
101
s2=
13
s3=
11
s4=
1313
Y=
14443
X=
1021
Q=
14
R=
002-5-1
>>poly2sym(Q)
ans=
x+4
>>poly2sym(R)
ans=
2*x^2-5*x-1
>>conv(Q,X)+R-Y
ans=
00000
>>s1=[101]
s2=[13]
s3=[11]
s4=conv(s1,s2)
Y=conv(s4,s3)
X=[1021]
[Q,R]=deconv(Y,X)
s1=
101
s2=
13
s3=
11
s4=
1313
Y=
14443
X=
1021
Q=
14
R=
002-5-1
poly2sym(Q)
ans=
x+4
poly2sym(R)
ans=
2*x^2-5*x-1
conv(Q,X)+R-Y
ans=
00000
2.
x=1:
10
y=[163270142260436682101014321960]
p1=polyfit(x,y,1)
y1=polyval(p1,9.5)
3.
x=1:
2:
9
diff(x)
x=linspace(0,2*pi,100);
y=sin(x);
plot(x,y)
y1=diff(y)./diff(x);
plot(x(1:
end-1),y1)
x=ones(1,10)
cumsum(x)
x=linspace(0,pi,100);
y=sin(x);
s=trapz(x,y)
练习2:
x=[710.51317.53440.544.548566168.576.580.59196101104106.5111.5118123.5136.5142146150157158];
y1=[444547505038303034363441454643373328326555545250666668];
y2=[4459707293100110110110117118116118118121124121121121116122838182868568];
X=x./18*40;
Y1=y1./18*40;
Y2=y2./18*40;
t1=trapz(X,Y1),t2=trapz(X,Y2),t=t2-t1
4.
〔1〕>> student.number='20050731001';
>> student.name='jack';
>> student
(2).number='20050731002';
>> student
(2).name='lucy';
〔2〕
>>student
(1).subject=[] >>student
(1).sorce=[] >>student
>>fieldnames(student)
>>getfield(student,{2},'name')
>>student=rmfield(student,'subject')
>>student=setfield(student,{1},'sorce',90); >>stuent
(2).sorce=88;
〔3〕
>> A={'How are you!
',ones(3);[1 2;3 4],{'cell'}};
>> B(1,1)={'Hello world'};
>> B(2,1)={[ 1 2 3 4]};
〔4〕
>>ans1=A(1,1)
>> ans2=A{1,1}
>> whos ans1 ans2
>> celldisp(A)
>> a1=A{2,1}(1,2)
>>[a2 a3]=deal(A{1:
2})
五.实验原始记录
六.实验心得、体会及思考
通过本次实验,我更熟练的掌握了MATLAB的数值运算及其运算中所用到的函数,更好的明白了一些MATLAB数值运算的根本操作。
做实验不仅仅要我们有清晰的思路,还要有一丝不苟的态度,认真严谨的实验才能得出更准确的实验结果。