2014-01-21 22 views
-2

以下是數學分析任務的練習3,作爲我的大學課程的一部分,我必須做的主題。MATLAB:使用最小二乘法的第二,第三和第四多項式來近似明天的溫度

基於您城市的每小時溫度的最後23個 值明天的溫度的近似值(氣象歷史 塞薩洛尼基{我的大學之城}可以在這裏找到: http://freemeteo.com

您將使用最小二乘法,用多項式 二階,三階和四階近似溫度函數。在 之後,您會在 對您感興趣的位置找到該函數的值。定性比較您的近似值,並在做近似處理的時間和日期上做一個 註釋。

也許這是由於前兩項任務沒有休息導致的疲勞,或者是我缺乏數值分析的經驗,但我完全難住。我甚至不知道從哪裏開始。

我知道很難找到一個解決方案,甚至沒有顯示出努力的跡象,但我會很感激任何事情。引導,教程,我需要處理的事情的概述,一個接一個,任何事情。

我非常感謝你。

注意:我不能使用任何MATLAB內置的近似函數。

+2

@ rody的答案似乎有意義(所以如果它不起作用,請提供示例輸入)。假設它有效,那麼你在尋找什麼改進? - 也許這些評論可以幫助你:這很不清楚:「我不能使用任何MATLAB內置的近似函數。」你是否缺乏對某些工具箱的訪問,或者你是否必須證明你瞭解這些方法的內部工作原理。在第一種情況下,請在後一種情況下指出(如果@rody的回答不夠),請說明您將如何「手動」進行操作,並且我們可以幫助實施。 –

+0

@DennisJaheruddin它是後者,你必須證明你理解了方法背後的分析數學。如果我今晚找到一些時間的話,我會立即發佈我建立的相關腳本。 –

回答

4

一般來說,如果y是屬於時代t數據向量,c是你感興趣的係數向量,那麼你需要解決的線性系統

Ac = y 

在最不平方意義,其中

A = bsxfun(@power, t(:), 0:n) 

在MATLAB中你可以用mldivide做到這一點:

c = A\y(:) 

例子:

>> t = 0 : 0.1 : 20;    %// Define some times 
>> y = pi + 0.8*t - 3.2*t.^2;  %// Create some synthetic data 
>> y = y + randn(size(y));  %// Add some noise for good measure 
>> 
>> n = 2;       %// The order of the polynomial for the fit 
>> A = bsxfun(@power, t(:), 0:n); %// Design matrix 
>> c = A\y(:)      %// Solve for the coefficient matrix 
c = 
    3.142410118189416e+000 
    7.978077631488009e-001  %// Which works pretty well 
    -3.199865079047185e+000 

但因爲你不允許使用任何內置的功能,你可以使用這個簡單的解決方案只檢查自己的成果。你必須編寫一個實現方程(例如)Wolfram's MathWorld

相關問題