Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 20 из 20

Тема: Интерполяция кубическими сплайнами

  1. #11

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    У меня нет CoDeSys 3.5, посмотреть не смогу.
    Было бы хорошо, если бы исходники были опубликованы в тексте сообщения, было кратко приведено описание применения - ведь нет смысла в каждом цикле выполнять пересчёт полиномов, значит он происходит или в отдельном ФБ или по отдельной команде.
    Вот работа проекта в эмуляции, зачем тут кубические сплайны, только автору понятно))) 1 Работа проекта.jpg
    Тут двух точек за глаза)
    Последний раз редактировалось kondor3000; 11.04.2025 в 21:14.

  2. #12
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,984

    По умолчанию

    Я, бывало, для более плавного изменения применял нахождение среднего арифметического скользящим окном, в смысле, можно применить и другие способы обработки сигнала.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  3. #13

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    да нет смысла на сплайны Вам переходить Вложение 83035
    Да, так и есть - при вычислениях требуется по номеру диапазона найти коэффициенты, а по ним значение полинома - почти то же, что и при кусочно линейной интерполяции. Поэтому тогда и отказался.

    А исходная идея была - сразу после ввода таблицы исходных данных получить функцию и сразу ею пользоваться без дополнительных вычислений.
    Но в моём случае - проявились ограничения интерполяционной функции (полинома).

  4. #14

    По умолчанию

    Идея у SlavikP интересная, универсальный инструмент сделать.
    Когда у меня непонятки, открываю Эксель, набиваю табличку, прошу его сделать график, потом прошу "Добавить линию тренда", потом в её свойствах выбираю формулу, смотрю что получилось, не зашло, методом тыка подбираю подходящий к задаче вариант.
    Полином похоже к любой дырке затычка.
    На последней картинке повод перепроверить данные.
    Изображения Изображения
    • Тип файла: jpg 2.JPG (38.1 Кб, Просмотров: 9)
    • Тип файла: jpg 1.JPG (58.8 Кб, Просмотров: 13)
    • Тип файла: jpg 3.JPG (25.7 Кб, Просмотров: 13)
    Последний раз редактировалось BETEP; 11.04.2025 в 23:48.

  5. #15

    По умолчанию

    К РНИ (наладке в ходе эксплуатации) допускаются люди разной квалификации по математике и умения пользоваться Exel. С учётом этого вводимые данные должны иметь те же параметры, что и режимные карты (технологический регламент).
    Т.е. вычисления параметров интерполирующей функции должны выполняться в ПЛК. Именно это (совершенно правильно) и сделал автор ФБ сплайнов.

    Автор не рассказал о многих интересных вещах:
    - что будет с Y при выходе X за пределы диапазона
    - какие ограничения по входным данным (сортировка, что делать при меньшем 11 числе пар точек)
    - какой диапазон применимости функции (какие кривые обрабатываются адекватно)
    - как вычисляются полиномы - хотя бы для ознакомления с математикой - ведь есть несколько подходов ко второй производной на краях диапазона X
    https://habr.com/ru/articles/323442/

    И о применении ФБ - тоже хорошо бы рассказать - для выполнения пересчёта нужно сделать ..., в нормальной работе нужно ..., при нештатной работе (выходе X за пределы или др.) формируется ... и на выходе Y будет ..., и т.д.

    Т.е. говорю об документировании библиотечного ФБ. Ведь автор предоставил ФБ не в ответ на просьбу страждущего, который разберётся в силу заинтересованности.
    Всё это автор может сделать в первом сообщении темы - она позволяет редактирование - а здесь просто уведомить, что дополнил.

    Моё личное мнение, что применение сплайнов - скорее прихоть, т.к. в эксплуатации потребует формирование сигнала пересчёта, и так же, как при кусочно-линейной интерполяции (КЛИ), потребует поиск диапазона. Т.е. при сравнении с КЛИ произойдёт усложнение HMI (команда пересчёт) и но преимуществ не будет.

    Не посчитайте это придиркой - для ознакомления мне придётся ставить ненужный Codesys 3.5, а ведь в случае интересной реализации я бы "подрезал" алгоритм в другую среду разработки.

  6. #16

    По умолчанию

    Цитата Сообщение от FPavel Посмотреть сообщение
    У меня нет CoDeSys 3.5, посмотреть не смогу.
    Было бы хорошо, если бы исходники были опубликованы в тексте сообщения, было кратко приведено описание применения - ведь нет смысла в каждом цикле выполнять пересчёт полиномов, значит он происходит или в отдельном ФБ или по отдельной команде.
    Также интересно видеть формулы - как расчёта полиномов, так и вычислений функции, ограничения входных и выходных значений.

    Без этого - применение чужого кода - "прыжок веры" Индианы Джонса.

    В своё время хотел применить интерполяционные формулы Лагранжа и Ньютона для корнеизвлекающей зависимости расхода от перепада давления. Хорошо, что сначала построил график на компьютере - в узлах значения совпадали, а между ними формировались "вертикальные волны", т.е. между узлами результат интерполяции был со значительной ошибкой. Думал о кубических сплайнах, но не стал тратить время и сделал кусочно-линейной интерполяцией.
    Понятно, что со сплайнами будет лучше, но всё же есть смысл проверить.
    Была сетка значений:
    dP, кПа 0.610 2.450 5.540 9.860 14.100 22.400 30.500 39.800 50.300
    F, т/ч 5 10 15 20 25 30 35 40 45
    Есть ещё сплайн Акимы, дающий на выходе плавную кривую без резких выбросов на перегибах.
    https://www.source-code.biz/snippets/typescript/akima/
    Последний раз редактировалось 1exan; 12.04.2025 в 19:39.

  7. #17

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    Есть ещё сплайн Акимы, дающий на выходе плавную кривую без резких выбросов на перегибах.
    Вообще то глючит не по детски этот метод.
    1.JPG

  8. #18

    По умолчанию

    Здорово, что здесь так много людей со знаниями!

  9. #19

    По умолчанию

    Цитата Сообщение от BETEP Посмотреть сообщение
    Вообще то глючит не по детски этот метод.
    Да, есть какой-то нюанс с крайними точками.
    Возможно можно как-то обойти, добавив сдвигом дополнительных точек в конце-начале

  10. #20

    По умолчанию

    В первом сообщении темы перевыложил проект.
    По справедливой критике трудящихся метод EvaluateSpline сделан публичным, и теперь его можно вызывать из программы пользователя для получения значений сплайн-функции.
    Пример использования показан в тестовом примере.
    Работа не волк, а work.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Линейная Интерполяция в пр200
    от Андрей 77 в разделе Среда программирования OWEN Logic
    Ответов: 41
    Последнее сообщение: 23.11.2023, 07:35

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •