Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/43: Рейтинг темы: голосов - 43, средняя оценка - 4.91
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425

Кубический сплайн

19.07.2011, 21:16. Показов 8024. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для отбора на собеседование (вакансия математик-программист C++) мне дали такую задачу:
Разработать программный модуль, позволяющий строить два двумерных кубических сплайна и определять для этих сплайнов ближайшие точки.
Использовать параметрическое представление сплайнов. Каждый сплайн должен быть построен по заданному массиву опорных точек на плоскости.
Если заданные сплайны пересекаются, то необходимо найти все точки пересечения, если заданные сплайны не пересекаются, то необходимо найти ближайшие точки на сплайнах.
Положение искомых точек найти с точностью 1E-09.
Задание реализовать на языке программирования С++. Использовать объектно-ориентированный подход.
С построением кубических сплайнов никаких проблем. Но, подскажите, как при такой высокой точности найти наиболее близкие друг к другу точки сплайнов??? Тут нужен какой-то хитрый алгоритм - чтобы вычисления 2 дня не проводились, но никак не пойму какой... Может кто знает?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.07.2011, 21:16
Ответы с готовыми решениями:

Сплайн по набору точек
Здравствуйте Дан набор точек (пара значение + время), требуется прибить как можно большее их кол-во заменив сплайном на выбор -...

График функций в виде буквы G. Сплайн Эрмита,Кубический сплайн Эрмита
Нужно построить график в виде буквы G.Гладкая кривая + 2 прямых.+ Написать к этим функция сплайны Эрмита и многочлен Лагранжа.В написание...

Кубический сплайн
Здравствуйте! Нужно реализовать кубический сплайн есть код, помогите исправить ошибки: using System; using...

8
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
19.07.2011, 21:23

Не по теме:

Цитата Сообщение от almazsr Посмотреть сообщение
вакансия математик-программист C++
Если не секрет это где?



Цитата Сообщение от almazsr Посмотреть сообщение
определять для этих сплайнов ближайшие точки.
Что такое ближайшая точка для сплайнов?
0
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
19.07.2011, 21:42  [ТС]
Евгений М., вот.

Цитата Сообщение от Евгений М. Посмотреть сообщение
Что такое ближайшая точка для сплайнов?
тоже самое что и для любых двух линий, я так понимаю.
0
 Аватар для Eugeniy
3132 / 1325 / 156
Регистрация: 19.12.2009
Сообщений: 1,808
19.07.2011, 21:52
almazsr, насколько я понял Ваши сплайны апроксимируют некоторую поверхность.
В принципе какой-то явный метод мне в голову не приходит. Но можно реализовать два подхода.
Первый. В принципе функционально Вы можете представить каждый узел Вашего сплайна. Каждый узел является гладкой функцией. По-этому если сплайны апроксимируют два разных процесса, но на одинаковых компактах, Вы можете взяв разницу сплайнов на каждом узле и вычислив их частные производные, можете попробовать найти глобальный минимум. Плюс надо проверять границу компакта.
Второй метод по-проще. Проектируйте Ваши сплайны на разные координатные плоскости и попробуйте находить минимумы уже для границ - это значительно проще. Собственно далее надо запоминать все эти точки минимумов и в дальнейшем проверять их на глобальный минимум. Плюс всегда надо проверять границы компактов. Так что работы здесь - хоть отбавляй!
1
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
19.07.2011, 21:56
Цитата Сообщение от almazsr Посмотреть сообщение
тоже самое что и для любых двух линий
Что такое ближайшая точка для двух линий?
К примеру есть функции F1(x)=(x-1)^2 и F2(x)=-(x+2)^2 на отрезке [-4;4]
Какая точка для них ближайшая?

Добавлено через 2 минуты
Имеется ввиду при каком x abs(F1(x)-F2(x))=min ?
0
 Аватар для Eugeniy
3132 / 1325 / 156
Регистрация: 19.12.2009
Сообщений: 1,808
19.07.2011, 21:56
almazsr, кстати, насчет первого метода. Каждый узел сплайна - есть суть кубический многочлен. Разница двух кубических многочленов - это многочлен степени не более три.
Надо перебирать каждый случай. Если многочлен степени три, тогда минимумов может быть не более двух. Если степень два тогда тем более не больше двух минимумов. Ну а если 1 тогда все ясно.
almazsr, удачи!
1
236 / 173 / 25
Регистрация: 13.11.2010
Сообщений: 425
19.07.2011, 22:05  [ТС]
Евгений М., точно не могу сказать, примерно -0.5.

Добавлено через 3 минуты
Цитата Сообщение от Евгений М. Посмотреть сообщение
Имеется ввиду при каком x abs(F1(x)-F2(x))=min ?
но ведь это необязательно наиближайшие точки.
0
1080 / 1007 / 107
Регистрация: 28.02.2010
Сообщений: 2,889
19.07.2011, 22:11
Понял, что имелось ввиду.
По теме - не знаю
0
 Аватар для Eugeniy
3132 / 1325 / 156
Регистрация: 19.12.2009
Сообщений: 1,808
19.07.2011, 22:29
almazsr, кстати насчет вычисления минимумов. Если сплайны заданы на одном компакте. Тогда есть такая интересная веща.
Зная достаточно много точек, Вы можете найти в каждой точке в каждом направлении ее прирост - это фактически будет линеаризация сплайна, а также множеством касательных векторов - в простонародье касательным пространством. Таким образом зная прирост Ваших сплайнов в каждой точке, можно смело утверждать, что приросты разницы сплайнов на каждом узле будут равны разнице приростов Ваших сплайнов вдоль одного направления - это следует из линейности касательного пространства. По-этому для каждого узла Вы достаточно точно можете найти локальный минимум - под подозрениям будут точки где разница приростов равна нулю.
Конечно это потребует достаточно много операций, но по-крайней это менее хлопотно, нежели просто брать циклически каждую точку и считать ее расстояние ко всем остальным
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2011, 22:29
Помогаю со студенческими работами здесь

Кубический сплайн
Вот теория https://ru.wikipedia.org/wiki/%CA%F3%E1%E8%F7%E5%F1%EA%E8%E9_%F1%EF%EB%E0%E9%ED Пишу прогу для этого метода и уже несколько...

Кубический сплайн
Помогите понять теорию. Сколько должно быть строк в трехдиагональной матрице? К примеру,у меня размер сплайна 6, тогда интервалов же 5, а...

Кубический сплайн
В общем есть функция, описанная 8 точками, я нашел все моменты и уравнения всех кусочных сплайнов. Как доказать, что 2 произвольно взятых...

Кубический сплайн
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Кубический сплайн
Нужно построить кубический сплайн в delphi, по точкам. помогите пожалуйста.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru