数据拟合实验举例及程序Word下载.docx
《数据拟合实验举例及程序Word下载.docx》由会员分享,可在线阅读,更多相关《数据拟合实验举例及程序Word下载.docx(12页珍藏版)》请在冰豆网上搜索。
s=polyval(p,t);
s1=polyval(p1,t);
holdon
plot(t,s,'
k-'
linewidth'
2)
k--'
grid;
例题2已知观测数据
1345678910
1054211234
求一代数多项式曲线,使其最好地拟合这组给定数据。
(1)画出数据分布趋势图
>
xi=[1345678910];
yi=[1054211234];
plot(xi,yi,'
o'
)
(2)建立数学模型y=a2x^2+a1x+a0建立超定方程组系数矩阵
A=[ones(size(xi));
xi;
xi.^2]'
A=
111
139
1416
1525
1636
1749
1864
1981
110100
(3)求超定方程组的最小二乘解
a=A\yi'
a=
13.4597
-3.6053
0.2676
(4)求拟合曲线方程
b=[0.2376-3.605313.4597]
b=
0.2376-3.605313.4597
y=poly2str(b,'
x'
y=
0.2376x^2-3.6053x+13.4597
f2=polyval(flipud(a),xi);
bo'
xi,f2,'
r-'
(5)用方程y=ax^b拟合
x=[ones(size(xi));
log(xi)];
aa=x'
\log(yi)'
aa=
2.1257
-0.6913
yy=exp(2.1257)*xi.^(-0.6913);
xi,yy,'
r--'
b-'
例题3已知观测数据
用polyfit命令作拟合直线并计算偏差。
fprintf('
ix(i)y(i)y=c_1x+c_2偏差\n'
);
fori=1:
6
x=[0.10.40.50.70.70.9];
y=[0.610.920.991.521.472.03];
c=polyfit(x,y,1);
error=y(i)-(c
(1)*x(i)+c
(2));
%2d%2.1f%5.2f%10.4f%10.5f\n'
i,x(i),y(i),c
(1)*x(i)+c
(2),error);
end
ix(i)y(i)y=c_1x+c_2偏差
10.10.610.46260.14738
20.40.920.9920-0.07198
30.50.991.1684-0.17844
40.71.521.5214-0.00135
50.71.471.5214-0.05135
60.92.031.87430.15574
ix(i)y(i)y=c_1x^2+c_2x+c_3偏差\n'
c=polyfit(x,y,2);
error=y(i)-(c
(1)*(x(i))^2+c
(2)*x(i)+c(3));
i,x(i),y(i),c
(1)*(x(i))^2+c
(2)*x(i)+c(3),error);
二、函数线性组合曲线拟合法
例6.8用函数
拟合下面的数据,并作出图形。
1234567891
0.10.20.30.40.50.60.70.80.91
0.00002.12203.02443.25683.13992.85792.51402.16391.8358
编写命令M文件chap5_2如下
在命令窗口调用chap5_2:
data=[0.10000.0000;
0.20002.1220;
0.30003.0244;
0.40003.2568;
0.50003.1399;
0.60002.8579;
0.70002.5140;
0.80002.1639;
0.90001.8358];
x=data(:
1);
y=data(:
2);
A(:
1)=ones(size(x));
A(:
2)=x;
3)=sin(pi*x);
4)=sin(2*pi*x);
C=A\y
xx=0:
g=c
(1)*ones(size(xx))+c
(2)*xx+c(3)*sin(pi*xx)+c(4)*sin(2*pi*xx);
xx,g,'
C=
-1.8576
3.8144
3.2419
1.0941
g=-1.8576*ones(size(xx))+3.8144*xx+3.2419*sin(pi*xx)+1.0941*sin(2*pi*xx);
实验问题
1971年到1990年各年我国人口数的统计数据如下表:
表我国人口的统计数字(单位:
亿)
年份
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
统计
8.523
8.718
8.921
9.086
9.242
9.372
9.497
9.626
9.754
9.871
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
10.007
10.165
10.301
10.436
10.585
10.751
10.930
11.103
11.27
11.433
试根据以上数据,建立我国人口增长的近似曲线,并预测2010年我国的人口数量。
实验目的
通过对人口预测问题的分析求解,掌握利用最小二乘法进行数据拟合的基本思想,熟悉寻找最佳方法拟合曲线的方法,掌握人口增长数学模型的思想方法。
clear;
clf
t=1971:
1990;
N=[8.5238.7188.9219.0869.2429.3729.4979.6269.7549.871...
10.00710.16510.30110.43610.58510.75110.93011.10311.27011.433];
plot(t,N,'
20);
axis([19712010620]);
pause(0.5)
n=15;
a=sum(t(1:
n));
b=sum(t(1:
n).*t(1:
c=sum(log(N(1:
n)));
d=sum(t(1:
n).*log(N(1:
A=[na;
ab];
B=[c;
d];
p=inv(A)*B
x=1971:
2010;
y=exp(p
(1)+p
(2)*x);
p=
-26.9361
0.0148
N=exp(-26.9361+0.0148t)
任务:
由化学实验得到某物质浓度与时间的关系如下:
时间t
1
2
3
4
5
7
8
浓度y
4.00
6.40
8.00
8.80
9.22
9.50
9.70
9.86
9
10
11
12
13
14
15
16
10.00
10.20
10.32
10.42
10.50
10.55
10.58
10.60
求浓度与时间的二次拟合曲线。
运行及结果显示: