Интерполяция кубического сплайна с конечными условиями
возвращает интерполяцию кубического сплайна к данным pp = csape(x,y)(x,y) в форме ppform. Функция применяет условия конца Лагранжа к каждому концу данных и сопоставляет конечные откосы сплайна с наклоном кубического многочлена, который соответствует последним четырем точкам данных на каждом конце. Значения данных на одном и том же сайте усредняются.
возвращает интерполяцию кубического сплайна для данных с сеткой с использованием одномерных входных данных сетки pp = csape({x1,...,xn},___)x1,...,xn. В этом случае y является n+r-мерный массив, где r - размерность каждого значения данных. conds является массивом ячеек с n записи, которые обеспечивают конечные условия для каждого из n переменные. В некоторых случаях необходимо указать конечные условия для конечных условий. Этот синтаксис можно использовать с любым из аргументов в предыдущих синтаксисах.
csapeМожно реализовать пользовательские конечные условия с помощью csape функция. Предположим, что необходимо выполнить следующее условие в крайней левой конечной точке, =x(1)
(e) = c
для заданных скаляров , b и C. Можно вычислить интерполяцию s кубического спина как сумму s1 (интерполяция кубического спина данных с использованием конечных условий по умолчанию) и s0 (интерполяция кубического спина нулевых данных с использованием некоторых нетривиальных конечных условий):
(s0) s0
Конечные условия, указанные в , не обязательно должны быть конечными требуемыми конечными условиями ).
В этом примере используются данные испытаний на титан - стандартный набор данных, используемый при подборе данных. Загрузите данные с помощью titanium функция.
[x,y] = titanium;
Определите коэффициенты для ).
a = -2; b = -1; c = 0;
Конечное условие применяется к крайнему левому концу набора данных.
e = x(1);
Теперь вычислите интерполяцию кубического сплайна набора данных без навязывания конечных условий.
s1 = csape(x,y);
Для вычисления используйте нулевые данные той же длины, что и y с дополнительным набором нетривиальных конечных условий.
yZero = zeros(1,length(y));
Матрица «1 на 2» conds задание конечных условий путем задания производных сплайна для фиксации. В этом примере условия окончания используются только на левом конце данных, поэтому используйте conds для фиксации первой производной на левом конце. В правом конце зафиксируйте значение самой функции.
conds = [1 0];
Чтобы указать значения для фиксации функции или ее производных, добавьте их в качестве дополнительных значений в набор данных для подгонки - в данном случае yZero. Первый элемент указывает значение на левом конце, а последний элемент указывает значение на правом конце.
На левом конце зафиксируйте первую производную сплайна, чтобы она имела значение 1. В правом конце зафиксируйте саму функцию как 0 (исходное значение конечного элемента yZero). Соедините эти конечные значения условий на соответствующих концах yZero и использовать csape для поиска сплайна, который соответствует данным с этими значениями конечных условий.
s0 = csape(x,[1 yZero 0],conds);
Рассчитайте полностью подогнанный сплайн из этих данных, используя вышеупомянутое выражение для s. Для этого вычислите значения s0) λ (s1), используя первую и вторую производные сплайнов и s1.
d1s1 = fnder(fnbrk(s1,1)); d2s1 = fnder(d1s1); d1s0 = fnder(fnbrk(s0,1)); d2s0 = fnder(d1s0);
Вычислите производные первого участка полинома сплайна, поскольку конечные условия применяются только к левому концу данных.
lam1 = a*fnval(d1s1, e) + b*fnval(d2s1,e); lam0 = a*fnval(d1s0, e) + b*fnval(d2s0,e);
Теперь для вычисления конечного полностью подогнанного сплайна используйте λ 1 и λ 0.
pp = fncmb(s0,(c-lam1)/lam0,s1);
Постройте график сплайна для сравнения результатов посадки по умолчанию и конечных условий.
fnplt(pp,[594, 632]) hold on fnplt(s1,'b--',[594, 632]) plot(x,y,'ro','MarkerFaceColor','r') hold off axis([594, 632, 0.62, 0.655]) legend 'Desired end conditions' ... 'Default end-conditions' 'Data' ... Location SouthEast

