fnrfn

Совершенствуйте раздел формы

Синтаксис

g = fnrfn(f,addpts)

Описание

g = fnrfn(f,addpts) описывает ту же функцию, как делает f, но использует больше терминов, чтобы сделать это. Это полезно, когда сумма двух или больше функций различных форм требуется или когда количество степеней свободы в форме должно быть увеличено, чтобы делать прекрасные локальные изменения возможными. Точное действие зависит от формы в f.

Если форма в f B-форма или BBform, затем записи addpts вставляются в существующую последовательность узла согласно следующему ограничению: кратность никакого узла превышает порядок сплайна. Эквивалентная B-форма с этой усовершенствованной последовательностью узла для функции, данной f возвращен.

Если форма в f ppform, затем записи addpts вставляются в существующую последовательность пропуска согласно следующему ограничению: последовательность пропуска строго увеличиться. Эквивалентная ppform с этой усовершенствованной последовательностью пропуска для функции в f возвращен.

fnrfn не работает на функции в stform.

Если функция в f m-варьируемая-величина, затем addpts должен быть массив ячеек, {addpts1,..., addptsm}, и улучшение выполняется в каждой из переменных. Если i th запись в этом массиве ячеек пуст, то последовательность узла или пропуска в i th переменная неизменна.

Примеры

Создайте сплайн в B-форме, постройте ее, затем примените два улучшения средней точки, и также постройте многоугольник управления получившегося усовершенствованного сплайна, ожидая, что он будет вполне близко к самому сплайну:

k = 4; sp = spapi( k, [1,1:10,10], [cos(1),sin(1:10),cos(10)] ); 
       fnplt(sp), hold on 
       sp3 = fnrfn(fnrfn(sp)); 
       plot( aveknt( fnbrk(sp3,'knots'),k), fnbrk(sp3,'coefs'), 'r') 
       hold off 
Третье улучшение сделало бы две кривые неразличимыми.

Используйте fnrfn добавить два B-сплайна того же порядка:

B1 = spmak([0:4],1); B2 = spmak([2:6],1); 
       B1r = fnrfn(B1,fnbrk(B2,'knots')); 
       B2r = fnrfn(B2,fnbrk(B1,'knots')); 
       B1pB2 = spmak(fnbrk(B1r,'knots'),fnbrk(B1r,'c')+fnbrk(B2r,'c')); 
       fnplt(B1,'r'),hold on, fnplt(B2,'b'), fnplt(B1pB2,'y',2) 
       hold off 

Алгоритмы

Стандартный алгоритм вставки узла используется для вычисления коэффициентов B-формы для усовершенствованной последовательности узла, в то время как метод Горнера используется для вычисления локальных полиномиальных коэффициентов при дополнительных перерывах в усовершенствованной последовательности пропуска.

Смотрите также

| |