没有合适的资源?快使用搜索试试~ 我知道了~
曲线拟合线性最小二乘法及其MATLAB程序.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 129 浏览量
2022-06-24
05:26:25
上传
评论
收藏 138KB DOCX 举报
温馨提示
试读
11页
曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx曲线拟合线性最小二乘法及其MATLAB程序.docx
资源推荐
资源详情
资源评论
1 曲线拟合的线性最小二乘法及其 MATLAB 程序
(x , y )
例 7.2.1 给出一组数据点列入表
7–2 中,试用线性最小二乘法求拟合曲线,
i i
并用(7.2),(7.3)和(7.4)式估计其误差,作出拟合曲线.
(x , y )
表 7–2 例 7.2.1 的一组数据
i i
xi
yi
2.7
-2.5 -1.7 -1.1 -0.8 0 0.1
-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50 68.04
1.5 3.6
解 (1)在 MATLAB 工作窗口输入程序
x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6];
>>
y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50
68.04];
plot(x,y,'r*'),
legend('实验数据(xi,yi)')
xlabel('x'), ylabel('y'),
title('例 7.2.1 的数据点(xi,yi)的散点图')
运行后屏幕显示数据的散点图(略).
(3)编写下列 MATLAB 程序计算在
>> syms a1 a2 a3 a4
f (x) (x , y )
处的函数值,即输入程序
i i
x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6];
fi=a1.*x.^3+ a2.*x.^2+ a3.*x+ a4
运行后屏幕显示关于 a ,a , a3 和 a4 的线性方程组
1 2
fi =[ -125/8*a1+25/4*a2-5/2*a3+a4,
-4913/1000*a1+289/100*a2-17/10*a3+a4,
-1331/1000*a1+121/100*a2-11/10*a3+a4,
-64/125*a1+16/25*a2-4/5*a3+a4,
a4, 1/1000*a1+1/100*a2+1/10*a3+a4,
27/8*a1+9/4*a2+3/2*a3+a4, 19683/1000*a1+729/100*a2+27/10*a3+a4,
5832/125*a1+324/25*a2+18/5*a3+a4]
编写构造误差平方和的 MATLAB 程序
y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50
>>
68.04];
fi=[-125/8*a1+25/4*a2-5/2*a3+a4,
-4913/1000*a1+289/100*a2-17/10*a3+a4,
-1331/1000*a1+121/100*a2-11/10*a3+a4,
-64/125*a1+16/25*a2-4/5*a3+a4,
1/1000*a1+1/100*a2+1/10*a3+a4,
27/8*a1+9/4*a2+3/2*a3+a4,
a4,
19683/1000*a1+729/100*a2+27/10*a3+a4,
5832/125*a1+324/25*a2+18/5*a3+a4];
fy=fi-y; fy2=fy.^2; J=sum(fy.^2)
运行后屏幕显示误差平方和如下
J=
(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)^2+(-4913/1000*a1+2
89/100*a2-17/10*a3+a4+171/2)^2+(-1331/1000*a1+121/100*a2-11/10*
a3+a4+723/20)^2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)^2+(a4+91
/10)^2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)^2+(27/8*a1+9/4*a
2+3/2*a3+a4+328/25)^2+(19683/1000*a1+729/100*a2+27/10*a3+a4-13/
2)^2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)^2
J
a , a , a , a
0
(k
1,2,3,4)
,
为求使达到
J 最小,只需利用极值的必要条件
a
1 2 3 4
k
a , a , a , a
得到关于的
线性方程组,这可以由下面的 MATLAB 程序完成,即输入程序
1 2 3 4
>> syms a1 a2 a3 a4
J=(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)^2+(-4913/1000*a1+
289/100*a2-17/10*a3+a4...+171/2)^2+(-1331/1000*a1+121/100*a2-11
/10*a3+a4+723/20)^2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)^2+(a
4+91/10)^2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)^2+(27/8*a1+9
/4*a2+3/2*a3+a4+328/25)^2+(19683/1000*a1+729/100*a2+27/10*a3+a4
-13/2)^2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)^2;
Ja1=diff(J,a1);
Ja4=diff(J,a4);
Ja11=simple(Ja1),
Ja41=simple(Ja4),
运行后屏幕显示 J 分别对 a , a ,a ,a4 的偏导数如下
Ja2=diff(J,a2); Ja3=diff(J,a3);
Ja21=simple(Ja2), Ja31=simple(Ja3),
1 2 3
Ja11=
56918107/10000*a1+32097579/25000*a2+1377283/2500*a3+
23667/250*a4-8442429/625
Ja21 =
32097579/25000*a1+1377283/2500*a2+23667/250*a3+67*a4
+767319/625
Ja31 =
1377283/2500*a1+23667/250*a2+67*a3+18/5*a4-232638/125
Ja41 =
23667/250*a1+67*a2+18/5*a3+18*a4+14859/25
解线性方程组 Ja11 =0,Ja =0,Ja =0,Ja =0,输入下列程序
21 31 41
>>A=[56918107/10000,
23667/250; 32097579/25000,
32097579/25000, 1377283/2500,
23667/250, 67;1377283/2500,
1377283/2500, 23667/250, 67, 18/5; 23667/250, 67, 18/5, 18];
B=[8442429/625, -767319/625, 232638/125, -14859/25];
C=B/A, f=poly2sym(C)
运行后屏幕显示拟合函数 f 及其系数 C 如下
C = 5.0911 -14.1905 6.4102 -8.2574
f=716503695845759/140737488355328*x^3
-7988544102557579/562949953421312*x^2
+1804307491277693/281474976710656*x
-4648521160813215/562949953421312
故所求的拟合曲线为
f (x) 5.0911 x 14.1905 x 6.4102 x
8.2574
.
3 2
(4)编写下面的 MATLAB 程序估计其误差,并作出拟合曲线和数据的图形.输入程
序
>>
xi=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6];
y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50 68.04];
n=length(xi);
f=5.0911.*xi.^3-14.1905.*xi.^2+6.4102.*xi -8.2574;
x=-2.5:0.01: 3.6;
F=5.0911.*x.^3-14.1905.*x.^2+6.4102.*x -8.2574;
fy=abs(f-y); fy2=fy.^2; Ew=max(fy),
E1=sum(fy)/n, E2=sqrt((sum(fy2))/n)
plot(xi,y,'r*'), hold on, plot(x,F,'b-'), hold off
legend('数据点(xi,yi)','拟合曲线 y=f(x)'),
xlabel('x'), ylabel('y'),
title('例 7.2.1的数据点(xi,yi)和拟合曲线 y=f(x)的图形')
(x , y )
运行后屏幕显示数据与
拟合函数 f 的最大误差 E ,平均误差 E
误差 E2 及其数
1 和均方根
i i
w
(x , y )
据点和
拟合曲线 y=f(x)的图形(略).
i i
Ew =
3.105 4
E1 = E2 =
0.903 4 1.240 9
r (x)
k
7.3 函数的选取 及其 MATLAB 程序
例 7.3.1 给出一组实验数据点的
(x
,
y
)
横坐标向量为
i i
=(
-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5, -2.1,-1.5, -2.7,-3.6
),
x
量为 y 459.26,52.81,198.27,165.60,59.17,41.66,25.92, 22.37,13.47,
纵横坐标向 =(
12.87, 11.87,6.69,14.87,24.22 ,试用线性最小二乘法求拟合曲线,并用(7.2),(7.3)
)
和(7.4)式估计其误差,作出拟合曲线.
解 (1)在 MATLAB 工作窗口输入程序
>>
x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,
-2.1,-1.5, -2.7,-3.6];
y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,
22.37,13.47, 12.87, 11.87,6.69,14.87,24.22];
plot(x,y,'r*'),legend('实验数据(xi,yi)')
xlabel('x'), ylabel('y'),
title('例 7.3.1 的数据点(xi,yi)的散点图')
运行后屏幕显示数据的散点图(略).
(x) ( , )
(3)编写下列 MATLAB 程序计算在 f
x y 处的函数值,即输入程序
i i
>> syms a b
x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,-2
.1,-1.5,-2.7,-3.6]; fi=a.*exp(-b.*x)
运行后屏幕显示关于 a 和 b 的线性方程组
fi =
[ a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b),
a*exp(34/5*b), a*exp(51/10*b),
a*exp(17/5*b), a*exp(13/5*b),
a*exp(9/2*b), a*exp(18/5*b),
a*exp(5/2*b), a*exp(21/10*b),
a*exp(3/2*b), a*exp(27/10*b), a*exp(18/5*b)]
编写构造误差平方和的 MATLAB 程序如下
>>
y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37,
13.47,12.87, 11.87, 6.69,14.87,24.22];
fi =[ a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b),
a*exp(34/5*b),
a*exp(18/5*b),
a*exp(5/2*b),
a*exp(51/10*b),
a*exp(17/5*b),
a*exp(21/10*b),
a*exp(9/2*b),
a*exp(13/5*b),
a*exp(3/2*b),
a*exp(27/10*b), a*exp(18/5*b)];
fy=fi-y;
fy2=fy.^2;
J=sum(fy.^2)
运行后屏幕显示误差平方和如下
J =
(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2+(
a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51/1
0*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/25
)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*ex
p(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b)-
669/100)^2+(a*exp(27/10*b)-1487/100)^2+(a*exp(18/5*b)-1211/50)^
2
为求使达到 a
,b
J
最小,只需利用极值的必要条件,得到关于的
a,b
线性方程组,
这可以由下面的 MATLAB 程序完成,即输入程序
>> syms a b
J=(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2
+(a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51
/10*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/
25)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*
exp(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b
剩余10页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功