Почему griddedInterpolant работает с входными данными, которые должны быть отклонены? - PullRequest
0 голосов
/ 23 октября 2018

Документация griddedInterpolant гласит, что метод pchip "требует как минимум 4 (сетка) точек".Однако когда я запускаю его с 2-точечными векторами, он выглядит так:

>> F = griddedInterpolant([0,1],[1,2],'pchip')

F = 

  griddedInterpolant with properties:

            GridVectors: {[0 1]}
                 Values: [1 2]
                 Method: 'pchip'
    ExtrapolationMethod: 'pchip'

Обратите внимание, что метод все еще pchip.

Это очень запутанно.Почему не выдает ошибку?

1 Ответ

0 голосов
/ 11 ноября 2018

Я полагаю, что текущее поведение TMW - это выбор дизайна, который избавляет большинство пользователей от проблем, позволяя им «уйти» с некоторыми крайними случаями, которые в любом случае могут быть разрешены с использованием полиномов более низкого порядка.Что касается документации - это, вероятно, недосмотр.

Взгляните на следующий пример:

xq = -2:0.1:2;
p = pchip([0,1],[1,2], xq);
figure(); plot(xq, p);

Это работает без проблем и выдает:

Result of example code

... которая, как мы видим, выродилась в линейную кривую.На самом деле это не проблема, так как, похоже, она соблюдает требования от кусочно-сохраняющего многочлена с сохранением формы.

Действительно, если вы хотите, чтобы оно было куб. (т.е. степени 3), для него требуется 4 точки данных (но тогда это не совсем "кусочно", поскольку у него всего 1 часть).

...