Как перейти от символического выражения к вектору в MATLAB - PullRequest
0 голосов
/ 10 февраля 2011

Я работаю над функцией, которая будет генерировать полиномиальные интерполяции для заданного набора упорядоченных пар.В настоящее время вы вводите индексы узловых точек в одном векторе, а значения функции, которые должны быть интерполированы, во втором векторе.Затем я генерирую символическое выражение для полинома Лагранжа, которое интерполирует этот набор точек.Я хотел бы иметь возможность перейти от этой символической формы к векторной форме для сравнения с тестовыми функциями и тому подобное.То есть у меня есть кое-что, что порождает некоторый полином P (x) в терминах некоторой символической переменной x.Я хотел бы затем сэмплировать этот многочлен к вектору и получить значения для многочлена над (например) пробелом (-1,1,1000).Если это возможно, как мне это сделать?

Думаю, я включу код, который у меня есть:

function l_poly = lpoly(x,f)
%   Returns the polynomial interpolant as computed by lagrange's formula
syms a
n=size(x,2);
l_poly_vec = 1;
l_poly=0;
for k=1:n,
    for l=1:n,
        if (k ~= l)
            l_poly_vec=l_poly_vec*(a-x(l))/(x(k)-x(l));
        end
    end
    l_poly=l_poly+f(k)*l_poly_vec;
    l_poly_vec = 1;
end

Я планирую добавить третий (или, возможно, четвертый)) вход в зависимости от того, как я могу решить эту проблему.Я предполагаю, что мне просто понадобится длина вектора, к которому я хочу выполнить выборку, и конечные точки.

1 Ответ

2 голосов
/ 10 февраля 2011

Если я вас правильно понимаю, вы построили интерполяционный полином Лагранжа с использованием символического набора инструментов и теперь хотите оценить его по вектору значений.Один из способов сделать это - использовать функцию sym2poly для извлечения коэффициентов символьного полинома, а затем использовать polyval для оценкиЭто.В качестве альтернативы вы можете использовать matlabFunction для преобразования вашего символического выражения в обычную функцию Matlab;или используйте subs для замены в числовом значении 'x'.

Однако вам, вероятно, было бы лучше вообще отказаться от символического набора инструментов и напрямую построить коэффициенты интерполяционного полинома Лагранжа,или, еще лучше, использовать другую схему интерполяции в целом.Функция interp1 может быть хорошим местом для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...