Язык Си в примерах/Корень уравнения: различия между версиями

Содержимое удалено Содержимое добавлено
мНет описания правки
мНет описания правки
Строка 50:
== Вопросы и задачи ==
 
* За один шаг длина отрезкапромежутка <tt>[l, r)</tt> уменьшается в два раза. Сколько нужно шагов, чтобы уменьшить отрезок более, чем в 1000 раз?
* Сколько требуется шагов, чтобы начиная с отрезка длины <math>r-l=2\,\!</math> дойти до отрезка длины меньше <math>10^{-10}\,\!</math>? Сколько требуется шагов, чтобы найти корень с точностью до 100 знаков после запятой?
* В случае деления попалам у нас есть нижняя и верхняя граница для значения корня. С каждым шагом эти границы сближаются. В методе Ньютона нахождения корня уравнения у нас имеется одно число ''x'' &mdash; текущее приближение корня. И следующее приближение получается по следующему алгоритму: находим точку на графике с абциссой x и проводим из неё касательную к графику; абcцисса точки пересечения касательной с осью абцисс будет новым значением ''x''. Так делается до тех пор, пока новое ''x'' отличается от старого на число меньше, чем <math>10^{-10}/2\,\!</math>. Реализуйте этот алгоритм. Для этого вам понадобится определить еще одну функцию, которая возвращает значение производной <math>f'(x) = (e^x-x-2)' = e^x-1\,\!</math>.
Строка 57:
==Универсальная функция вычисления корня==
 
В рассмотреннойпрограммерассмотренной программе вычисляется нуль вполне конкретной функции: f(x) = exp(x) - 2 - x.
Следуя идеологии [[w:Повторное использование кода|Code reuse]] (повторное использование кода), полезно сделать функцию, которая умеет находить нули произвольных функций.
Для этого нужно научится передавать функцию в качестве аргумента --- это возможно, и совсем несложно: