-2

以下是我在大学课程中必须完成的数值分析任务的练习 3。

根据您所在城市每小时温度的最后 23 个值找到明天温度的近似值(塞萨洛尼基的气象历史 {我的城市} 可以在这里找到:http: //freemeteo.com

您将使用最小二乘法用 2 次、3 次和 4 次多项式近似温度函数。之后,您将在您感兴趣的点找到函数的值。定性地比较您的近似值,并记下您进行近似的时间和日期。

可能是因为前两个任务没有休息而导致疲劳,或者是我缺乏数值分析经验,但我完全被难住了。我什至不知道从哪里开始。

我知道在没有表现出努力迹象的情况下寻求解决方案是令人作呕的,但我将不胜感激。线索,教程,我需要做的事情的大纲,一个接一个,任何事情。

我会非常感激你。

注意:我无法使用任何 MATLAB 内置近似函数。

4

1 回答 1

4

一般来说,如果y是你的数据向量属于times 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 的 MathWorld上给出的方程的实现。

于 2014-01-21T14:46:17.263 回答