2013-06-14 2 views
0

Мне нужно реализовать итерацию лагранжа в MATLAB.Базовый MATLAB - как «создать» вариант

Я (думаю, что понял) понял, как это работает. Я не понимаю, как реализовать 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) 

и так далее ...

Так что я хочу сделать функцию MATLAB, которая получит точки (x, y) и получит коэффициенты получающегося полинома.

В этом случае: (3/2, 3/2, 1)

Я НЕ ХОЧУ код для ответа - просто как реализовать выше х вариант.

Благодаря

+0

Думаю, вам нужно быть более конкретным в отношении того, что вы не понимаете, потому что кажется, что вы понимаете, как реализовать это полностью, по крайней мере, для меня. Является ли эта ссылка: https://ccrma.stanford.edu/~jos/pasp/Lagrange_Interpolation.html разумным объяснением того, что вы хотите сделать в m-скрипте? – macduff

ответ

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) 

Это то, что вы искали?

0

Ну, если вы не хотите кода, то x - это просто любое значение в пределах диапазона входных значений ваших x точек. В вашем случае любое значение между 0 и 2.

Смежные вопросы