Учитывая набор точек x
и набор значений y
, я пытаюсь вычислить многочлен, который наилучшим образом соответствует P(x) = y
в наименьшем квадратичном смысле. Функция должна отображать матрицу Вандермонда, а выходной многочлен c
должен быть нанесен как функция в виде p (x) = c0 * x^0 + c1 * x^1 + c2 * x^2 + ..... + сп-1^(п-1).Полиномиальная регрессия и построение графика в Matlab
Я хотел бы видеть точки (xi, yi) на том же участке, где функция построена.
Вот что я пытался до сих пор:
function c = interpolation(x, y)
n = length(x);
V = ones(n);
for j = n:-1:2
V(:,j-1) = x.*V(:,j);
end
c = V \ y;
disp(V)
for i = 0:n-1
fprintf('c%d= %.3f\n', i, c(i+1));
end
x = linspace(-1,2,-100);
y = polyval(c,x);
x0 = x;
y0 = polyval(c,x0);
plot(x,y,'b-')
hold on;
plot(x0,y0,'ro')
hold off;
Это неясно. Что такое «настоящая кривая» здесь? –
«реальная» кривая Я имею в виду кривую, которая действительно представляет этот полином: -2 * x^0 + 9 * x^1 + 9 * x^2 - 7 * x^3. Полином определяется коэффициентами c, являющимися выходом функции, которые вычисляются в строке 7. Участок, который мы видим, представляет собой просто график 5 точек, связанных прямыми. точки (xi, yi) - вход в начале (-1,5) (0, -2) (1,9) и (2, -4). Мы передали их как 2 вектора в начале x и y. – ZelelB
Ну, вы только замышляете ввод. Поэтому не удивляйтесь, что вы видите только вход! –