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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

" E2 [# l0 y0 y& _/ jMatlab之用最小二乘建立模型预测值以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计% h" t" G% @" Z7 d3 {( H+ l7 L

3 D2 s- b" R  ?$ ~以下例子使用1960,1970,1990和2000的人口估计1980的人口。分别用了直线估计和抛物线估计。4 ^; m4 S, L4 P$ y

8 q8 a+ _; a5 a2 I! X$ h' J% page 199 3
4 t/ a4 W3 j, k& `! Y  \% this problem is to estimate the populatipn in 1980 and& ?- N& ~% h- B" [5 Z1 C! Y* S
% compare the error using different method to estimate
/ {9 y) U$ K1 p  s% one use line and the other is parabale) Q2 ~; [# H9 q" R: N" S. b
% input:none' r6 s" e( P4 o' ^; u5 t
% output:plot the figure and display error& F0 f* l# d5 j. B- q
function page_199_3_script
! l' r; C9 D/ n4 \% w$ M& d. J& f& Dformat long;
/ y! u: {/ B! mx0 = [0 10 30 40];# j' N( o$ _- y9 c& L7 [' U
y0 = [3039585530 3707475887 5281653820 6079603571];& \0 H+ _' ^$ [, t% ~
x1 = 0:.01:450;$ @9 L. B9 i( }! B
c1 = polyfit(x0,y0,1);
, w5 e8 A) {5 l7 T/ a" V  f9 jerror1 = norm(polyval(c1,x0)-y0,2);
: N& X  w% ]6 o6 C" {fprintf('使用直线拟合所得的RMSE为  %f\n',error1/2);: O) f% p, G& \6 a: C% H, z( D
y1_1980 = polyval(c1,20);
, D* k( U7 k$ ?fprintf('使用直线拟合的1980的人口  %f\n',y1_1980);1 B1 R! S& Z* d" D  \
fprintf('拟合与实际上人口的误差为  %f\n\n',y1_1980-4452584592);$ M0 \  c5 M; N# j. N4 ~9 `  @
y1 = polyval(c1,x1);" Q. j4 Q+ f  c4 m# a/ B
figure(1);  V% F; h* N- k# m+ Z
plot(x0,y0,'o',x1,y1);7 h& N3 T) O$ R  c  \
xlabel('let 1960 = 0/year');
$ ~' h: v3 l, n! M/ M/ n; t* Nylabel('population');9 e/ e& S8 l# }+ h
title('用直线拟合最小二乘所得的结果');
3 F$ N$ F9 n4 _# ]- R' E( Y! y/ H
c2 = polyfit(x0,y0,2);) A) A+ u  l2 T
error2 = norm(polyval(c2,x0)-y0,2);9 k7 Q- z# s/ D
fprintf('使用抛物线拟合所得的RMSE为    %f\n',error2/2);- \! E! ]# m1 B% z& ]+ E
y2_1980 = polyval(c2,20);3 @. z7 P3 Q% F3 H& \. ~' @5 I
fprintf('使用抛物线拟合的1980的人口   %f\n',y2_1980);# N- {& n& @# G: E% U0 r1 d/ k$ C+ `
fprintf('拟合与实际上人口的误差为:   %f\n',y2_1980-4452584592);# ^) \+ S! }, b# R% ?# D
fprintf('我们从误差来看,使用抛物线的拟合效果更好\n\n');
2 i1 G6 k# M+ d! Yy2 = polyval(c2,x1);
. |1 O. N) b0 \- I9 Ofigure(2);
; ]& ^, H' O  Tplot(x0,y0,'o',x1,y2);6 \6 p( J7 [9 R" a
xlabel('let 1960 = 0/year');
6 ?% ~9 r( Y, Y+ z  l9 Eylabel('population');
6 A# ], H! q+ C1 q; A  Ftitle('用抛物线拟合最小二乘所得的结果');
( l/ E9 P9 ]' q' E9 j2 V% k& v' U( V& c" {2 x$ z8 Z

5 Z" R1 a8 ~# V% `  I  t" Q, o7 w: ]. ~! S/ A* ^8 l0 x
参考函数:
" H/ S4 h, c; N. s* S- m& |2 m) h; g6 N& D
        函数一:polyfit(x0,y0,2);得到对应点的最小二乘后的系数,2次拟合。
4 {$ ^4 D4 W6 \1 A: Y        函数二: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-25 00:01 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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