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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

1 Z7 k& o. c- g4 ]Matlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计( D5 Q7 W2 ]7 E1 k3 }

/ i8 m! a1 l9 C/ z. _3 W+ a以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计。. l3 X  O) l7 B/ g
7 O; B6 C2 H' J8 Q& f
% page 199 3: j: M$ }% J+ d9 q; _; h! R
% this problem is to estimate the populatipn in 1980 and; G9 V7 @: [) c: g  P9 W3 r: K
% compare the error using different method to estimate
0 Q7 T* V) g( k. f# }+ ?: c% one use line and the other is parabale
, P3 A# V, k  ?4 q% input:none
- X0 s, P; B$ F- b% output:plot the figure and display error
, H7 V( W! n; O$ N. cfunction page_199_3_script
( d% _) s: @" V4 Uformat long;# t; i+ a2 P+ y
x0 = [0 10 30 40];
6 z4 s, e5 O# D8 ], Ey0 = [3039585530 3707475887 5281653820 6079603571];
7 T; b- C9 _9 F& Kx1 = 0:.01:450;
7 r7 b& u8 T. ~/ W1 w. nc1 = polyfit(x0,y0,1);
4 J: t: a5 }$ A! u0 F* Q8 Perror1 = norm(polyval(c1,x0)-y0,2);
1 W6 o6 q$ {& n6 w3 A# Zfprintf('使用直线拟合所得的RMSE为  %f\n',error1/2);
$ Q2 J" Z. `& o* By1_1980 = polyval(c1,20);
% M* z3 i) n( ^+ v6 d3 Y2 w+ bfprintf('使用直线拟合的1980的人口  %f\n',y1_1980);
  ]7 k! [  m0 Efprintf('拟合与实际上人口的误差为  %f\n\n',y1_1980-4452584592);
$ m& U) U4 M) ^4 M2 N, }/ Ty1 = polyval(c1,x1);
, [7 t5 H% I' a7 f& ^* j" W; e$ Lfigure(1);3 _: _, A1 X; `2 I3 a: w2 r& X* q
plot(x0,y0,'o',x1,y1);: K3 H; Z* Q! y8 F/ G2 b# n. Q
xlabel('let 1960 = 0/year');
& }/ d/ X' u4 v# Q7 T7 Kylabel('population');% L  K( o$ i% V$ W# c" y
title('用直线拟合最小二乘所得的结果');
( ?9 z0 R* {# j& D2 u( V6 z  O5 h
6 x( V! k+ k; _1 X3 {, V# ]c2 = polyfit(x0,y0,2);2 [8 K4 R* [2 d. J2 T
error2 = norm(polyval(c2,x0)-y0,2);
4 O$ q, z' P7 S2 C3 x  a, yfprintf('使用抛物线拟合所得的RMSE为    %f\n',error2/2);
% U9 @5 S/ C. o0 _9 Wy2_1980 = polyval(c2,20);
2 J6 J, ^* O0 Q2 e, Y5 ofprintf('使用抛物线拟合的1980的人口   %f\n',y2_1980);
/ F. Z4 Y# f) x; U5 \6 [fprintf('拟合与实际上人口的误差为:   %f\n',y2_1980-4452584592);7 J; d1 f( r6 a/ M9 S+ R7 Y
fprintf('我们从误差来看,使用抛物线的拟合效果更好\n\n');1 s( \: u- k) t; L
y2 = polyval(c2,x1);
% M3 V6 s+ O1 V0 Dfigure(2);0 b$ a; |; L) }3 T3 j
plot(x0,y0,'o',x1,y2);
: {5 V; D& E& L3 h% ?xlabel('let 1960 = 0/year');
/ O; a7 `  k- h& |1 j2 vylabel('population');9 R/ V; w8 Z9 k! t2 T
title('用抛物线拟合最小二乘所得的结果');) `* }9 X# x3 K; I2 n

4 b6 g2 e* o0 k" V, ] ) K7 n" _& `5 X+ S

. S( D" L, `3 e% t参考函数:
: q6 x( V1 {0 v& A4 o$ B- o3 ]: l  |
5 B& s' F8 c2 _2 n  Q# T% L        函数一:polyfit(x0,y0,2);得到对应点的最小二乘后的系数,2次拟合。
' k: s2 T7 b# H/ C0 G        函数二: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-11-24 12:23 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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