LINUX.ORG.RU

Моделирование, численный эксперимент и погрешность

 , ,


1

4

Никогда серьёзно не занимался моделированием, всегда всё делалось на коленке, побыстрее посчитать, опубликовать и забыть.

Сейчас подумал вот что. Моделирование иногда связывают с понятием численного эксперимента. При этом есть род погрешности, связанный с несовершенством модели. То есть мы можем провести моделирование несколько раз (или один раз, но получить набор однотипных величин, например, вероятностей квантовых переходов между однотипными уровнями) и собрать набор значений. На выходе нам нужно одно число, так что мы берём среднее. Помимо среднего у нас, конечно, будет дисперсия.(зачёркнут бред) Так вот, каков её статус? Несёт ли она какую-нибудь пользу? Например, некоторые экспериментальные ошибки неустранимы и связаны с физическими эффектами (особенно статистическими или квантовыми), типа уширения линий и т.п., и несут в себе определённую информацию. А несут ли в себе информацию ошибки моделирования?

Вряд ли то, что я написал, достаточно легко понять, но немножко лень формулировать мысль более чётко, вдруг и так сойдёт.

Вопрос возник в связи с моделированием штарковской лестницы методом матриц переноса.

EDIT

Итак, прошло две недели, и я смог сформулировать вопрос: «Как по величине расхождения теории и результатов моделирования можно судить о пригодности модели? Какое расхождение считать допустимым, а какое говорит о том, что выбранные приближения не годятся?»

Немного подробностей про источник проблемы: Моделирование, численный эксперимент и погрешность (комментарий)



Последнее исправление: knovich (всего исправлений: 4)

Так вот, каков её статус? Несёт ли она какую-нибудь пользу?

Прежде всего, она определяет, работает ли Ваш метод или нет. Для чего Вы моделируете? Обычно для проверки некоторой гипотезы. И именно дисперсия позволит Вам оценить вероятность того, что Ваше среднее совпало (или, наоборот, отличается) от ожидаемого гипотетического значения не вследствие модели, заложенной в Ваш численный эксперимент, а в силу случайных стохастических причин.

Serge10 ★★★★★
()

На выходе нам нужно одно число, так что мы берём среднее. Помимо среднего у нас, конечно, будет дисперсия.

Это частный случай из ММП и годен только ежели ты уверен в гауссовском распределении измеряемых величин.

В противном случае используют методы непараметрической статистики ©, которые зависят от меньшего числа допущений и более надежны.

А несут ли в себе информацию ошибки моделирования?

Эти ошибки могут быть классифицированы как субъективные, так и методические ©.

немножко лень формулировать мысль более чётко, вдруг и так сойдёт

В правильной и чёткой формулировке задачи бывает около половины её решения.

quickquest ★★★★★
()
Ответ на: комментарий от quickquest

годен только ежели ты уверен в гауссовском распределении измеряемых величин

Ну я использовал слово «дисперсия» в рабоче-крестьянском смысле, то есть имел в виду просто тот факт, что величины не равны, а разбросаны в каком-то диапазоне.

В правильной и чёткой формулировке задачи бывает около половины её решения.

Да, это я понимаю, но я тупой, статистику учил плохо и вообще вот сейчас защищу диссертацию и пойду мойщиком машин работать, просто возник такой праздный вопрос.

______________________________

(также Serge10)

Всё это навеяно тем, как обычно обрабатывают результаты моделирования. Очень часто бывает так, что в результате расчётов образуются какие-то отдельные точки, числа, участки зависимости и т.д., которые «точно неправильные». Ну то есть видно, что вот в данном месте какая-то чепуха, такого быть не должно, и вообще.

В то время как на эксперименте эти явления можно объяснить самыми разными способами, типа кто-то чихнул рядом или грязь попала в образец, на моделях такой номер не прокатит. Поэтому обычно всё заметается под ковёр, а в редких случаях достаются книжки патриархов и разбираются границы применимости методов.

