Когда у нас есть числовая модель, представляющая реальную физическую систему и демонстрирующая хаос (например, модели гидродинамики, модели климата), как мы можем знать, что модель работает так, как должна? Мы не можем сравнивать два набора выходных данных модели напрямую, потому что даже небольшие изменения начальных условий резко изменят результаты отдельных симуляций. Мы не можем сравнивать результаты модели непосредственно с наблюдениями, потому что мы никогда не сможем с достаточной детализацией узнать начальные условия наблюдений, и численное приближение в любом случае вызовет незначительные различия, которые распространятся по всей системе.
Этот вопрос частично вдохновлен вопросом Дэвида Кетчона о модульном тестировании научного кода : меня особенно интересует, как можно реализовать регрессионные тесты для таких моделей. Если незначительное изменение начальных условий может привести к значительным выходным изменениям (которые вполне могут быть адекватными представлениями реальности), то как мы можем отделить эти изменения от изменений, вызванных изменением параметров или внедрением новых числовых процедур?
Если ваш код может работать в не хаотических режимах вашей основной проблемы, особенно в не хаотических режимах, где вы можете использовать метод готовых решений, вы должны написать регрессионные тесты, которые выполняются в этих режимах, даже если они не интересны для вас иным образом , Если эти тесты не пройдены, вы сразу узнаете, что что-то пошло не так в ваших последних изменениях кода. Тогда вы можете перейти к более физически актуальным проблемам.
источник
Во-первых, я собираюсь сосредоточиться на вашем последнем предложении, поскольку вы затрагиваете несколько разных вещей в вашем вопросе, но я чувствую, что это адекватно отражает то, что вы спрашиваете. Если вы изменяете числовые подпрограммы, вам не следует изменять начальные условия или системные параметры, пока вы не проверили новую подпрограмму из старой. На самом слабом уровне я вижу в этом сравнение некоторых усредненных по времени значений по вашему решению и их согласованности (даже если переходные поведения расходятся друг от друга в хаосе). На самом сильном уровне вы ожидаете, что две подпрограммы воспроизведут полное переходное поведение. Какой из них вы хотите, а какой приемлемый, зависит от того, какие вопросы вы задаете и какие выводы вы делаете из решений.
Если говорить о том, «работает ли модель как следует», то это совершенно другой вопрос. Это не имеет ничего общего с выбранными вами числовыми процедурами. Как вы строите свою модель, от ваших упрощающих допущений до ваших измерений / расчетов параметров, вы должны основывать все свои решения на физике проблемы, и, надеюсь, предшествующая работа была проделана в подобных случаях. Вы можете проверить модель с помощью простого случая, воспроизведенного в лабораторных условиях, но бывают случаи, когда даже это нетривиально. Если вы не можете определить важный системный параметр с точностью до порядка, вы не можете ожидать, что кто-то будет доверять мелким деталям, которые вы вычисляете в переходном локальном поведении.
источник