Язык Си в примерах/Корень уравнения: различия между версиями
Содержимое удалено Содержимое добавлено
дополнение |
промежуток - это интервал, а метод деления отрезка, а не интервала |
||
Строка 36:
Директива <tt>#define EPS 1e-10</tt> означает: в тексте программы идентификатор EPS
заменить на число <tt>1e-10</tt>, то есть <math>1\cdot 10^{-10}\,\!</math>. Число <tt>EPS</tt> — это погрешность по оси <math>x</math>,
с которой мы хотим найти корень.
Алгоритм вычисления корня основан на [[:w:Метод бисекции|методе деления пополам]]:
Предположим, что искомый корень находится между
<tt>l = 0</tt> и <tt>r = 2</tt>. Найдем середину <tt>c</tt>
Корень находится на одном из
либо на <tt>[с, r)</tt>, а именно, на том, значение функции на концах которого
имеет разные знаки (вспомните [[w:Теорема Ролля|теорему Ролля]] про непрерывную функцию из курса мат. анализа).
Выберем нужный из двух
Будем осуществлять деление пополам, пока размер
== Вопросы и задачи ==
* За один шаг длина
* Сколько требуется шагов, чтобы начиная с отрезка длины <math>r-l=2\,\!</math> дойти до отрезка длины меньше <math>10^{-10}\,\!</math>? Сколько требуется шагов, чтобы найти корень с точностью до 100 знаков после запятой?
* В случае деления пополам у нас есть нижняя и верхняя граница для значения корня. С каждым шагом эти границы сближаются. В методе Ньютона нахождения корня уравнения у нас имеется одно число ''x'' — текущее приближение корня. И следующее приближение получается по следующему алгоритму: находим точку на графике с абсциссой x и проводим из неё касательную к графику; абсцисса точки пересечения касательной с осью абсцисс будет новым значением ''x''. Так делается до тех пор, пока новое ''x'' отличается от старого на число меньше, чем <math>10^{-10}/2\,\!</math>. Реализуйте этот алгоритм. Для этого вам понадобится определить еще одну функцию, которая возвращает значение производной <math>f'(x) = (e^x-x-2)' = e^x-1\,\!</math>.
|