С другой стороны, пусть мой метод сводится к решению некоторого нелинейного уравнения. Я знаю, что решения найдены максимально точно, скажем, до 10^-15. При этом некоторая функция, определяющая физические свойства моих решений, совпадает с теорией только с точностью 10^-3. Функция может быть очень простой, типа разности двух корней, так что источник ошибки точно не в ней. Есть ли какой-то способ заранее предсказать такое расхождение? Или только смотреть на результаты и разводить руками? Потому что иначе получается странно. Может, это не модель плохая, а какой-нибудь новый удивительный физический эффект?

Это, мне кажется, вопрос скорее не математический и статистический, а больше касающийся методологии науки, или как там называется это.

knovich
() автор топика
Ответ на: комментарий от knovich

на моделях такой номер не прокатит.

Для критериев согласия © не имеет значения откуда твои данные: из физического прибора или из виртуальной модели. Они просто выдают доверительную вероятность соответствия данных твоей модели.

Есть ли какой-то способ заранее предсказать такое расхождение?

Есть «оценочная статистика» ©, где такие способы изучают .

Это, мне кажется, вопрос скорее не математический и статистический, а больше касающийся методологии науки, или как там называется это.

Это «байесовское программирование» © — формальная система и методология определения вероятностных моделей и решения задач, когда не вся необходимая информация является доступной.

quickquest ★★★★★
()

По большому счёту есть три вида неопределённости:

  • статистическая — связана с имеющейся статистикой моделирования и может быть уменьшена увеличением этой статистики
  • систематическая — связана с тем на сколько мы знаем физический детектор чего-нибудь (разрешение, эффективность, акцептанс всегда определяются с какой-то точностью). Оценивается с помощью альтернативных способов определения измеряемых величин или в случае полной безнадёги с помощью вариации катов в разумных пределах.
  • модельная — связана с теоретической моделью. Единственный способ оценки — это использование альтернативных более-менее разумных вариантов гипотез.
Evgueni ★★★★★
()
Ответ на: комментарий от quickquest

Это «байесовское программирование»

Это обычная «идентификация систем»

Что касается топика:

Данные эксперимента всего навсего «ограничения» которые мы накладываем на «фазовый портрет» изучаемой системы.

«Ограничения» могут быть и некого «априорного характера», и их мы накладываем исходя из нашего представления теоретического о виде «фазового портрета» в виде «регуляризаций» (класса решений в котором ищем конкретные значения параметров системы).

Нас принципиально интересует способности модели или в «интерполяции», или в «экстраполяции». Если мы ищем «качественное устройство модели», то второе более важно. (достигается кроссвалидацией «по краям фазового портрета системы»)

Понятие «наблюдаемость-управляемость» из теории систем позволяют понять удалось ли вообще принципиально в такой постановке модели «увидеть систему с нужной точки зрения». PS

Также важно забраться на соответственный «уровень эмеджентности» при построении модели, иначе система «построенная из первых принципов» всю эмерджентность спустит в «динамику траектории в фазовом пространстве», а «размерность фазового пространства» будет весьма убогой и не информативной. (самому же устроить закат солнца вручную и «поднять размерность фазового портрета» непомерной сложности и неоднозначности работа).

psv1967 ★★★★★
()

Да, несет, если моделирование предполагает наличие стохастических параметров. Например, симуляция классической или квантовой динамики систем может включать сэмплирование начальных условий, скажем, из больцмановского распределения. Сама симуляция может быть стохастической, например, в приближении surface hopping для моделирования неадиабатической динамики молекул.

Ну или, допустим, в поиске глобального минимума энергии может быть интересным выяснить статистику вероятности его нахождения — это даёт представление, скажем о гиперобъеме бассейна притяжения соотв. минимума в конфигурационном пространстве системы, плюс такая статистика дает понимание, насколько хорошо сэмплировано конфигурационное пространство. Для последнего лично я использовал bootstraping procedure, которая как раз оценивает дисперсию в моделировании.

