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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
3 Y" B, d3 I0 K; ]% H5 ~9 A
Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计/ q8 q& m4 E0 t! i& X

7 H. e5 v1 y9 E3 b) S  _4 A5 G+ p以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计。
1 b* C6 C# s; h+ O$ c8 \! O7 R3 N5 T6 M
% page 199 3, L- w* ^! u8 f+ x# Z
% this problem is to estimate the populatipn in 1980 and
+ i' }3 P6 i4 ~5 p- b% compare the error using different method to estimate
: s% V; z; B4 U* w* s% one use line and the other is parabale) V6 x8 m* Z2 L: H2 {
% input:none
/ |: x/ l- P4 {( L7 ?8 x% output:plot the figure and display error
5 ]3 Q! N/ T3 L4 Y* rfunction page_199_3_script
& o$ T0 s! J  K+ N. i+ C* Pformat long;
- M+ V. k) `" J" n4 mx0 = [0 10 30 40];
+ K1 ]* U/ A( gy0 = [3039585530 3707475887 5281653820 6079603571];
) i; g2 A4 c1 nx1 = 0:.01:450;. Q' H4 _, V+ \$ q" q
c1 = polyfit(x0,y0,1);8 X; C( H/ f1 P6 ?! \
error1 = norm(polyval(c1,x0)-y0,2);. P, {- f: U& _* D
fprintf('使用直线拟合所得的RMSE为  %f\n',error1/2);
, h% H0 x4 D( p8 z( Ey1_1980 = polyval(c1,20);
" f0 X! f1 ]1 v7 `# K3 ~fprintf('使用直线拟合的1980的人口  %f\n',y1_1980);. H* \  p9 e3 s% m% a9 C
fprintf('拟合与实际上人口的误差为  %f\n\n',y1_1980-4452584592);
7 I0 M) |+ {+ {! Sy1 = polyval(c1,x1);
$ C' K  Z1 W1 u" o& W' Ffigure(1);2 s) D8 x' w/ i" o6 @( p. @9 j  H
plot(x0,y0,'o',x1,y1);( [+ z) L/ y+ f! x3 {  c, n, s6 r
xlabel('let 1960 = 0/year');6 `7 p: O4 y" M6 H7 v+ }) F7 V
ylabel('population');; A: \8 s$ ?# G
title('用直线拟合最小二乘所得的结果');
; r- }) Q2 K  u! S4 H. D% }7 u, _% Y6 d2 i9 x
c2 = polyfit(x0,y0,2);1 w+ t0 p9 U. g) G% |4 `
error2 = norm(polyval(c2,x0)-y0,2);
1 C, |  y- ]! g. w+ J3 wfprintf('使用抛物线拟合所得的RMSE为    %f\n',error2/2);  Q8 o" i: n; _. p( H+ ~7 V- O' p/ S+ o
y2_1980 = polyval(c2,20);( f4 k! U% \- u
fprintf('使用抛物线拟合的1980的人口   %f\n',y2_1980);
: a! _& S( _9 q2 m3 rfprintf('拟合与实际上人口的误差为:   %f\n',y2_1980-4452584592);
  s1 R) H( q$ |& u9 zfprintf('我们从误差来看,使用抛物线的拟合效果更好\n\n');
: b6 R3 H: n0 y' }y2 = polyval(c2,x1);8 W  ~4 Z* r2 |) Q1 H' c* C
figure(2);+ x9 R9 O( r" d, X
plot(x0,y0,'o',x1,y2);) ~9 p$ e; S2 l7 s$ @" R  _" E
xlabel('let 1960 = 0/year');3 O) p% u# F" N- h0 d1 E, N
ylabel('population');
9 c4 L9 \0 T8 o# s% B* Btitle('用抛物线拟合最小二乘所得的结果');
$ H( N  x( S$ o0 h/ V1 W5 `+ \
! O2 |  j" n; n
6 T& \( }' K! ~: i0 ]
: t! e: F3 n/ n" n3 S8 N2 p7 l参考函数:
# U* G  e$ ?3 @# y& @8 `3 Y
  ]0 r, B9 c2 N4 [0 Q' m        函数一:polyfit(x0,y0,2);得到对应点的最小二乘后的系数,2次拟合。: J" L; T0 P8 g' h+ Z
        函数二: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-22 00:41 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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