• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    如何預測美國人口

    此示例表明,使用中等程度的多項式通過推斷數據來預測未來是一項冒險的業務。該示例比MATLAB?早。 它始于1977年由Prentice-Hall出版的Forsythe,Malcolm和Moler撰寫的“數學計算的計算機方法”中的一項練習。現在,MATLAB和HandleGraphics?使更改參數和查看結果變得更加容易,但是基本的數學原理沒有改變。這是1900年至2000年的美國人口普查數據。

    東西/原料

    • matlab軟件
    • 電腦

    方式/步調

    1. 1

      在號令窗口,輸入如下:

      % Time interval

      t = (1900:10:2000)';

      % Population

      p = [75.995 91.972 105.711 123.203 131.669 ...

         150.697 179.323 203.212 226.505 249.633 281.422]';

      % Plot

      plot(t,p,'bo');

      axis([1900 2020 0 400]);

      title('Population of the U.S. 1900-2000');

      ylabel('Millions');

      按“Enter”鍵。

      得如下圖1所示。

    2. 2

      您對2010年的生齒有何猜想?

      輸入如下號令:

      p

      按“Enter”鍵。

      得如下圖2所示。

    3. 3

      讓我們用t中的多項式擬合數據并將其外推到t =2010。多項式中的系數是經由過程求解包含11 x 11 Vandermonde矩陣的線性方程組而獲得的,該矩陣的元素是標度時候的冪 ,A(i,j)= s(i)^(nj);

      程序如下:

      n = length(t);

      s = (t-1950)/50;

      A = zeros(n);

      A(:,end) = 1;

      for j = n-1:-1:1

         A(:,j) = s .* A(:,j+1);

      end

      擬合數據p的度為d的多項式的系數c是經由過程求解線性方程組而獲得的,該線性方程組涉及Vandermonde矩陣的最后d + 1列: A(:,n-d:n)* c?= p

    4. 4

      若是d小于10,則方程式多于未知數,而且最小二乘法是合適的。 若是d等于10,則方程可以切確求解,而且多項式現實上是對數據進行插值的。 無論哪種環境,都可以利用MATLAB的反斜杠運算符來解決該系統。 這是三次擬合的系數。

      輸入如下程序:

      c = A(:,n-3:n)\p

      按“Enter”鍵。

      得如圖3所示。

    5. 5

      此刻,我們評估1900年至2010年之間每年的多項式并繪制成果。

      程序如下:

      v = (1900:2020)';

      x = (v-1950)/50;

      w = (2010-1950)/50;

      y = polyval(c,x);

      z = polyval(c,w);


      hold on

      plot(v,y,'k-');

      plot(2010,z,'ks');

      text(2010,z+15,num2str(z));

      hold off

      按“Enter”鍵。

      如圖4所示。

    6. 6

      比力三次擬合和四次擬合。 請注重,外推點很是分歧。

      程序如下:

      c = A(:,n-4:n)\p;

      y = polyval(c,x);

      z = polyval(c,w);


      hold on

      plot(v,y,'k-');

      plot(2010,z,'ks');

      text(2010,z-15,num2str(z));

      hold off

      按“Enter”鍵。

      如圖5所示。

    7. 7

      跟著度數的增添,外推變得加倍不不變。

      程序如下:

      cla

      plot(t,p,'bo')

      hold on

      axis([1900 2020 0 400])

      colors = hsv(8);

      labels = {'data'};

      for d = 1:8

         [Q,R] = qr(A(:,n-d:n));

         R = R(1:d+1,:);

         Q = Q(:,1:d+1);

         c = R\(Q'*p);    % Same as c = A(:,n-d:n)\p;

         y = polyval(c,x);

         z = polyval(c,11);

         plot(v,y,'color',colors(d,:));

         labels{end+1} = ['degree = ' int2str(d)];

      end

      legend(labels, 'Location', 'NorthWest')

      hold off

      按“Enter”鍵。

      如圖6所示。

    原作者:matlab教程舉報
    • 發表于 2020-02-11 20:00
    • 閱讀 ( 723 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