unanimous ★★★★★
()

Спасибо всем отписавшимся, особенно quickquest за ссылки, также Evgueni, psv1967, unanimous, Serge10.

Не всё одинаково понятно, но я получил представление, обо что биться головой, чтобы понять.

knovich
() автор топика

Если при моделировании не используется генератор случайных чисел (всякие методы монте-карло и пр), то расчеты должны быть полностью воспроизводимы. Есть некоторая недетерминированность связанная с тем в какой последовательности будут например суммироваться числа в многопоточном приложении, но если на нее забить то при повторном расчете с теми же параметрами будут получаться точно такие же результаты (во всех знаках). В реальном эксперименте это не так.

Ошибки (расхождение результатов моделирования с какими то реальными экспериментами) могут быть обусловлены: 1) расхождением физико-математической модели с реальной природой 2) ошибками в эксперименте 3) численными ошибками при решении уравнений физико-математической модели

С п. 1 и 2. ничего не поделаешь (ну то есть это не относится к самому численному моделированию).

Численные ошибки из п.3. могут быть связаны с: a) ошибками округления b) ошибками аппроксимации каких то сеточных функций, ошибками числе схемы и пр.

На пункт a) обычно можно забить (в карйнем случае работать на double а не float), если только речь не идет о суммировании каких то здоровых знакопеременных рядов, но это отдельная история.

Борьба с ошибками из пункта b) это с-но и есть наука и искусство;-) Про это можно долго рассказывать, обычно код тестируется путем сранвнения с известным аналитическим решением, в крайнем случае делается один расчет с очень мелким шагом сетки. Есть общие закономерности - скажем для схемы со вторым порядком ошибка должна уменьшится вчетверо при уменьшении шага вдвое, это проверяется в процессе тестирования.

Это вкратце.

AntonI ★★★★★
()
Ответ на: комментарий от knovich

При этом некоторая функция, определяющая физические свойства моих решений, совпадает с теорией только с точностью 10^-3.

Обычно это значит, что модель не полна. Если в силу упрощений какие-то тонкие эффекты выкидываются, то можно оценить как ни могут повлиять «из общефизических соображений», т.е. взять простую систему, где есть только этот эффект и проследить как он эволюционирует со временем.

thunar ★★★★★
()
Последнее исправление: thunar (всего исправлений: 1)
Ответ на: комментарий от knovich

Есть ли какой-то способ заранее предсказать такое расхождение?

Есть раздел интервальной математики, которая может подсказать, насколько велико может быть расхождение в численном методе, потому что компьютер оперирует конечными приближениями чисел, где случаются ошибки округления. Кстати, некоторые методы, которые красиво выглядят на бумаге, ваще на компьютере могут быть некорректными (по Тихонову).

Если на результат влияют сильно (а иногда очень сильно) ошибки в исходных данных, то задача может быть некорректной. Тогда применяют методы регуляризации.

Дисперсия, конечно, важна, и ее часто применяют для анализа чувствительности модели к случайным входным параметрам.

dave ★★★★★
()
Последнее исправление: dave (всего исправлений: 1)
Ответ на: комментарий от dave

компьютер оперирует конечными приближениями чисел, где случаются ошибки округления.

Как правило основной источник ошибок это все таки не ошибки округления а ошибки сеточной (конечно-разностной, конечно-элементной и т.д.) аппроксимации.

AntonI ★★★★★
()

Вопрос возник в связи с моделированием штарковской лестницы.

Это же сверхрешётка? Там волновая функция в барьере на много десятичных порядков проседает, обычного long double уже может не хватить…

greenman ★★★★★
()
Ответ на: комментарий от greenman

Там волновая функция в барьере на много десятичных порядков проседает

