Heim > Artikel > Computer-Tutorials > Anpassung von Bevölkerungsdaten mit Matlab
clear;clc
% Dies ist ein lineares Regressionsproblem. Verwenden Sie matlab, um das folgende Programm zu schreiben:
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]';
Nebenhandlung(221)
plot(x,y) ;
%Angenommen, Modell y=a0+a1*x+e;
x=[Einsen(9,1),x];
a=xy%a(1)=a0,a(2)=a1.
X=1960:2222;
Y=a(1)+a(2)*X;
Nebenhandlung(222)
plot(X,Y);
%Seit 2003 hat sich die Bevölkerung in 43 Jahren verdoppelt und im Jahr 2077 die 10-Milliarden-Marke überschritten
%Die Weltbevölkerung betrug im Jahr 2002 5,52357 Milliarden
% Nehmen Sie den Logarithmus beider Seiten von y=x^a, wir haben log(y)=a*log(x). Wenn log(y) als Funktion von log(x) betrachtet wird, dann sind sie linear. Wenn die Anzahl der Gleichungen 10.000 beträgt und die unbekannte Zahl 1 (a) ist, können Sie die Matrixdivision von Matlab verwenden, um die widersprüchliche Gleichung zu lösen (unter Verwendung der Methode der kleinsten Quadrate)
%Das Folgende ist ein Beispiel. Ich habe einen Satz von 10.000 (x, y)-Sequenzen mit a=1,45 generiert. (Sie können es versuchen. Wenn Sie es nicht hinzufügen, werden Sie es tun bekomme auf jeden Fall 1,45)
>> a=1,45;
>> x=linspace(1,10,10000)'; %Beachten Sie, dass Sie es in eine Spaltenvektorlösung konvertieren müssen
>> y=x.^a+0,5*rand(10000,1);
>> aa=log(x)log(y)
Die Längen von X und Y sind unterschiedlich. X beträgt 16 Zahlen und Y beträgt 8 Zahlen. Und die ersten 8 Zeichen von X sind alle 1. Wenn die letzten 8 Zahlen von X zur Regression von Y verwendet werden, dann:
clear;clc
X=[1,0 1,0 1,0 1,0 1,0 1,0 1,0 1,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')
Laufergebnis:
p =
0,8950 4,1575
y = 0,8950*x+4,1575
Das obige ist der detaillierte Inhalt vonAnpassung von Bevölkerungsdaten mit Matlab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!