Лабораторная работа «Сложность алгоритмов, вычислительная погрешность и решение уравнений»
Эта работа закрывает раздел «Сложность алгоритмов» и впервые вводит полноценный численный метод.
Сначала студент выполняет:
console.log(0.1 + 0.2);
после чего рассматриваются:
-
абсолютная погрешность;
-
относительная погрешность;
-
машинное представление;
-
накопление ошибки;
-
критерий остановки численного алгоритма.
Связь с JavaScript здесь принципиальна: Number — двоичное число двойной точности IEEE 754, а значит численные методы нельзя преподавать так, будто вещественная арифметика компьютера полностью совпадает с арифметикой действительных чисел. [2]
Численная задача: найти корень f(x)=0.
Обязательный метод — бисекция:
function bisection(f, left, right, eps, maxIterations) {
// реализация студента
}
Дополнительно — метод Ньютона.
Студент сравнивает:
-
число итераций;
-
полученное значение;
-
невязку |f(x)|;
-
чувствительность к начальному приближению.
Бизнес-варианты: точка безубыточности, внутренняя ставка доходности для упрощённого денежного потока, баланс спроса и предложения, решение нелинейной модели роста.
После этой работы студент должен различать:
сложность алгоритма, время работы программы, точность результата и сходимость метода.