Стационарная точка рядом с первой точкой данных показывает, что конечные условия реализованы в посадке.
Использовать csape для соответствия многомерным данным с векторными значениями. Этот пример подходит для векторных данных с использованием различных конечных условий для каждой независимой переменной.
Сначала определите данные. Для этого примера определите 3-мерные векторы v над 2-мерным полем, с зажатыми условиями или предписанными уклонами в x направление и периодические конечные условия в y направление.
x = 0:4; y = -2:2; s2 = 1/sqrt(2); v = zeros( 3, 7, 5 ); v(1,:,:) = [1 0 s2 1 s2 0 -1].'*[1 0 -1 0 1]; v(2,:,:) = [1 0 s2 1 s2 0 -1].'*[0 1 0 -1 0]; v(3,:,:) = [0 1 s2 0 -s2 -1 0].'*[1 1 1 1 1];
v является 3-мерным массивом с v(:,i+1,j) в качестве значения вектора в координате x(i),y(j). Две дополнительные записи в x размер задает значения уклона: точки данных v(:,1,j) и v(:,7,j) предоставить значение первой производной по линиям x = 0 и x = 4 для условий зажатого конца. В y размер, условия периодического окончания не требуют каких-либо дополнительных спецификаций.
Теперь вычислите многомерную интерполяцию кубического сплайна с помощью csape.
sph = csape({x,y},v,{'clamped','periodic'});
Чтобы нарисовать результат, сначала вычислите сплайн на соответствующем интервале.
values = fnval(sph,{0:.1:4,-2:.1:2});
surf(squeeze(values(1,:,:)), ...
squeeze(values(2,:,:)), squeeze(values(3,:,:)));
axis equal
axis off
Можно также вычислить и распечатать поверхность сплайна с помощью простой команды fnplt(sph). Обратите внимание, что v является 3-мерным массивом, и v(:,i+1,j) является 3-вектором, который должен соответствовать (x(i),y(j)), i=1:5, j=1:5. Дополнительно, в соответствии с conds{1} существование 'clamped', size(v,2) равно 7 (а не 5), и первая и последняя запись v(r,:,j) задайте значения конечного откоса.
В некоторых случаях необходимо указать конечные условия конечных условий. В этом двухмерном примере воспроизводится бикубический многочлен g (x, y) = x3y3 полной бикубической интерполяцией. Затем необходимо выполнить деривацию необходимых данных, включая значения конечных условий, непосредственно из g, чтобы упростить просмотр способа размещения значений конечных условий. Наконец, вы проверяете результат.
sites = {[0 1],[0 2]}; coefs = zeros(4, 4); coefs(1,1) = 1;
g = ppmak(sites,coefs);
Dxg = fnval(fnder(g,[1 0]),sites);
Dyg = fnval(fnder(g,[0 1]),sites);
Dxyg = fnval(fnder(g,[1 1]),sites);
f = csape(sites,[Dxyg(1,1), Dxg(1,:), Dxyg(1,2); ...
Dyg(:,1), fnval(g,sites), Dyg(:,2) ; ...
Dxyg(2,1), Dxg(2,:), Dxyg(2,2)], ...
{'complete','complete'});
if any(squeeze(fnbrk(f,'c'))-coefs)
disp( 'this is wrong' )
endx - Сайты данныхМесторасположения данных значений данных y по размеру, заданному как вектор или как массив ячеек для многомерных данных. Функция создает узлы сплайна на каждой площадке данных x такие, что s (x(j)) = y(:,j) для всех j.
Для многомерных данных с привязкой к сетке укажите x как массив ячеек, который обеспечивает узел данных в каждом переменном измерении, например, s (x1(i),x2(j),...,xn(k)) = y(:,i,j,...,k).
Типы данных: single | double
y - Значения данных по размеруЗначения данных для подгонки во время создания сплайна, заданные как вектор, матрица или массив. Можно указать значения данных y(:,j) в виде скаляров, матриц или n-мерных массивов. Значения данных, заданные на одном и том же узле данных x усредняются.
Типы данных: single | double
conds - Конечные условия'clamped' | 'complete' | 'not-a-knot' | 'periodic' | 'second' | 'variational' | матрица 1 на 2Конечные условия для сплайна, указанные как 'complete' или 'clamped', 'not-a-knot', 'periodic', 'second', 'variational'или в виде матрицы 1 на 2. Предопределенные опции для conds наложение одинаковых конечных условий на каждом конце данных. Можно указать различные конечные условия на каждом конце, предоставив conds в виде матрицы 1 на 2.
Доступны следующие предварительно определенные конечные условия.
| Подбор конечных откосов заданным значениям |
Сделайте вторую и вторую последние площадки неактивными узлами. Этот параметр игнорирует любые значения, указанные для | |
| Сопоставьте первую и вторую производные на левом конце с производными на правом конце. |
| Сопоставить конечные вторые производные с заданными значениями |
| Установите конечные вторые производные равными нулю. Этот параметр игнорирует любые значения, указанные для |
Для указания различных конечных условий на каждом конце, поставка conds в виде матрицы 1 на 2. Элементы этой матрицы определяют порядок сплайновой производной, зафиксированной конечными условиями. Настройка conds(j) = i фиксирует i-ю производную Dis до конечного значения условия.
Значением конечного условия по умолчанию является производная кубического интерполятора в левой части площадки, когда conds(1) = 1 и является 0 в противном случае. Задайте значения конечных условий для левой и правой сторон данных, указав e1 и e2соответственно.
Можно указать значение conds(j) как 0, 1, или 2. Если указано другое значение или не указано conds(j), то conds(j) является 1 и соответствующее значение конечного условия является значением по умолчанию.
Доступны следующие предустановленные конечные условия.
зажатый | Ds (e) = |
|
кривой | D2s (e) = |
|
периодический | Drs (a) = Drs (b), r = 1,2 |
|
вариационный | D2s (e) = 0 |
|
e, a и b относятся к левому или правому местоположению данных; ej является e1 для левого конца данных и e2 для правого конца данных.
Можно указать необязательные значения конечного условия. e1 и e2 используется ли предопределенный или определяемый пользователем параметр для conds. Однако обратите внимание, что некоторые предопределенные опции для conds игнорируйте любые указанные значения конечных условий.
Пример: 'clamped', [1 0]
e1 - Значение условия левого концаЗначение условия левого конца для сплайна, указанное как скалярное значение. e1 задает значение i-ой производной в левом конце данных, где conds Обеспечивает. Даже если вы используете различные конечные условия на двух концах, если вы предоставляете значение конечного условия на одном конце, вы также должны предоставить одно для другого конца.
Обратите внимание, что некоторые предопределенные опции для conds игнорируйте любые указанные значения конечных условий.
Значение по умолчанию для e1 является производной кубического интерполятора в левой части четырех участков, когда conds(1) = 1 и является 0 в противном случае.
Типы данных: single | double
e2 - Значение условия правого концаЗначение условия правого конца сплайна, указанное как скалярное значение. e2 задает значение i-ой производной в правом конце данных, где conds Обеспечивает. Даже если вы используете различные конечные условия на двух концах, если вы предоставляете значение конечного условия на одном конце, вы также должны предоставить одно для другого конца.
Обратите внимание, что некоторые предопределенные опции для conds игнорируйте любые указанные значения конечных условий.
Значение по умолчанию для e2 - производная кубического интерполятора в четырех местах справа, когда conds(2) = 1 и является 0 в противном случае.
Типы данных: single | double
pp - Сплайн в ppformСплайн в ppform, возвращенный как структура с этими полями.
Form - Форма сплайнаppФорма сплайна, возвращенная как pp. pp указывает, что сплайн задан в кусочно-полиномиальной форме.
Breaks - Расположение узлов сплайнаУзловые позиции сплайна, возвращаемые как вектор или как клеточный массив векторов для многомерных данных. Векторы содержат строго увеличивающиеся элементы, которые представляют начало и конец каждого из интервалов, на которых определены отрезки полинома.
Coefs - Коэффициенты многочленовКоэффициенты многочленов для каждой части, возвращаемые как матрица или как массив для многомерных данных.
Pieces - Количество полиномиальных частейКоличество частей полинома, описывающих сплайн, возвращаемое как скаляр или как вектор числа частей в каждой переменной для многомерных данных.
Order - Порядок многочленовПорядок полиномиальной функции, описывающей каждый участок полинома сплайна, возвращаемый как скаляр или как вектор, содержащий порядок в каждой переменной для многомерных данных.
Dim - РазмерностьРазмерность целевой функции, возвращаемой как скаляр.
Соответствующая тридиагональная линейная система конструируется и решается с использованием возможностей разреженной матрицы MATLAB ®.
csape команда вызывает значительно расширенную версию подпрограммы Fortran CUBSPL в PGS.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.