exponenta event banner

fnval

Вычислить функцию сплайна

Синтаксис

Описание

пример

v = fnval(f,x) предоставляет значение f (x) в точках вx сплайновой функции f, описание которой содержится в f.

Если f является скалярным и одномерным, выход v получается путем замены каждой записи x по значению f на этой записи. Это намерение во всех других случаях, за исключением этого, для d- ценный m-вариатная функция, d-векторы заменяют m-векторы.

Для одномерного f:

  • Если f является скалярным значением, то v имеет тот же размер, что и x.

  • Если f [d1,...,dr]- значение, и x имеет размер [n1,...,ns], то v имеет размер [d1,...,dr, n1,...,ns], с v(:,...,:, j1,...,js) значение f при x(j1,...,js), - за исключением того, что:

    • n1 игнорируется, если он 1 и s является 2, т.е. если x - вектор строки;

    • MATLAB ® игнорирует любые конечные одиночные размеры x.

Для m-вариат f с m>1, с f [d1,...,dr]-значимые, x может быть либо массивом, либо массивом ячеек {x1,...,xm}.

  • Если x - массив, размером [n1,...,ns], то n1 должны равняться m, и v имеет размер [d1,...,dr, n2,...,ns], с v(:,...,:, j2,...,js) значение f при x(:,j2,...,js), - за исключением того, что:

    • d1, ..., dr игнорируется в случае, если f является скалярным значением, т.е. оба r и n1 являются 1;

    • MATLAB игнорирует любые конечные одиночные размеры x.

  • Если x является массивом ячеек, то он должен иметь вид {x1,...,xm}, с xj вектор, длины nj, и, в этом случае, v имеет размер [d1,...,dr, n1,...,nm], с v(:,...,:, j1,...,jm) значение f при (x1(j1), ..., xm(jm)), - за исключением того, что d1, ..., dr игнорируется в случае, если f является скалярным значением, т.е. оба r и n1 являются 1.

Если f имеет скачкообразный разрыв при x, то возвращается значение f (x +), т.е. предел справа, за исключением случаев, когдаx равняется правому концу базового интервала формы; для таких xвозвращается значение f (x-), т.е. предел слева.

fnval(x,f) является таким же, как fnval(f,x).

fnval(...,'l') относится к f как к непрерывному слева. Это означает, что если f имеет скачкообразный разрыв в x, то возвращается значение f (x-), т.е. предел слева, за исключением случаев, когдаx равен левому концу базового интервала; для таких xвозвращается значение f (x +).

Если функция является многомерной, то вышеприведенные инструкции относительно непрерывности слева и справа применяют координатно.

Примеры

свернуть все

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

Определите некоторые данные.

x = [0.074 0.31 0.38 0.53 0.57 0.58 0.59 0.61 0.61 0.65 0.71 0.81 0.97];
y = [0.91 0.96 0.77 0.5 0.5 0.51 0.51 0.53 0.53 0.57 0.62 0.61 0.31]; 

Выполните интерполяцию данных и постройте график результирующей функции. f.

f = csapi( x, y )
f = struct with fields:
      form: 'pp'
    breaks: [1x12 double]
     coefs: [11x4 double]
    pieces: 11
     order: 4
       dim: 1

fnplt( f )

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

Найти значение функции f в x = 0.5.

fnval( f, 0.5 )
ans = 0.5294

Найти значение функции f в 0, 0.1, ..., 1.

fnval( f, 0:0.1:1 )
ans = 1×11

    0.3652    1.0220    1.1579    0.9859    0.7192    0.5294    0.5171    0.6134    0.6172    0.4837    0.2156

Создание функции f2 представляет поверхность.

x = 0.0001+(-4:0.2:4);
y = -3:0.2:3;
[yy, xx] = meshgrid( y, x );
r = pi*sqrt( xx.^2+yy.^2 );
z = sin( r )./r;
f2 = csapi( {x,y}, z ); 

Постройте график функции f2.

fnplt( f2 )
axis( [-5, 5, -5, 5, -0.5, 1] );

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

Найти значение функции f2 в x = -2 и y = 3.

fnval( f2, [-2; 3] )
ans = -0.0835

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

свернуть все

Функция сплайна, которую требуется вычислить, заданная как объект.

Точки, в которых требуется вычислить функцию сплайна f, задается как вектор, матрица или массив ячеек.

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

свернуть все

Значение f (x) в точках вx сплайновой функции f, возвращаемой в виде скаляра, вектора, матрицы или массива ячеек.

Алгоритмы

Для каждой записи x, функция определяет соответствующий интервал разрыва или узловой интервал и собирает соответствующую информацию. В зависимости от того, f имеет ppform или B-форму, вложенное умножение или B-сплайновое повторение (см., например, [PGS; X. (3)]) затем используют векторную моду для одновременной оценки на всех входах x. Оценка многомерной полиномиальной сплайновой функции использует все преимущества структуры тензорного изделия.

Оценка рационального сплайна следует за оценкой соответствующего векторнозначного сплайна делением всего его последнего компонента на его последний компонент.

Оценка функции в stform существенно использует stcolи старается поддерживать соответствующие матрицы в разумном размере.

Представлен в R2006b