首页  >  文章  >  电脑教程  >  使用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=xy%a(1)=a0,a(2)=a1.

X=1960:2222;

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

subplot(222)

plot(X,Y);

%2003开始 人口增长一倍 43年 2077 年超过一百亿

%2002年的世界人口数 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删除