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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
% X& Q6 Z: U) v7 q
Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计% K6 O1 g. c% o7 p6 U) E( O, |. _# d  s

: U; Z# e5 ]& f以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计。
3 N( y& N5 i0 i# |7 G7 U  V2 M
  t/ p1 n5 q) N( Y% page 199 3+ o' K* d3 J0 A# P- g
% this problem is to estimate the populatipn in 1980 and3 U' D5 ~9 b; o6 v/ Z7 Z" W
% compare the error using different method to estimate- ^: S  C" B! d  ?" w2 K
% one use line and the other is parabale
0 J/ H3 z  `- y% f: u% input:none
1 s) M  s. w5 ]% output:plot the figure and display error/ f( [9 H' `1 R3 h( d
function page_199_3_script0 d$ _2 U+ u0 P' c( U# U! L/ H
format long;
% |- S( h* [+ X$ Yx0 = [0 10 30 40];. ]. y, r% u7 R6 X3 a2 F
y0 = [3039585530 3707475887 5281653820 6079603571];7 x& b( u) j8 l! _3 Y  Q
x1 = 0:.01:450;+ f8 r0 [; n% L1 B) S" y
c1 = polyfit(x0,y0,1);
2 @( C9 {* ]: k/ h; verror1 = norm(polyval(c1,x0)-y0,2);; o* c: _: m; F$ j  ?& N/ d
fprintf('使用直线拟合所得的RMSE为  %f\n',error1/2);3 `  v; Z5 C- @& L2 {% ^
y1_1980 = polyval(c1,20);6 q: _; @; k% @3 V
fprintf('使用直线拟合的1980的人口  %f\n',y1_1980);) g. R! _+ O: R8 s7 O# E9 @. M
fprintf('拟合与实际上人口的误差为  %f\n\n',y1_1980-4452584592);
5 p" F7 U/ |/ i2 Py1 = polyval(c1,x1);- w8 G2 ]9 H; `- p2 _
figure(1);6 U" I& m4 e- k- k( @! U
plot(x0,y0,'o',x1,y1);( o3 [+ O6 g2 ?/ [7 Y7 h- H
xlabel('let 1960 = 0/year');4 I3 a5 j/ J3 I' r
ylabel('population');
7 ]3 B2 n" p7 }/ t& e% [title('用直线拟合最小二乘所得的结果');
9 o5 x2 d+ t' o. g1 L+ ^, S/ c- C3 M  H0 h! f) E$ _' \
c2 = polyfit(x0,y0,2);
$ r3 D  h4 K, t% r/ R, {" y) u5 v* u+ terror2 = norm(polyval(c2,x0)-y0,2);% ~9 y6 ?8 h' g0 o
fprintf('使用抛物线拟合所得的RMSE为    %f\n',error2/2);
& I, l1 d5 X* A& Dy2_1980 = polyval(c2,20);! b1 S; D- T' c8 Y2 ~# \- b( F
fprintf('使用抛物线拟合的1980的人口   %f\n',y2_1980);0 K- f, V) L: J+ J8 |4 P3 l6 V
fprintf('拟合与实际上人口的误差为:   %f\n',y2_1980-4452584592);
( D4 u1 {0 [/ D! \: @fprintf('我们从误差来看,使用抛物线的拟合效果更好\n\n');/ V* a8 ?! }! q! ?
y2 = polyval(c2,x1);2 d9 d! W. o9 U2 _+ j6 V
figure(2);
3 q7 r5 p0 K! o- N% x5 w3 Gplot(x0,y0,'o',x1,y2);( h. S# Y7 Z* B
xlabel('let 1960 = 0/year');# C' {! k1 B" l& u
ylabel('population');0 |' p0 Q3 p$ Z" c; s+ s' s
title('用抛物线拟合最小二乘所得的结果');
3 F3 q! T) t+ ^( [! y/ [0 ^
8 L  y$ l  d9 T' j( m! b 5 |% f7 w. M) Q' O" a8 o. a
2 i* u3 y' ?& x. R: k
参考函数:& i" W3 Z- r3 G2 [8 F& ]2 \

; n- r8 |# c) _6 O* l# F( K) I  y        函数一:polyfit(x0,y0,2);得到对应点的最小二乘后的系数,2次拟合。! _1 ]0 U: Y6 r. A0 Q1 |) T2 [9 J6 C
        函数二: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-7-30 00:56 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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