Это правда, но у меня не совсем в этом проблема. В сверхрешётке в электрическом поле должны быть эквидистантные уровни энергии. А у меня энергии отдельных уровней ищутся с точностью, скажем, dE, а расстояние E_i-E_(i+1) для двух последовательных i совпадает с точностью примерно 10^5*dE.

Понятно, что это происходит из-за каких-нибудь краевых эффектов или ещё каких-то проблем модели. Просто я думаю, до каких пор можно пользоваться моделью и считать результаты правильными.

P.S. Там, собственно, прелесть в том, что если недостаточно точно посчитать уровни энергии, то волновая функция будет расходиться на бесконечности сразу. Поэтому надо прямо вот очень точно энергию находить.

knovich
() автор топика
Последнее исправление: knovich (всего исправлений: 1)

Есть ещё погрешности вычисления используя двоичную систему счисления на компьютерах. Там очень жёсткие погрешности можно отхватить на больших экспонентах.

HIS
()
Ответ на: комментарий от greenman

обычного long double уже может не хватить…

Для этого придумали десятичные варианты счисления реализованные в процессорах и программно. Вычисления идут гораздо медленнее но точнее.

В частности эти варианты вычислений используют для финансовых вычислений в системах работающих с деньгами.

HIS
()
Ответ на: комментарий от psv1967

Что такое CAS? Computer Algebra System? Слишком медленно, затыкается на больших объёмах (пробовал Mathematica). А аналитика там не поможет.

Изначально это писалось на фортране, поэтому и всякие классные библиотеки не подходили тоже. Сейчас я всё это переписываю (собственно, после выноса ввода-вывода в питон вычислительная часть совсем небольшая), наверное, предусмотрю возможность выбирать back end. Но в фортране удобно работать с комплексными числами, чего не скажешь про Си и его библиотеки. У меня там очень много чего комплексного.

knovich
() автор топика
Ответ на: комментарий от HIS

Там очень жёсткие погрешности можно отхватить на больших экспонентах.

Именно на экспонентах и именно в двоичной системе? Можно подробнее?

knovich
() автор топика
Ответ на: комментарий от knovich

Попробуйте погуглить про posit-ы - это новый формат для плавающей точки, по идее он решает проблему с ошибками округления (если дело в этом). Правда я не знаю как там с приличными библиотеками...

AntonI ★★★★★
()
Ответ на: комментарий от HIS

В системах работающих с деньгами используют длинную целочисленную арифметику (поскольку есть квант денег - копейка, цент и пр).

Никаких преимуществ с т.з. ошибки округления десятичная система не имеет. Есть преимущество при переводе некоторых рациональных чисел в читаемый десятичный формат - но у ТС проблемы отнюдь не с этим.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Я ещё слышал про ball arithmetic, тоже занятная штука. Но у меня вряд ли проблема с ошибками округления.

knovich
() автор топика
Ответ на: комментарий от knovich

Если хотите, присылайте текст где описана физ-мат модель, численная схема, результаты и что не получается - постараюсь посмотреть.

Будь Вы из Москвы, я бы Вас просто к нам в гости на семинар позвал, ну а так придется удаленно... по какой специальности защита?

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Попробуйте погуглить про posit-ы - это новый формат для плавающей точки

Раньше не слышал, но мне попадалась новость о новом формате, который был запатентован несмотря на то, что реализует давно известный принцип. https://boundedfloatingpoint.com/BFP.htm

Там внизу у Йоргенсена действительно есть ссылка на Густафсона (хоть и без ключевого слова «posit»):

Controversy

On January 17, 2018, in a reply to the article, «Has the Decades-Old Floating Point Error Problem been Solved?» article posted in insideHPC, John Gustafson has stated:

«Absolutely amazing that the US Patent Office would grant a patent for an idea I first publicly presented in 2013, and published in a very well-received book (The End of Error: Unum Arithmetic) in February 2015. All three forms of unum arithmetic are open source and free of patent restrictions (MIT Open Source license). For Jorgensen to claim to be the inventor of this concept is pretty outrageous.»

