我需要在MATLAB中实现Lagrange iterpolation。
我(我想我已经)了解它是如何运作的。我不知道如何实现x。
假设我想计算这些点:(0,1)(1,1)(2,4)
所以我需要这样做:
l_0(x) = (x-1)(x-2)/(0-1)(0-2)
l_1(x) = (x-0)(x-2)/(1-0)(1-2)
l_2(x) = (x-0)(x-1)/(2-0)(2-1)
依旧......
所以我想做一个接收(x,y)点的MATLAB函数,并检索得到的多项式的系数。
在这种情况下:(3 / 2,3 / 2,1)
我不想找到答案的代码 - 只是如何实现上述x变体。
由于
答案 0 :(得分:1)
我不确定这是否是您所需要的,但我认为您所寻找的是MATLAB anonymous functions
在你的情况下,你会写
l_0 = @(x) (x-1)(x-2)/(0-1)(0-2)
l_1 = @(x) (x-0)(x-2)/(1-0)(1-2)
l_2 = @(x) (x-0)(x-1)/(2-0)(2-1)
然后你可以像常规函数一样使用拉格朗日多项式:
val = y0 * l_0(x0) + y1 * l_1(x1) + y2 * l_2(x2)
那是你在找什么?
答案 1 :(得分:0)
如果您不想要代码,那么x就是x点输入值范围内的任何值。在您的情况下,0到2之间的任何值。