точности совпадает с решением ду это нормально? Просто я руками считал там довольно большая погрешность
"Решение" имеется в виду аналитическое?
А есть способ проверить работоспособность метода, на ошибки имеется ввиду?
Как раз тут и подвох и ЕМНИП всё зависит от условий(см. условия применимости и сходимости методов). Так по сути есть условия в которых метод сходится к точному аналитическому решению, причём более того за конечное число шагов равное порядку метода, а есть условия в которых аналитического решения не существует и тут насколько знаю методы дают лишь гарантию на динамику сходимости(т.е. на разность между новой и предыдущей точкой), т.е. амплитуда изменений решения всё время уменьшается соответственно порядку метода. Хотя конечно нужно учитывать, что важно следить за размером шага и вообще желательно немного прошерстить тему и почитать об аттракторах и пр., ибо обычно на них объясняют нюансы применимости численных методов.
Можно формально доказать корректность алгоритма. Существуют языки, на которых пишут доказательства для некоторых важных алгоритмов криптографии, протоколов и т.д. Посмотрите F* и TLA+ из того, о чем я слышал. Это зубодробительные технологии абсолютно, не для простых смертных.
Но вообще нужно уметь базовые вещи самому доказывать, такие как гарантию завершения цикла, и разные инварианты алгоритма. По идее даже в школе проходят доказательство по индукции, и это хорошо применимо в доказательстве работы программ.
Вы не из секты формальных верификаторов к нам пришли? ;) Так вот нет, формально доказать корректность алгоритма нельзя. Beware of bugs in the above code; I have only proved it correct, not tried it. -- Donald Knuth Можно только доказать соответствие программы (или метода вычислений) какой-то спецификации. В том числе, можно доказать какие-то свойства некоторых программ (инварианты, отсутствие какого-то вида поведения, максимальное использование каких-то ресурсов и т.п.).
Обсуждают сегодня