Professor Gustafafson's remarks are disingenuous. The only similarity between Unums and Bounded Floating Point is the concept of providing a solution to the problem of floating point error. As determined by the US Patent Office, my invention is original and unique. Please see:

My Rebuttal

Эх, вместо того чтобы пойти в ISO и стандартизировать, человек заказал патент.

gag ★★★★★
()
Ответ на: комментарий от gag

Да он вроде никак не успокоится, все лепит вариант за вариантом. Как успокоится - может и стандартизируют.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Никаких преимуществ с т.з. ошибки округления десятичная система не имеет

Не совсем так. Например ты можешь в такого рода числах указывать целую и дробную часть отдельно такими какими тебе лично нужно.

ДА скорость страдает, но работает по точности ровно на столько на сколько ты указал количество разрядов.

HIS
()
Ответ на: комментарий от HIS

Я знаю сколько разрядов держит float и сколько держит double. Если я знаю что мне не хватает double то можно поискать всяких библиотек, но скорее всего это значит что я делаю что то не то.

Поскольку в двоично-десятичном коде 30% комбинаций не используется, то он априори хуже двоичного при том же размере числа (про скорость работы я не говорю).

Если нужна fixed point арифметика то это уже экзотика - но я опять таки не вижу никаких преимуществ у десятичной системы перед двоичной.

Ну и наконец, если говорить о ошибках округления при численном моделировании, то в типичных серьезных случаях никакая двоично-десятичная система (ровно как и long long long ... double) от них не спасет - это отдельная история, тут нужны алгоритмические решения.

AntonI ★★★★★
()
Ответ на: комментарий от HIS

Я ее таки прочитал, и не увидел там описания того что Вы называете «проблемами с экспонентой».

И это не важно сколько байт уходит на число.

Попробуйте сказать это при личной встрече тем, кто занимается численным моделированием, бггг.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

никакая двоично-десятичная система (ровно как и long long long ... double) от них не спасет

Всегда есть пробелы в знаниях и это не стыдно, если ты стремишься их заполнить недостающим.

HIS
()
Ответ на: комментарий от AntonI

Да к стати 7 минут - за это время даже буквы прочитать в статье не реально не торопясь, а не то чтобы понять суть проблемы описываемой в ней.

Ты лгун. 4.2 тебе в подарок.

HIS
()
Ответ на: комментарий от AntonI

Попробуйте сказать это при личной встрече тем, кто занимается численным моделированием, бггг.

В догонку не читающему и не вникающему в статьи.

Таки прочитай статью и вникни в суть потери точности от порядка (экспоненты) числа.

Вникни, что я имел ввиду про количество байт в числе (полезно будет для понимания статьи).

И хотелось бы увидеть, что ты сам то разработал за свою жизнь эдакого, чтобы мне бугагашки тут выставлять не подумавши.

Мне есть что выставить.

HIS
()
Ответ на: комментарий от HIS

Прежде чем кому то что то советовать/спрашивать, научитесь хотя бы трем вещам:

1) прилично себя вести

2) отвечать за свои слова

3) читать что Вам пишут и понимать написанное

До тех пор ни Вы, ни Ваши «разработки» мне неинтересны, да и не хочется загромождать хорошую тему флеймом/воспитанием упоротой школоты, возомнившей себя экспертом на основе одной статьи на хабре (которую Вы к тому же, судя по Вашим комментариям, так толком и не поняли).

Если Вы таки осилите эти три пункта, то при желании приходите на спецкурс по численному моделированию который я читаю в МФТИ. А пока что всего хорошего.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

спецкурс по численному моделированию который я читаю в МФТИ

В свободном доступе, случаем, не имеются ли видеозаписи ваших лекций?

the_real_kinik ★★
()
Ответ на: комментарий от the_real_kinik

