找回密码
 注册
关于网站域名变更的通知
查看: 453|回复: 1
打印 上一主题 下一主题

Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1...

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-29 15:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
9 T$ v' p# x: [4 Z4 i
Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计
: T- y3 g0 ]  f9 V& c0 O& J+ Z& B# Q& D' _4 m0 J
以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计。
2 X9 i; V9 ^) w2 m$ t9 p7 g" ?
5 K6 F" E' ^, Y8 A- L1 s% page 199 3
# j. @* B& m3 }  v' D- \) q5 m% this problem is to estimate the populatipn in 1980 and
) x1 N. `; B  [& N  w" i2 r% compare the error using different method to estimate5 Q1 R4 C" O3 p5 d' k* @+ e
% one use line and the other is parabale
: k0 s) v5 M% G" Y$ k/ G" B% input:none# o- |8 b! C% L0 T  ]# [
% output:plot the figure and display error
4 G  m& c  q0 j+ P7 afunction page_199_3_script
: Q% Z1 @3 C3 H3 yformat long;2 m: p' N+ a7 h/ ~1 l* S: t/ B7 P
x0 = [0 10 30 40];9 d$ Q) W0 M  G: G+ }1 ]  o
y0 = [3039585530 3707475887 5281653820 6079603571];
1 _# w% q3 V' e7 W/ ]# n0 Ix1 = 0:.01:450;' U. y, J/ c3 `4 w9 R. v
c1 = polyfit(x0,y0,1);
* M0 E" f4 g% p- Serror1 = norm(polyval(c1,x0)-y0,2);
$ Q- h* j/ l* a/ D! m4 xfprintf('使用直线拟合所得的RMSE为  %f\n',error1/2);+ `- Q6 w& {& A
y1_1980 = polyval(c1,20);& q# v" ?& n6 z3 k
fprintf('使用直线拟合的1980的人口  %f\n',y1_1980);( W8 A. ?5 E( A/ e, c# j
fprintf('拟合与实际上人口的误差为  %f\n\n',y1_1980-4452584592);
! c2 \; v$ Q6 \7 yy1 = polyval(c1,x1);! o" C/ a5 u8 Z
figure(1);2 L! g* M  r+ g1 F. ?9 w
plot(x0,y0,'o',x1,y1);
* N9 v' `# s7 y7 W3 N. v+ Sxlabel('let 1960 = 0/year');
# m2 i; x4 ^, n" P/ t( qylabel('population');% O. ~* H+ s4 w  B
title('用直线拟合最小二乘所得的结果');- s' S8 N* M: p. X

$ @+ G& G( Z1 D1 v8 m' w! uc2 = polyfit(x0,y0,2);
4 X' E' k$ b5 V. l% n9 Yerror2 = norm(polyval(c2,x0)-y0,2);
8 A7 X9 P+ z" }# Q+ X0 e# I. tfprintf('使用抛物线拟合所得的RMSE为    %f\n',error2/2);3 N& g8 P4 i7 f( [% |- m
y2_1980 = polyval(c2,20);- V- m: X8 C- I, c5 p* z9 d
fprintf('使用抛物线拟合的1980的人口   %f\n',y2_1980);! a$ R3 l8 a" G$ F( s3 |
fprintf('拟合与实际上人口的误差为:   %f\n',y2_1980-4452584592);" s( G' c$ n. m7 J. f- L
fprintf('我们从误差来看,使用抛物线的拟合效果更好\n\n');% H1 r) K; U6 l
y2 = polyval(c2,x1);: O( H3 Y! F& n' s
figure(2);
4 P7 Z% V7 m* A8 y: }plot(x0,y0,'o',x1,y2);
6 ]7 O2 a* ^+ z% l/ dxlabel('let 1960 = 0/year');
8 ^( x1 o4 J  q0 r9 Q9 E" Zylabel('population');2 Y4 i: R0 v; c8 O: c6 \2 E' |
title('用抛物线拟合最小二乘所得的结果');
# D( ?# k# ^2 ?; ~# D# E5 }9 D6 |  V: A
5 u% \. ^) t; V8 L1 F, c$ m

) o3 ?; y! Y" g9 h参考函数:# I# p# U" }2 s6 R. t

* W' K3 }# B  X+ p$ A        函数一:polyfit(x0,y0,2);得到对应点的最小二乘后的系数,2次拟合。
+ `) q8 [$ Y/ j; m: B. s& L        函数二:polyval(c2,x1);得到插值系数为c2数组的插值多项式,得到的是一个x1代入后的对应值组成的一维数组。

该用户从未签到

2#
发表于 2020-10-29 17:06 | 只看该作者
Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-20 08:00 , Processed in 0.062500 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表