Форум программистов, компьютерный форум, киберфорум
Математика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 04.06.2017
Сообщений: 17

Интерполяция кубическим сплайном с заданными тангенсами на краях

27.04.2025, 22:13. Показов 2523. Ответов 21

Студворк — интернет-сервис помощи студентам
Приветствую всех.
Решаю задачу по нахождению узлов Б-сплайна.
Сплайн задаётся в параметрической форме.
https://www.cyberforum.ru/cgi-bin/latex.cgi?f(u)={(1-u)}^{3}*p0+3*u*{(1-u)}^{2}*p1+3*{u}^{2}*(1-u)*p2+{u}^{3}*p3

Вначале я просто строю сплайн по четырём узловым точкам. То есть, данное уравнение и позволяет мне получить точки на сплайне. ( рис-1)
А дальше задача. Задача в общем то обратная: зная набор точек сплайна, определить узловые точки, чтобы восстановить данное уравнение.
Очевидно, что крайние узлы (p0, p3 ), совпадают с точками сплайна. Так что требуется найти узлы (p1 и p2).
Для решения задачи я беру две произвольные точки на сплайне, и для каждой из них я записываю своё уравнение:
https://www.cyberforum.ru/cgi-bin/latex.cgi?M=F(u_{1})={(1-u_{1})}^{3}*p0+3*u_{1}*{(1-u_{1})}^{2}*p1+3*{u_{1}}^{2}*(1-u_{1})*p2+{u_{1}}^{3}*p3
https://www.cyberforum.ru/cgi-bin/latex.cgi?K=F(u_{2})={(1-u_{2})}^{3}*p0+3*u_{2}*{(1-u_{2})}^{2}*p1+3*{u_{2}}^{2}*(1-u_{2})*p2+{u_{2}}^{3}*p3
т.е. получаем два уравнения и два неизвестных. Решаю, получаю координаты узловых точек p1, p2.
Но! - они сильно не совпадают с изначальными узлами, хоть, действительно и проходят через выбранные две точки на оригинальном сплайне.(Рис-2)
Это в общем то не удивительно, т.к. через четыре точки можно провести бесконечное число кривых..но мне нужно получить именно кривую максимально похожую на оригинальный сплайн.
Очевидно, что нужный вид могут помочь принять касательные в начальных точках. Они зададут правильную кривизну.
Дальше я рассуждаю так. У меня сплайн n=3 степени и n+1 узлов, т.е. это безье-кривая. Для неё известно, что тангенс начальной/конечной совпадает с линией между текущей и следующей узловой точкой.
получается такая зависимость:
p1=p0+h*t0
p2=p3+k*t3,
где t0, t3 - это известные мне тангенсы на краях кривой, а h,k - неизвестные коэффициенты, нахождение которых, собственно и даст искомые узлы.
И вот дольше я увяз.
Если просто подставить эти линейные зависимости в основные функции, то вроде бы тоде получается система два уравнения и два неизвестных - но в итоге получается формула, где коэффициент h - зависит от значений p0, 03, t0, t3 - которые имеют как минимум две координаты х,у - и по х,у - расчеты дают разные значения.
Тогда я попробовал параметрически уравнения сразу переписать в привязке к координатам, т.е. примерно так:
https://www.cyberforum.ru/cgi-bin/latex.cgi?Kx=Fx(u_{2})={(1-u_{2})}^{3}*px0+3*u_{2}*{(1-u_{2})}^{2}*px1+3*{u_{2}}^{2}*(1-u_{2})*px2+{u_{2}}^{3}*px3
- но тогда у меня для первой точки на сплайне уже получается два уравнения, а неизвестных остаётся два - всё те же коэффициенты. Выходит - я могу получить результат используя только одну точку на сплайне!
И действительно, я решаю систему и получаю ответы.
-Когда я получаю ответы по первой точке - я радуюсь - ибо кривая почти соответствует изначальному сплайну. (рис-3) Но ответы по второй точке разочаровывают. Получается сплайн, который проходит через точку эту вторую точку - но он моло того что не проходит через первую - по начинается в обратную сторону и формирует петлю.(рис-4)

В общем мне кажется я хожу вокруг да около ответа, но не вижу где ошибаюсь. Если кто то сталкивался с подобной задачей, прощу помощи.
Миниатюры
Интерполяция кубическим сплайном с заданными тангенсами на краях   Интерполяция кубическим сплайном с заданными тангенсами на краях   Интерполяция кубическим сплайном с заданными тангенсами на краях  

Интерполяция кубическим сплайном с заданными тангенсами на краях  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.04.2025, 22:13
Ответы с готовыми решениями:

Интерполяция кубическим сплайном
Есть 4 точки. |__x__|__y___| 3.5629 11.3635 6.5196 10.6284 9.3934 8.1997 10.517 5.8018 ...

Ошибка при интерполяции кубическим сплайном
Добрый день, пишу интерполяцию данных кубическим сплайном. Все вроде хорошо, но полиномы на концах...

В чем разница между обычным одномерным сплайном и в-сплайном
В чем разница между обычным одномерным сплайном и в-сплайном? И почем с помощью тензорного...

21
2924 / 1954 / 215
Регистрация: 05.06.2011
Сообщений: 5,794
03.05.2025, 15:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от denis131 Посмотреть сообщение
перешёл к итерационному методу
Пожалуй. Я тут попробовал свой способ с результантами — получаются уравнения четвёртой степени с четырьмя же переменными, если я ничего не напутал. Так себе удовольствие.

Добавлено через 1 минуту
Цитата Сообщение от Pphantom Посмотреть сообщение
Вообще-то это уравнение полинома 3 степени
Ну, я так понял, всё кроме u — векторы, а уравнение таки кривой Безье.
1
 Аватар для Pphantom
2481 / 1631 / 745
Регистрация: 17.03.2022
Сообщений: 5,331
03.05.2025, 15:41
Цитата Сообщение от iifat Посмотреть сообщение
Ну, я так понял, всё кроме u — векторы
Но только описанию ТС это не соответствует.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.05.2025, 15:41

Неопределенный интеграл с ГУ на краях
Добрый день. Недавно возникла потребность в расчете неопределенного интеграла. В большинстве...

Сплайн интерполяция(кубические сплайны)
Доброго времени суток. Вот необходимо разобраться в методе "сплайн интерполяция(кубический...

Сплайны Безье и В-сплайны
Вопрос: как построить сплайн Безье (или В-сплайн) через N точек, соединяя каждую точку кубической...

Кубические сплайны в специальной форме
Для краевых условий 1-3 построить кубические сплайны в специальной форме. подскажите как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru