Мне нужно добавить кусочные полиномы, полученные из нескольких наборов данных. Есть ли простой способ добавить кусочные многочлены вместе без интерполяции? Другими словами, с учетом PP1 и PP2 существует ли способ генерации PP3 (где PP3 остается в кусочно-полиномиальной форме)? например ...Добавление кусочных полиномов в MATLAB
t1 = linspace(0,1,5);
t2 = linspace(0,1,7);
pp1 = spline(t1,sin(pi*t1));
pp2 = spline(t2,t2.^2);
close all
hold on
tnew = linspace(0,1,50);
h(:,1) = plot(tnew,ppval(pp1,tnew));
plot(t1,ppval(pp1,t1),'bs')
h(:,2) = plot(tnew,ppval(pp2,tnew));
plot(t2,ppval(pp2,t2),'rs')
h(:,3) = plot(tnew,ppval(pp1,tnew)+ppval(pp2,tnew));
legend(h,{'spline of sin(\pi t)','spline of t^2','sin(\pi t)+t^2'},...
'location','northwest')
xlabel('t')
Но вместо указания tnew
явно, я хотел бы новый кусочно-полиномиальной pp3
, который эффективно pp1
+ pp2
.
'pp1' и' pp1' - это структуры, содержащие поля 'breaks' и' factors', которые определяют части многочлена. Таким образом, вы можете использовать 'mkpp' для построения нового кусочного полинома, объединяющего фрагменты из' pp1' и 'pp2'. Вам просто нужно передать отсортированные разрывы и коэффициенты на 'mkpp'. Единственной громоздкой частью является построение составной матрицы коэффициентов с порядком, равным максимальному числу порядков 'pp1' и' pp2', сортировка разрывов (удаление дубликатов) и применение этой же сортировки к строкам составной матрицы коэффициентов , –
@ LuisMendo, как вы говорите, громоздко сортировать и строить новый кусочно-полиномиальный. Вот почему мне интересно, есть ли простой способ сделать это, например. со встроенной функцией или небольшой комбинацией функций. – Delyle
Я вижу. Это интересный вопрос! –