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