Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <iomanip>
- // Написать программу, реализующую метод 'Ньютона с подвижным полюсом'
- // Входные данные: Точность решения
- // Функция f(X)
- double f(double x) {
- return log((x - 1) / 3) / 3;
- }
- // Производная функции f(x)
- double fdx(double x) {
- return 1 / (3 * (x - 1));
- }
- // ln((x - 1) / 3 ) / 3 = 0
- double next(double x) {
- return x + f(x) * (f(x) - 2) / 2 * fdx(x);
- }
- int main() {
- double x = 1.5;
- double nextX = 1.5;
- double accuracy = 1e-10;
- for (int i = 0;; i++) {
- nextX = next(x);
- if (abs(nextX - x) < accuracy) {
- std::cout << std::setprecision(10) << x << std::endl;
- return 0;
- }
- x = nextX;
- }
- return 0;
- }
Advertisement