罗兰在MATLAB的艺术

把想法变成MATLAB

请注意

罗兰在MATLAB的艺术已经存档,不会被更新。

在MATLAB插值

我想介绍一个新客人博客-约翰D 'Errico——一个应用数学家,从伊士曼柯达公司现已退休,他利用MATLAB 20多年了。从那时起,MATLAB仍在他的血液,所以你会经常发现他回答问题新闻组和写作增加的新工具MATLAB中央

内容

我假设你有一些数据点通过您希望通过曲线,插值数据。(最初,我只会谈论问题与一个独立变量)。在这些博客,我会尽量表现出一些方法做的正是这一点,即。找到一个曲线,通过您的数据。一路上我会尽量给一些指针在曲线拟合,插值、建模、近似,等等。

多项式回归

一个有效的问题有些问的是为什么开始讨论多项式回归,当我们真的想谈论插值。许多人错误的思想与近似插值产生的回归模型,调用这两个东西插值。所以我开始讨论一些插值不是。加上,我想确保多项式的理解,因为许多工具的插值多项式的基础。

让我们首先创建一些数据。一个指数是一个很好的开始,一个简单的曲线形状,很容易适应。

x = 1: .1:1;y = exp (x);

图你的数据

它总是一个好主意你的数据。事实上,我建议你应该情节一切。情节是有用的,因为你的眼睛和大脑是灿烂的诸如模式识别。只有你知道你的数据,科学家,工程师,或分析师。你总会受益,如果你可以利用你的知识系统的建模过程的一部分。

接下来,总是提前思考你的目标的任何模型。

  • 你会使用这个模型纯粹插值,即。预测的目的?
  • 你需要得到一些了解的过程模型?也许你需要估计一个上层渐近线的过程。如果是这样,那么你可能想要一个拥有这样一个上层渐近线的模型建立。
  • 你将需要包括在一些纸模型系数,你希望写?你需要使用这个模型在MATLAB中,或在其他一些工具?
  • 模型必须简单的评估?
  • 模型必须是高效的评估?你应该知道你是否需要评估这个模型数百万次,或者只是一次。
  • 你知道你的数据吗?有噪声的数据吗?可能你忽视噪音,或者你必须平滑了噪声?
  • 你知道底层功能关系?单调吗?增加?减少?正向/反向弯曲?它必须通过一个特定的点吗?
  • 必须interpolant特定需求的连续性和可微性吗?

例如,我曾经有一个问题,我知道我有一些重要的噪音在我们的过程,但我选择不做任何平滑。任何此类平滑也会消除一些潜在的重要特征的过程。因为我可以生存的噪音在我interpolant,我选择了小邪恶。

任何这样的任务总是知道你的目标。

情节(x, y,“波”)包含XylabelY网格标题的指数数据

这是一个不错的,行为端正的函数。这是y = f (x)的形式。我假装的时刻我不知道是什么在底层功能的关系。

有一件事我学会了在一些早就微积分课程是泰勒级数将提供许多功能的近似值。多项式是有用的东西。他们使用简单,简单,简单。和泰勒级数截断基本上是一个不错,简单的多项式。

所以我们将开始一个线性多项式近似曲线,使用polyfit。这是一个实用工具MATLAB提供的估计一个多项式模型使用线性回归技术。我们也可以使用许多其他工具来构建我们的多项式模型,但polyfit是一个有用的人,容易使用。

一个线性或第一学位多项式(许多使用词语“秩序”和“学位”互换),可能是数学写成* x y (x) = a1 + a2。在MATLAB中,我们将只存储系数,作为一个向量(a1, a0)。注意一个多项式在MATLAB与最高次项系数的存储。

P1 = polyfit (x, y, 1)
P1 = 1.1140 - 1.1937

我们可以评估的多项式polyval

yhat = polyval (P1, x);情节(x, y,“波”,x, yhat的r -)包含XylabelY网格标题“线性多项式适合”

看残差

事实上,我会说我们是建模的关系还没有得到很好的由一个线性模型表示。该模型根据您的需要,您可能会决定不同。

当你建立一个回归模型,观察剩余工资。

总是阴谋一切!

残差图。一般来说,一些情节的好方法和残差

  • 独立的变量。寻找模式。模式在残差通常暗示你应该更深入。
  • 测量顺序,以防有问题与你的设备。(我看到许多情况下,测量仪器是怎样每天结束的时候,但一个实验横跨超过一天。)
  • 因变量。这可能帮助挑选不均匀变化。

看看你的阴谋。思考你所看到的。比较你的期望。

因为这个数据非常简单地生成,我会放弃一些情节简洁。注意,看起来有点像一个残差的线性符合二次多项式。这是通常情况下当缺乏合适的多项式。缺乏适合经常看起来像第一项我们从泰勒级数截断。

res = y - yhat;情节(x,,“波”)包含Xylabel残差网格标题“残差的线性适应”

如果残差看上去抛物线的形状的,那么它可能意义使用二阶多项式(二次)为我们的健康。

P2 = polyfit (x, y, 2) yhat = polyval (P2, x);情节(x, y,“波”,x, yhat的r -)包含XylabelY网格标题“二次多项式适合”
P2 = 0.5402 1.1140 0.9956

注意,这里的残差看起来有点像一个三次多项式,尽管他们在比前级适合小得多。再次,每一步我们增加的顺序模型,残差往往会倾向于看起来就像下一个高阶的多项式。

res = y - yhat;情节(x,,“波”)包含Xylabel残差网格标题“二次满足残差”

高阶多项式——更方面总是更好?

多项式建模与polyfit的确是简单和容易。事实上,我们可能会决定只使用高和高阶多项式,总是追逐这个词我们截在前面的模型。毕竟,如果一个比一个线性二次模型,那么为什么不去一个立方?十项必须比9。看看十分之一订单模型。

P10 = polyfit (x, y, 10);disp (P10 (1:6) disp (P10 (7:11))
0.0000 0.0000 0.0000 0.0002 0.0014 0.0083 0.0417 0.1667 0.5000 1.0000 1.0000

我们可以把麦克劳林级数表示为指数函数

我们可以比较P10系数的系列。我们做的怎么样?

系列= 1. /阶乘(10:1:0);disp(系列(1:6)disp(系列(7:11))
0.0000 0.0000 0.0000 0.0002 0.0014 0.0083 0.0417 0.1667 0.5000 1.0000 1.0000

注意,从已知的系列高阶系数有所偏离,尽管低阶项似乎很准确。

yhat = polyval (P10, x);情节(x, y,“波”,x, yhat的r -)包含XylabelY网格标题“十阶多项式适合”

残差的严格在零附近振荡。事实上,他们如此之小,以至于最后一个多项式开始接近一个真正的插值多项式。也许如果我们添加更多的条款我们可以到达那里。浮点运算的数值问题往往会妨碍真正的插值到最低有效位。

res = y - yhat;情节(x,,“波”)包含Xylabel残差网格标题“第十个订单符合残差”

与内插你会怎么做?

我将开始讨论真正的内插在我的下一篇博客中。但请记住,插值不同于polyfit提供的近似或任何其他回归建模工具。

在那之前,请给我你的评论这个博客,或者未来博客话题插值或建模思想。你有一些有趣的应用插值吗?一些有趣的问题吗?




使用MATLAB®7.6发表


  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。