Pull to refresh

Comments 17

Не хватает классических тестов качества аппроксимации — задать сетку из 101 и 201 точек, и при равном значении времени окончания эксперимента, убедиться в том, что точность полученного решения соответствует теории (должны быть верно вычислены (и должны совпасть) 4 знака после запятой, если метрическая длина стержня — 1 метр). Если этого нет — решение никуда не годится, увы.
Какой-то очень суровый тест — неужели для решений диф.уравнений он используется?

Совпадение до 3-го знака (считал решение в середине стержня). Три расчета: для пространственной сетки в 100 и 200 точек (для 200 взял предыдущее и удвоенное число узлов по времени):


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

Увы, но теория разностных схем говорит, что знаков должно быть 4 (погрешность аппроксимации меньше квадрата шага сетки, который = 0.01). Так что вашей реализации НЕЗАЧТ.
Буду признателен, если дадите ссылку на упоминание о 4-х знаках после запятой в теории разностных схем.
Вот например , раздел «Аппроксимация». Погрешность данной схемы составляет 2 порядка от шага по пространству (квадрат шага) и 1 порядок шага по времени: O(h^2+t). Из выполнения устойчивости по Куранту как раз следует, что t подобрана меньше h^2 в несколько раз, чтобы порядок аппроксимации по пространству и времени суммарно соответствовал.

Учебник Патанкара также могу рекомендовать.

Замечание в сторону — Технологию апостериорной проверки точности численных методов разработал Карл Рунге, зять того самого Куранта, который разработал условие устойчивости.
Ваша первая ссылка ровно на явную схему бегущего счета, которая — один-в-один и рассмотрена в статье:

image

И о тесте про 4 знака после запятой там ничего нет.

Вообще-то моя статья — не про выбор хорошего алгоритма для решения диф.уравнения (явная схема Эйлера как раз плохая, а хороша она тем, что простая и часто работает). А про то, как быстро «на коленке» можно посчитать разностную схему в Маткаде, не требующем никаких навыков программирования (причем, в бесплатной версии).
Дело не в конкретном числе «4 знака после запятой». Знаков схема дает не «4», а в зависимости от шага сетки. Если шаг сетки h<0.01, точность результата будет ± 0.0001 [O(h^2)]. (При условии, что длина = 1)

Обширный пласт теории численных методов вертится вокруг контроля точности вычислений. В противном случае, имеем классику компьютинга «на скриптах за 5 минут» — мусор на входе => мусор на выходе.

Такой результат не пройдет в качестве лабораторки в любом приличном учебном заведении — завернут. А по графикам вычислительные программы не тестируют.

Увы, но вычислительная математика крайне занудна. В качестве развлекухи для заманивания студентов она не подходит. Вот вы поставили 101 точку разбиения или 100?

Никто не будет искать, куда сбежала одна тысячная — график бабахнули и ладно. А потом спутники падают, мосты волнами идут, реакторы плавятся на АЭС, и так далее, и тому подобное.
М=100 интервалов, это М+1=101 узлов.

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

И конечно, в некоторых задачах допустимо считать «плюс-минус-лапоть», а в некоторых — нет. Для долговременных расчетов тех же координат ИСЗ (где обыкновенные диф.уры, но решения быстро осциллирующие, и точность критична) есть специальные алгоритмы.
Вычислительная математика без доказательств никуда не годится, так как ее результаты ничем не обоснованы. Их можно применять в развлекательных целях, не более.

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

Вы эту гарантию не выполняете.

Напоминаю, что уменьшив шаг по пространству, нужно уменьшить шаг по времени, а количество по времени шагов — увеличить. Чтобы по времени полученные решения U(x,t) совпали.
Ваше утверждение про точность в четвертом знаке неверно. Ошибка аппроксимации данной схемы — image, константа устойчивости — единица. Очевидно, что ошибка не фиксирована, она зависит от гладкости решения. Похоже, что о зануднсти вычислительной математики вы судите исключительно из своего опыта.
Моя оценка является более грубой, чем ваше E: h^2>E. То есть, на самом деле, схема чуточку точнее, и 4 знака давать она обязана.

Особенно, в такой постановке, когда есть аналитическое решение.
Ничо ни понял, для этой явной схемы курант надо брать 1/8 и все бу в шоколаде.
Спасибо за статью, очень занимательно!
Вопрос немного не по теме. Раз уж речь зашла о тестах качества аппроксимации, не подскажите ли такой момент: для некой функции я провожу точечную аппроксимацию путем решения системы линейных уравнений. При этом я могу задать сколь угодно много уравнений и решить их, например, методом наименьших квадратов. Есть ли критерии, по которым я точно могу сказать, что достаточно трех/пяти/ста точек для успешной аппроксимации и рекомендации по выбору этих точек?
Если посмотреть на самый простой случай — построение линейной регрессии Ах+В по массиву N точек х, у (т.е. одного уравнения), то легко получить оценку того, насколько близко расположены точки данных от линии регрессии. Будет зависимость от 1/(N-2)1/2. Подробнее см. в моей статье про корреляцию и регрессию (самый конец — последние три графика — как раз про такую оценку).
В общем виде таких рекомендаций нет и быть не может. Однако, тот же самый Рунге из комментария выше показал, что на равномерных сетках вас ждет Феномен Рунге, который заключатся в катастрофическом падении точности при увеличении количества узлов интерполяции полиномом.
Для рассматриваемой разностной схемы феномен Рунге ни при чем, т.к. и по t, и по x интерполяция линейная.
Мой комментарий является развитием оффтопика, начатого Astrei — общего вопроса аппроксимации функций.
Only those users with full accounts are able to leave comments. Log in, please.