Я решаю некоторые очень большие системы ODE (где-то в диапазоне от 2000 до 10000 переменных), и мне нужно быстро принять решение о выводе. Назовем переменную эволюции t
и вектор переменных решения как x
. Решения могут выглядеть так:
a * exp(-b * t)
, где a << 1
и b > 0
. Это не интересно Таким образом, он начинается с небольшого (ых) значения (ий) и в основном уменьшается (ы) до 0. Это легко обнаружить.
c * ((tanh(b * t) + 1) / 2)
, где -1 < c < 1
и b > 0
. Таким образом, он начинается в районе 0, а затем развивается во что-то между -1
и +1
.
- Нечто, похожее на очень искаженное
c * sin(b(t) * t)
, где -1 < c < 1
и b(t)
является проявлением того факта, что решение является нелинейным.
Допустим, я собираю около 1000 (или любого другого числа) некоторых совокупных результатов по пути, и мне нужно различать 2 и 3. В конце концов, это очевидно, когда вы смотрите на график!
Однако часто бывает так, что решение может оставаться около нуля в течение некоторого времени, а затем через некоторое время начинает отклоняться в # 2 или # 3. Таким образом, все, что происходит позже во времени, должно иметь больший вес, чем то, что происходит в начале. Поэтому, в принципе, мне нужно число или два, чтобы «сказать», что решение * tanh
-подобно или sin
-подобно и, очевидно, между ними может быть что-то!
Каков будет подходящий алгоритм для этого? Большое спасибо!