exponenta event banner

fnzeros

Описание

пример

x = fnzeros(spline) находит нули одномерного сплайна в его базовом интервале. Нулевой сплайн - это точка или замкнутый интервал, через который сплайн равен нулю.

x = fnzeros(spline,I) находит нули в интервале I.

Примеры

свернуть все

Создание и печать кусочно-линейного сплайна.

spline = spmak(augknt(1:7,2),[1,0,1,-1,0,0,1]);
figure
fnplt(spline)

Figure contains an axes. The axes contains an object of type line.

Найдите корни сплайна. Сплайн имеет каждый из трех видов нулей: касание нуля, пересечение нуля и нуль на интервале.

x = fnzeros(spline)
x = 2×3

    2.0000    3.5000    5.0000
    2.0000    3.5000    6.0000

Выполните печать корней сплайна с использованием треугольников, указывающих вправо, в левых конечных точках и треугольников, указывающих влево, в правых конечных точках.

nz = size(x,2);
hold on
plot(x(1,:),zeros(1,nz),'r>',x(2,:),zeros(1,nz),'r<','MarkerSize',10)
hold off

Figure contains an axes. The axes contains 3 objects of type line.

Создайте сплайн со множеством локальных экстремумов. Найдите локальные экстремумы сплайна, найдя корни его первой производной.

spline = spmak(1:31,rand(1,25)-0.5); 
x = fnzeros(fnder(spline));

Постройте график сплайна и его локальных экстремумов.

figure
fnplt(spline)
hold on
x = unique(x(:));
y = fnval(spline,x);
plot(x,y,'ro')
xlim([-Inf Inf])
hold off

Figure contains an axes. The axes contains 2 objects of type line.

Создание и печать прерывистого кусочно-линейного сплайна.

 spline = spmak([0 0 1 1 2 2],[-1 1 -1 1]);
 figure
 fnplt(spline);

Figure contains an axes. The axes contains an object of type line.

Найдите корни сплайна. Корни включают переход через ноль при x = 1.

x = fnzeros(spline)
x = 2×3

    0.5000    1.0000    1.5000
    0.5000    1.0000    1.5000

Входные аргументы

свернуть все

Сплайн, заданный как структура.

Типы данных: struct

Интервал для поиска нулей в, заданный как числовой вектор с двумя элементами.

Выходные аргументы

свернуть все

Расположение корней сплайна, возвращаемое в виде матрицы с двумя строками. Элементы первой строки являются левыми конечными точками интервалов, а элементы второй строки - правыми конечными точками. Каждый столбец содержит левую и правую конечные точки одного интервала. Корни в возрастающем порядке.

Существует три различных типа интервалов:

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

  • Если конечные точки одинаковы и совпадают с узлом, то сплайн имеет ноль в этой точке. Сплайн может пересекать ноль, касаться нуля или быть прерывистым в этой точке.

  • Если конечные точки одинаковы и не совпадают с узлом, сплайн имеет пересечение нуля в этой точке.

Алгоритмы

Чтобы найти корни сплайна, fnzeros сначала преобразует сплайн в B-форму. Затем функция выполняет некоторую предварительную обработку для обработки разрывов, а затем использует алгоритм [1].

Ссылки

[1] Мёркен, Кнут и Мартин Реймерс. «Безусловно сходящийся метод вычисления нулей сплайнов и многочленов». Математика вычисления 76, № 258 (2007): 845-865.

См. также

|

Представлен до R2006a