clear;clc
%This is a linear regression problem. Use matlab to write the following program:
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) ;
%Assume model 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);
Starting from 03, the population doubled in 43 years and exceeded 10 billion in 2077
The world population in 2002 was 5.52357 billion
% Take the logarithm of both sides of y=x^a, then we have log(y)=a*log(x). If log(y) is regarded as a function of log(x), then they are linear .At this time, the number of equations is 10,000, and the unknown number is 1 (a). This can use matlab’s matrix division to solve the contradictory equation (using the least squares method)
%The following is an example. I generated a set of 10,000 (x, y) sequences with a=1.45. Of course, I added some random perturbations. (You can try it. If you don’t add it, you will definitely get 1.45)
>> a=1.45;
>> x=linspace(1,10,10000)'; %Note that you need to convert it into a column vector solution
>> y=x.^a 0.5*rand(10000,1);
>> aa=log(x)\log(y)
The lengths of X and Y are not equal. X is 16 numbers and Y is 8 numbers. And the first 8 characters of X are all 1. If the last 8 numbers of X are used to regress Y, then:
clear;clc
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')
operation result:
p =
0.8950 4.1575
y = 0.8950*x 4.1575
The above is the detailed content of Fitting population data using Matlab. For more information, please follow other related articles on the PHP Chinese website!