Re[5]: Точность double
От: Michael7 Россия  
Дата: 06.06.21 11:49
Оценка:
Здравствуйте, Kazmerchuk Pavel, Вы писали:


KP>Решение уже привели. Задача шагать по сеточной функции, точно попадая в узлы. Узлы подвижны.


Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять.
Re[6]: Точность double
От: Kazmerchuk Pavel  
Дата: 06.06.21 16:49
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, Kazmerchuk Pavel, Вы писали:



KP>>Решение уже привели. Задача шагать по сеточной функции, точно попадая в узлы. Узлы подвижны.


M>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять.

Что значит шагать инкрементами? Шаги и между узлами попадают.
Re[7]: Точность double
От: Michael7 Россия  
Дата: 06.06.21 17:02
Оценка:
Здравствуйте, Kazmerchuk Pavel, Вы писали:


M>>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять.

KP>Что значит шагать инкрементами? Шаги и между узлами попадают.

Если у тебя сетка какая-то, то есть ее топология в виде узлов. Вот и предусмотреть нумерацию исключительно индексами i,j,k — как-то так. Может быть с дополнительным параметром отступа от узла или что-то в этом роде. Если же нужно именно проверять куда попал какой-то шаг, то все же сравнивать надо не == а с погрешностью. abs(a-b)<epsilon
Re[7]: Точность double
От: pagid Россия  
Дата: 06.06.21 17:58
Оценка:
Здравствуйте, Kazmerchuk Pavel, Вы писали:

KP>Что значит шагать инкрементами? Шаги и между узлами попадают.

Количество узлов фиксированное для одной модели?
Re[8]: Точность double
От: Kazmerchuk Pavel  
Дата: 07.06.21 17:41
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, Kazmerchuk Pavel, Вы писали:



M>>>Тогда лучше узлы нумеровать целочисленными значениями и шагать инкрементами, а координаты вычислять.

KP>>Что значит шагать инкрементами? Шаги и между узлами попадают.

M>Если у тебя сетка какая-то, то есть ее топология в виде узлов. Вот и предусмотреть нумерацию исключительно индексами i,j,k — как-то так. Может быть с дополнительным параметром отступа от узла или что-то в этом роде. Если же нужно именно проверять куда попал какой-то шаг, то все же сравнивать надо не == а с погрешностью. abs(a-b)<epsilon


Есть функция (сеточная), заданная значениями в некоторых точках (узлах). Количество и расположение узлов произвольное. Есть система дифференциальных уравнений (ДУ), которая интегрируется численным методом. Правые части системы ДУ зависят от сеточной функции. Численный метод получает на вход в том числе шаг (по времени). Длинна шага каждый раз вычисляется исходя и требуемой точности интегрирования. Проблема в том, что сеточная функция имеет разрывы в узлах. Если метод интегрирования не попадает в точки разрыва, он теряет точность. Я вычисляю шаг до следующего узла (как написали выше) и ошибку. Если ошибка нулевая — попадем точно в узел, всё ОК, если нет, корректирую шаг чтобы гарантировано не "перепрыгнуть" узел.
Re[9]: Точность double
От: Michael7 Россия  
Дата: 07.06.21 20:18
Оценка: +1
Здравствуйте, Kazmerchuk Pavel, Вы писали:

KP>Есть функция (сеточная), заданная значениями в некоторых точках (узлах). Количество и расположение узлов произвольное. Есть система дифференциальных уравнений (ДУ), которая интегрируется численным методом. Правые части системы ДУ зависят от сеточной функции. Численный метод получает на вход в том числе шаг (по времени). Длинна шага каждый раз вычисляется исходя и требуемой точности интегрирования. Проблема в том, что сеточная функция имеет разрывы в узлах. Если метод интегрирования не попадает в точки разрыва, он теряет точность. Я вычисляю шаг до следующего узла (как написали выше) и ошибку. Если ошибка нулевая — попадем точно в узел, всё ОК, если нет, корректирую шаг чтобы гарантировано не "перепрыгнуть" узел.


Чего-то не доходит. Если шаг должен попадать в узлы, то его не надо корректировать, его надо сразу дискретным делать так, чтобы соответствовал узлам.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.