Нет. Это не лекции а спецкурс базовой кафедры, и на занятиях много времени уходит на самостоятельную работу студентов. Может быть со временем выйдет книга (за 15 лет материал уже устаканился), но пока что ее нет.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

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

Ясно - понятно.

HIS
()
Ответ на: комментарий от AntonI

Я так понял ТС всё понятно из того что я описал и его вопрос мне тоже был понятен.

Вот где ВЫ посчитали что ВАМ грубят - я честно не понял. Обвести кружочком можно?

А то что ВЫ невежда я понял. И когда чего-то не понимаете или не знаете и вам приводят совершенно чётко описание некоторых вещей о которых ВЫ не имеете понятия - считаете личным оскорблением?

Я тут бессилен.

HIS
()

К стати да!

Про округления.

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

Есть множество вариантов округлений. Для разных сфер. Если интересно, могу чуть шире рассказать.

Но если идёт какое-то вычисление и все данные например в формате Double. Конечно же никаких округлений делать не нужно и даже вредно, зачем выбрасывать и так ценный данные в вакуум.

Округления нужны только в некоторых случаях и в большинстве они находяися в области отображения информации, ну например что-то нужно вывести в процентах на экран в целочисленной форме от 0 до 100. Или например после вычислений цвета пикселя при обработке изображения конечный варианты компонентов цвета тоже обычно округляю до значений от 0 до 255.

Так же есть варианты для увеличения точности расчётов в продумывании последовательности самих действий при расчётах, это тоже очень широкая и не до конца изученная область.

HIS
()
Ответ на: комментарий от HIS

Ох божечки, Вы оказывается даже не владеете базовой терминологией в обсуждаемой области (например не знаете что такое «ошибка округления»), а я тут пытался Вам что то объяснять... простите;-(

Вы мне напоминаете Царя, был тут такой самородок.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

У ВАС пунктик по округлениям? Что и где я писал про ошибки округления? Я сказал что округления вообще не нужно применять при вычислениях.

У ВАС точно всё хорошо со здоровьем? Начинаю волноваться за ВАС.

Если ошибки округления это ВАШИ единственные знания по математике - мне очень жаль ВАС.

Уверен что и по округлениям у ВАС есть пробелы в знаниях.

Вы мне напоминаете Царя, был тут такой самородок.

Есть подозрение, что этот самородок ВЫ и есть. У этого самородка тоже были такие же «глубокие» познания об двоичном представлении чисел с плавающей точкой. Ржал пол часа от его перлов по представлению чисел в компьютерах.

HIS
()
Ответ на: комментарий от HIS

Если ошибки округления это ВАШИ единственные знания по математике - мне очень жаль ВАС.

Плюсую.

Deleted
()
Ответ на: комментарий от HIS

Вы написали

Про округления.

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

Если пройтись поиском по треду, то хорошо видно что выше этого Вашего высказывания всегда и везде речь идет об «ошибках округления» - что и правда к Вашим округлениям никакого отношения не имеет, а вот к проблемам точности при операциях с флоатинг пойнт имеет самое прямое отношение. Про это кстати в приведенной Вами статье с хабра очень подробно написано, и как теперь видно Вы эту статью не поняли.

Вы уже принялись оправдываться, но боюсь Ваше мнение теперь никому из прочитавших этот тред не интересно ни по какому поводу... пичалька.

AntonI ★★★★★
()
Ответ на: комментарий от AntonI

Совсем ты чувак поехал вижу. Царь вижу во всей красе в тебе :)

Ладно. Мира тебе и адекватности.

Покеда.

HIS
()
Ответ на: комментарий от HIS

Если интересно, могу чуть шире рассказать.

Интересно, как округления используются для численного моделирования. Жаль, что ты не расскажешь.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

Ну во всяких методах основанных на частицах или характеристиках, когда определяется в какую ячейку сетки попали, таки да - округление используется;-)

Но он не расскажет, увы.

AntonI ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.