首頁  >  文章  >  電腦教學  >  使用Matlab進行人口數據的擬合

使用Matlab進行人口數據的擬合

WBOY
WBOY轉載
2024-01-17 08:15:34917瀏覽

使用Matlab進行人口數據的擬合

Matlab解決人口資料的擬合

clear;clc

%這是一個一元線性迴歸問題,用matlab寫如下程式:

x=[1960,1961,1962,1963,1964,1965,1966,1967,1968]';

y=[29.72,30.61,31.51,32.13,32.34,32.85,33.56,34.20,34.83]';

subplot(221)

plot(x,y) ;

%假設模型 y=a0 a1*x e;

x=[ones(9,1),x];

a=x\y%a(1)=a0,a(2)=a1.

X=1960:2222;

Y=a(1) a(2)*X;

subplot(222)

plot(X,Y);

03開始 人口成長一倍 43年 2077 年超過一百億

02年的世界人口數 55.2357億

如何用matlab非線性迴歸分析

%把y=x^a兩邊取對數,就有log(y)=a*log(x),如果將log(y)看成是log(x)的函數,那麼它們是線性的。這時是方程式的個數是10000個,而未知數是1個(a),這可以用matlab的矩陣除法解矛盾方程式(用的是最小二乘法)

%下面是一個例子,我以a=1.45產生一套10000個的(x,y)序列,當然我加上了一些隨機擾動.(你可以試一下,不加的話,肯定得到的是1.45)

>> a=1.45;

>> x=linspace(1,10,10000)'; %注意這裡你要轉成列向量解

>> y=x.^a 0.5*rand(10000,1);

>> aa=log(x)\log(y)

在MATLAB中怎麼做啊

X和Y的長度不等啊,X是16個數,Y是8個數。且X的前8個都是1。如果用X的後8個數與Y回歸,則:

clear;clc

X=[1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0; 1.5 2.0 3.0 4.5 7.5 9.1 10.5 12.0]'

Y=[5.6 6.6 7.2 7.8 10.1 10.8 13.5 16.5]'

p=polyfit(X(:,2),Y,1)

xx=linspace(1.5,12,30);

yy=polyval(p,xx);

plot(X(:,2),Y,'o',xx,yy)

y=poly2sym(p,'x')

運行結果:

p =

0.8950 4.1575

y = 0.8950*x 4.1575

以上是使用Matlab進行人口數據的擬合的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:docexcel.net。如有侵權,請聯絡admin@php.cn刪除