Было понятно, кратко и ёмко! Спасибо вам за ваш труд) Интересно, есть ли способы построения гладкой кривой по точкам, когда их число очень большое - ну, например, больше сотни. Потому что с таким подходом решение полуится в практическом смысле плохо опддающимся решению.
А есть возможность от вас получить готовый файл с вашими расчетами? Я все повторил также, при других значениях получаются большие разрывы. Могу показать свой файл, если есть желание. Заранее спасибо!
Очень круто, поймёт даже школьник. А как быть если сплайн меняет направление, т.е. если установить точку 4 в (3,4)? я пытаюсь прочесть dxf и понять что же там за форма, и думаю что такие ситуации меня ждут сплошь и рядом.
Если я вас правильно понял, то вы говорите о параметрических сплайнах, где Х и Y зависят от третьего параметра t. В этом случае сплайн может иметь петли, как угодно проходить на плоскости.
Добрый день! Огромное спасибо за видео, действительно все понятно разъяснено. Подскажите пожалуйста, а как изменить методику сплайнирования, если мне нужно получить не проходящий через все точки кривой сплайн, а сглаживающий эту кривую сплайн?
Спасибо за отзыв! С добавлением одной новой точки появляется один новый сплайн, то есть 4 новых параметра. СЛАУ будет иметь 4*(n-1) уравнений, где n-это число точек, то есть О(n) уравнений. Сложность по памяти составит в худшем случае О(n^2), так как нужно хранить матрицу коэффициентов СЛАУ. Если СЛАУ решать например, методом Гаусса, то вычислительная сложность составит O(n^3). Получается, по памяти O(n^2), по вычислениям O(n^3). Так будет этот метод реагировать на учеличение количества точек. Надеюсь, не слишком сложно объяснил.
Не исследовал эту тему. В моем примере нулей не было, но, думаю, что появиться они могут. Если например, оставить в системе уравнений то уравнение, где только один коэффициент, то в обратной матрице будут нули.
Добрый день! У меня есть растущая функция выглядит как ступенька, т.е. немного порастёт, потом горизонтальная и опять рост и т.д., чем такую функцию лучше аппроксимировать? и Как более точно рассчитывать смену направления у такой функции?
@@ОлегВоропаев-к6ъ Я бы сравнил значения Y в трех соседних точках и по их изменению сделал вывод, что кривая переламывается. Я надеюсь, я правильно понял ваш вопрос.
@@learningmeansdoing А Вы где-нибудь встречали полный сборник функций в Excel: линейные, ступенчатые, экспоненциальные, регрессии и ещё бог знает какие? Чтобы выглядело как Add on
@@learningmeansdoing А ничего страшного не будет, если кусочно-линейную функцию просто заменить на линейную, не сильные погрешности будут при аппроксимации?
Не знаю правильно ли я вас понял. Может быть вы имели ввиду цифровой зум изображения? В этом случае яркость недостающих пикселей может быть рассчитана по полученным формулам кубической интероляции. Если же вы имели ввиду уменьшение разрешения изображения, то тут пожалуй кубическая интерполяция не понадобится.
@@learningmeansdoing я имел в виду именно уменьшение разрешения изображения. Другие, более простые алгоритмы, сильно ухудшают качество, насколько мне известно, бикубическая интерполяция даёт наилучший результат с адекватными затратами вычислительных ресурсов. Или бикубическая это ещё один алгоритм?
Бикубическую интерполяцию не очень хорошо знаю, но кажется это не тоже самое, что сплайн-интерполяция. Там вроде бы берутся для заданной точки 4 ближайших соседа по одной оси и 4 соседа по другой оси. Итого задействуется 16 точек для определения яркости данного пикселя. Сначала интерполируется вдоль одной оси по методу Ньютона, затем по другой оси тем же методом. У меня есть видео про билинейную интерполяцию. Там проще конечно, но этот принцип расширяется на биквадратичную и бикубическую интерполяцию.
ЕЕ и применяют, только для случай пространственной задачи - бикубическая интерполяция. Тут выбор спопоба зависит от типа изображения - насколько оно "гладкое" и однородное + завист от выбора цветовой модели. Если вас плавнуе градиенты, то можно споконо применять, если же есть рекие границы - возможны артефакты (на 17:30 на графике на интервале (4;5) видно что сплайн становится ниже заданной точки, что в случае изображение при наличии кострастных границ може тпривести к искажению цветопередачи ипоявлению артефактов - в виде ареолов). Под конкретное изображение стоит оычно свой метод нужно подбирать - если вас интеересует качество.
Скажите, а как решить задачу построения сплайна, если последовательность точек, через которые мы хотим провести интерполяционную линию, содержит такие пары близлежащих точек, у которых координата x равна? Ведь соединить две точки, имеющие одинаковую x-координату, отрезком кубической кривой невозможно
В этом случае я бы ввел параметрическую зависимость x(t), y(t), где t например номер точки или номер момента времени, если это задача о траектории движения точки
@@learningmeansdoing Я уже думал об этом. Сделать два сплайна отдельно для оси x и оси y. Но тогда нам понадобится вводить переменную t, соответствующую длине кривой. Но как мне эту t узнать и определить? И, кроме того, точки могут быть расположены не с равными интервалами вдоль t.
По сути если переменная t не известна, то любой наш выбор будет взят с потолка, это верно. Но с другой стороны сами сплайны допускают свободу выбора. И выбор значений t можно рассматривать как ещё один параметр. В самом простом случае t=1,2,3... Скорее всего есть лучшие варианты, просто я с такими задачами не сталкивался особо.
@@learningmeansdoing Если я правильно понял, то построение кубического сплайна на плоскости x,y для замкнутого контура невозможно. Применяя технику, описанную вами в этом видео, мы не сможем решить систему уравнений. Однако если мы набросаем точек на плоскость в одном из многочисленных CAD-редакторов, программа без труда нарисует произвольную замкнутую кривую по этим точкам, даже если это будет спираль или самопересекающаяся линия. Как же эту задачу решают эти программы?
ОШИБКУ выдает в формуле (время: 10:10). Формула: b0+2c0(2-1)+3d0(2-1)^2-b1=0 Согласно значениям, которые находятся в дальнейшем, данная формула не равна нулю (0). Выдает результат: -3,053113318Е-16 = 0
Вот это число, что вы написали, это -3 умножить на 10 в степени -16. То есть очень маленькое число, почти равное нулю. Появляются такие числа из-за того, что программа считает не с абсолютной точностью.
@@learningmeansdoing А если мне потребуется построить через большее кол-во точек сплайн, насколько изменяться уравнения? Или только появятся новые переменные, скажем b4, d5 и т.д.?
Да, вы правы, действительно перепутал уравнения местами. К счастью, на решение это не влияет, так как в системе уравнений можно переставлять уравнения местами. Благодарю за внимательность.
@@learningmeansdoing Здравствуйте! У меня есть набор точек x и y. Нарисую график с этими значениями. Получается неявная функция. Мне надо найти точки, которые dy/dх = 0. А решить СЛАУ не так легко, так как значения х и у не целые.
Аргх, какая еще палка! Стержень! Дананую линию можно полочить руками: нужно взять тонкую и гибкую (желательно стльную) линейку и на бумаге руками изогнуть ее так, чтоб она прошла через все нужнгые точки, потом аккурантно провести вдель нее линию. Такая линейка называется архитектурным сплайном, и их скорее всего уже не изготавливают, за ненадобностью. А сами сплайны в курсе сопромата ка раз и испрользуются, при расчете деформаций стержня (!) при изгибе - метод начальных параметров. Очень интересна его форма и реализация, она немного отличается, от классического сплайна.
Все это, конечно, хорошо, но если график состоит не из четырех точек, а из пары тысяч? Будем решать систему из 6 тысяч уравнений? Короче нужно было бы еще объяснить общий случай, когда точек не 4, а N
как же вы шикарно объясняете. надо продвинуть это видео в топы🌸
Благодарю!
Спасибо большое за понятное и доступное объяснение!
Спасибо за отзыв!
Отличное видео! Спасибо!
Дякую, дуже добре пояснюєте.
От динозавриков ИжГТУ передаю привет. Очень приятно видеть свой вуз в данном месте)
Привет принят))
Спасибо большое за видео. Учусь за границей и вы мне помог с понятием => Spline Interpolation . В этом видео всё чётко объяснено. Лайк и + подписка
Рад помочь!
Спасибо! Очень понятно объяснили. В книге по ВМ было все коротко и скупо про преобразование формул. Вы очень помогли 🤗
Благодарю за хороший отзыв о моей работе!
я вас люблю вы лучший!
Спасибо за Ваш труд!
Очень доступно.
Доступнее не расскажешь. Благодарствуйте. Все по полочкам.
Было понятно, кратко и ёмко!
Спасибо вам за ваш труд)
Интересно, есть ли способы построения гладкой кривой по точкам, когда их число очень большое - ну, например, больше сотни. Потому что с таким подходом решение полуится в практическом смысле плохо опддающимся решению.
Это хороший вопрос. Когда-нибудь руки дойдут, продолжу тему сплайнов.
спасибо! очень наглядно!
выручил перед зачетом, хоть где-то нашел понятные итоговые системы
Рад помочь!
А есть возможность от вас получить готовый файл с вашими расчетами? Я все повторил также, при других значениях получаются большие разрывы. Могу показать свой файл, если есть желание. Заранее спасибо!
Разрывы связаны с тем, что не соблюдены условия по прохождению сплайнов через узловые точки. Скорее всего ошибка где-то там.
Очень круто, поймёт даже школьник. А как быть если сплайн меняет направление, т.е. если установить точку 4 в (3,4)? я пытаюсь прочесть dxf и понять что же там за форма, и думаю что такие ситуации меня ждут сплошь и рядом.
Если я вас правильно понял, то вы говорите о параметрических сплайнах, где Х и Y зависят от третьего параметра t. В этом случае сплайн может иметь петли, как угодно проходить на плоскости.
Добрый день!
Огромное спасибо за видео, действительно все понятно разъяснено.
Подскажите пожалуйста, а как изменить методику сплайнирования, если мне нужно получить не проходящий через все точки кривой сплайн, а сглаживающий эту кривую сплайн?
Здравствуйте. Спасибо! Как вариант, отметить на кривой точки и через них построить сплайны. Чем больше точек, тем точнее интерполяция
Спасибо, всё очень понятно!
Вопрос - а как проявляет себя этот способ при большом объеме данных? Когда у нас сотня, или тысяча исходных точек
Спасибо за отзыв! С добавлением одной новой точки появляется один новый сплайн, то есть 4 новых параметра. СЛАУ будет иметь 4*(n-1) уравнений, где n-это число точек, то есть О(n) уравнений. Сложность по памяти составит в худшем случае О(n^2), так как нужно хранить матрицу коэффициентов СЛАУ. Если СЛАУ решать например, методом Гаусса, то вычислительная сложность составит O(n^3). Получается, по памяти O(n^2), по вычислениям O(n^3). Так будет этот метод реагировать на учеличение количества точек. Надеюсь, не слишком сложно объяснил.
@@learningmeansdoing "увеличение"
@@learningmeansdoing Нажмите на три точки справа от комментария и исправьте.
Могут ли в обратной матрице получится нулевые значения?
Не исследовал эту тему. В моем примере нулей не было, но, думаю, что появиться они могут. Если например, оставить в системе уравнений то уравнение, где только один коэффициент, то в обратной матрице будут нули.
спасибо ! а если прогонкой сделать?
Прогонкой решают трехдиагональные матрицы. Не уверен, что тут получится. Хотя может быть, надо пробовать
мегахарош
Добрый день! У меня есть растущая функция выглядит как ступенька, т.е. немного порастёт, потом горизонтальная и опять рост и т.д., чем такую функцию лучше аппроксимировать? и Как более точно рассчитывать смену направления у такой функции?
Здравствуйте. Может как вариант использовать кусочно-линейную функцию. Она вроде подходит под то, что вы описали.
@@learningmeansdoing Спасибо, а как определять разворот такой функции?
@@ОлегВоропаев-к6ъ Я бы сравнил значения Y в трех соседних точках и по их изменению сделал вывод, что кривая переламывается. Я надеюсь, я правильно понял ваш вопрос.
@@learningmeansdoing А Вы где-нибудь встречали полный сборник функций в Excel: линейные, ступенчатые, экспоненциальные, регрессии и ещё бог знает какие? Чтобы выглядело как Add on
@@learningmeansdoing А ничего страшного не будет, если кусочно-линейную функцию просто заменить на линейную, не сильные погрешности будут при аппроксимации?
Скажите, пожалуйста, как эту информацию можно применить при расчёте цвета каждого пикселя при уменьшении масштаба изображения?
Не знаю правильно ли я вас понял. Может быть вы имели ввиду цифровой зум изображения? В этом случае яркость недостающих пикселей может быть рассчитана по полученным формулам кубической интероляции. Если же вы имели ввиду уменьшение разрешения изображения, то тут пожалуй кубическая интерполяция не понадобится.
@@learningmeansdoing я имел в виду именно уменьшение разрешения изображения. Другие, более простые алгоритмы, сильно ухудшают качество, насколько мне известно, бикубическая интерполяция даёт наилучший результат с адекватными затратами вычислительных ресурсов. Или бикубическая это ещё один алгоритм?
Бикубическую интерполяцию не очень хорошо знаю, но кажется это не тоже самое, что сплайн-интерполяция. Там вроде бы берутся для заданной точки 4 ближайших соседа по одной оси и 4 соседа по другой оси. Итого задействуется 16 точек для определения яркости данного пикселя. Сначала интерполируется вдоль одной оси по методу Ньютона, затем по другой оси тем же методом. У меня есть видео про билинейную интерполяцию. Там проще конечно, но этот принцип расширяется на биквадратичную и бикубическую интерполяцию.
ЕЕ и применяют, только для случай пространственной задачи - бикубическая интерполяция. Тут выбор спопоба зависит от типа изображения - насколько оно "гладкое" и однородное + завист от выбора цветовой модели. Если вас плавнуе градиенты, то можно споконо применять, если же есть рекие границы - возможны артефакты (на 17:30 на графике на интервале (4;5) видно что сплайн становится ниже заданной точки, что в случае изображение при наличии кострастных границ може тпривести к искажению цветопередачи ипоявлению артефактов - в виде ареолов).
Под конкретное изображение стоит оычно свой метод нужно подбирать - если вас интеересует качество.
Спасибо. А как промежуточные игреки считаются? По синусу? Я нуб
Промежуточные точки считаются по формулам кубических сплайнов. Эти формулы показаны в начале видео и для них определяются коэффициенты a,b,c,d.
Можно ссылку на данный exel файл
Спасибо за ролик! Можете отправить мне excel файл
Скажите, а как решить задачу построения сплайна, если последовательность точек, через которые мы хотим провести интерполяционную линию, содержит такие пары близлежащих точек, у которых координата x равна? Ведь соединить две точки, имеющие одинаковую x-координату, отрезком кубической кривой невозможно
В этом случае я бы ввел параметрическую зависимость x(t), y(t), где t например номер точки или номер момента времени, если это задача о траектории движения точки
@@learningmeansdoing Я уже думал об этом. Сделать два сплайна отдельно для оси x и оси y. Но тогда нам понадобится вводить переменную t, соответствующую длине кривой. Но как мне эту t узнать и определить? И, кроме того, точки могут быть расположены не с равными интервалами вдоль t.
По сути если переменная t не известна, то любой наш выбор будет взят с потолка, это верно. Но с другой стороны сами сплайны допускают свободу выбора. И выбор значений t можно рассматривать как ещё один параметр. В самом простом случае t=1,2,3... Скорее всего есть лучшие варианты, просто я с такими задачами не сталкивался особо.
@@learningmeansdoing Если я правильно понял, то построение кубического сплайна на плоскости x,y для замкнутого контура невозможно. Применяя технику, описанную вами в этом видео, мы не сможем решить систему уравнений. Однако если мы набросаем точек на плоскость в одном из многочисленных CAD-редакторов, программа без труда нарисует произвольную замкнутую кривую по этим точкам, даже если это будет спираль или самопересекающаяся линия.
Как же эту задачу решают эти программы?
Хороший вопрос. На данный момент не могу на него ответить. Очевидно одно - эта задача решена. Надо как-нибудь будет разобраться с этим вопросом.
ОШИБКУ выдает в формуле (время: 10:10).
Формула: b0+2c0(2-1)+3d0(2-1)^2-b1=0
Согласно значениям, которые находятся в дальнейшем, данная формула не равна нулю (0).
Выдает результат: -3,053113318Е-16 = 0
Вот это число, что вы написали, это -3 умножить на 10 в степени -16. То есть очень маленькое число, почти равное нулю. Появляются такие числа из-за того, что программа считает не с абсолютной точностью.
@@learningmeansdoing существует команда для сплайн в экселе последней версии? Как эта команда может из себя выглядеть?
Не слышал про такую команду, не могу сказать.
@@learningmeansdoing А если мне потребуется построить через большее кол-во точек сплайн, насколько изменяться уравнения? Или только появятся новые переменные, скажем b4, d5 и т.д.?
Когда добавляется ещё одна точка, то добавляется ещё один сплайн со своими коэффициентами a,b,c,d.
в матрице коэффициентов СЛАУ перепутанные 5 и 6 строчки
Да, вы правы, действительно перепутал уравнения местами. К счастью, на решение это не влияет, так как в системе уравнений можно переставлять уравнения местами. Благодарю за внимательность.
💀💀
Кайф вообще. Только ничего не понятно.
1. Радостно. 2. Грустно.
Может расскажете, что именно осталось непонятным?
@@learningmeansdoing Здравствуйте! У меня есть набор точек x и y. Нарисую график с этими значениями. Получается неявная функция. Мне надо найти точки, которые dy/dх = 0.
А решить СЛАУ не так легко, так как значения х и у не целые.
Аргх, какая еще палка! Стержень!
Дананую линию можно полочить руками: нужно взять тонкую и гибкую (желательно стльную) линейку и на бумаге руками изогнуть ее так, чтоб она прошла через все нужнгые точки, потом аккурантно провести вдель нее линию. Такая линейка называется архитектурным сплайном, и их скорее всего уже не изготавливают, за ненадобностью.
А сами сплайны в курсе сопромата ка раз и испрользуются, при расчете деформаций стержня (!) при изгибе - метод начальных параметров. Очень интересна его форма и реализация, она немного отличается, от классического сплайна.
кривизна задается уравнениями конечной точки
Все это, конечно, хорошо, но если график состоит не из четырех точек, а из пары тысяч? Будем решать систему из 6 тысяч уравнений? Короче нужно было бы еще объяснить общий случай, когда точек не 4, а N
По возможности рассмотрю такой вариант. Спасибо за подсказку!
Я походу умственно отсталый раз уж не понял тему, которую на видео "наглядно", из слов некоторых комментаторов, разжевали.
Может что-то конкретное осталось неясным? По уравнениям? По условиям?
чувак слабо курит тему. это всё мусор
никакой конкретики
когда вы задаёте два дополнительных уравнения, там разве не s3" Должно быть?
Сплайны обозначаются S0, S1, S2. Индекс соответствует номеру начальной точки сплайна. Поэтому в крайней правой точке S2"=0.
Можно ссылку на данный exel файл