Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, Kazmerchuk Pavel, Вы писали:
KP>>Решение уже привели. Задача шагать по сеточной функции, точно попадая в узлы. Узлы подвижны.
M>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять.
Что значит шагать инкрементами? Шаги и между узлами попадают.
M>>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять. KP>Что значит шагать инкрементами? Шаги и между узлами попадают.
Если у тебя сетка какая-то, то есть ее топология в виде узлов. Вот и предусмотреть нумерацию исключительно индексами i,j,k — как-то так. Может быть с дополнительным параметром отступа от узла или что-то в этом роде. Если же нужно именно проверять куда попал какой-то шаг, то все же сравнивать надо не == а с погрешностью. abs(a-b)<epsilon
Здравствуйте, Kazmerchuk Pavel, Вы писали:
KP>Что значит шагать инкрементами? Шаги и между узлами попадают.
Количество узлов фиксированное для одной модели?
Здравствуйте, Michael7, Вы писали:
M>Здравствуйте, Kazmerchuk Pavel, Вы писали:
M>>>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять. KP>>Что значит шагать инкрементами? Шаги и между узлами попадают.
M>Если у тебя сетка какая-то, то есть ее топология в виде узлов. Вот и предусмотреть нумерацию исключительно индексами i,j,k — как-то так. Может быть с дополнительным параметром отступа от узла или что-то в этом роде. Если же нужно именно проверять куда попал какой-то шаг, то все же сравнивать надо не == а с погрешностью. abs(a-b)<epsilon
Есть функция (сеточная), заданная значениями в некоторых точках (узлах). Количество и расположение узлов произвольное. Есть система дифференциальных уравнений (ДУ), которая интегрируется численным методом. Правые части системы ДУ зависят от сеточной функции. Численный метод получает на вход в том числе шаг (по времени). Длинна шага каждый раз вычисляется исходя и требуемой точности интегрирования. Проблема в том, что сеточная функция имеет разрывы в узлах. Если метод интегрирования не попадает в точки разрыва, он теряет точность. Я вычисляю шаг до следующего узла (как написали выше) и ошибку. Если ошибка нулевая — попадем точно в узел, всё ОК, если нет, корректирую шаг чтобы гарантировано не "перепрыгнуть" узел.
Здравствуйте, Kazmerchuk Pavel, Вы писали:
KP>Есть функция (сеточная), заданная значениями в некоторых точках (узлах). Количество и расположение узлов произвольное. Есть система дифференциальных уравнений (ДУ), которая интегрируется численным методом. Правые части системы ДУ зависят от сеточной функции. Численный метод получает на вход в том числе шаг (по времени). Длинна шага каждый раз вычисляется исходя и требуемой точности интегрирования. Проблема в том, что сеточная функция имеет разрывы в узлах. Если метод интегрирования не попадает в точки разрыва, он теряет точность. Я вычисляю шаг до следующего узла (как написали выше) и ошибку. Если ошибка нулевая — попадем точно в узел, всё ОК, если нет, корректирую шаг чтобы гарантировано не "перепрыгнуть" узел.
Чего-то не доходит. Если шаг должен попадать в узлы, то его не надо корректировать, его надо сразу дискретным делать так, чтобы соответствовал узлам.