0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 128

Нахождение корня функции методом Ньютона

10.05.2017, 23:47. Показов 2498. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Решаю задачу: создать алгоритм для нахождения корня функции методом Ньютона.
Общая постановка: n = n1 - f(n1)/f(n1)' Решается итеративно: на каждой новой итерации в качестве n1 используется n из предыдущей. Чтобы ряд значений сошелся, ввести критерий останова: к примеру "вычислять до тех пор, пока значение, полученное на итерации i будет больше (или равно) значению, полученному на итерации i-1, на фиксированную величину".
Использую следующий код для случая f(n) = n^2:
Java
1
2
3
4
5
6
7
8
9
10
11
  public class Neetn2 {
    public static void main(String[] args) {
        double n1 = 5.00;
        double n = n1 - Math.pow(n1,2)/(2 * n1);
        while (n - n1 <= 0.35) {
            n1 = n;
            n = n1 - Math.pow(n1,2)/(2 * n1);
            System.out.println(n);
        }
    }
}
В итоге ряд значений уходит в бесконечность.
Насколько я правильно понял, алгоритм не сходится из-за того, что не учтена погрешность даблов. Результат вычисления на каждой новой итерации не сравнивается с базовым условием while из-за того, что не может корректно сравнить один дабл с другим (похожий алгоритм с натуралами прекрасно сходится).
Попытался решить, введя эпсилон таким способом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class Neetn2 {
    public static void main(String[] args) {
        final  double EPSILON = 0.03;
        double n1 = 5.00;
        double n = (n1 - Math.pow(n1,2)/(2 * n1))-EPSILON;
        while (n - n1 <= 0.35) {
            n1 = n;
            n = (n1 - Math.pow(n1,2)/(2 * n1))-EPSILON;
            System.out.println(n);
        }
    }
}
Снова не сходится...
Подскажите, пожалуйста, где у меня ошибка. Неделю уже бьюсь - душа томится.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.05.2017, 23:47
Ответы с готовыми решениями:

Нахождение корня целого числа методом Ньютона
//Не судите строго, только начал изучать, подскажите как вторую формулу в цикл поместить))(где for и далее-не верно)Спасибо!// /* ...

Нахождение корня уравнения x^3 - 2x^2 - 4x + 7 = 0 на отрезке [-3, 3] с точностью еps методом Ньютона
найти решение уравнения x3 – 2x2 –4x + 7 = 0 на отрезке с точностью е методом Ньютона. Помогите, пожалуйста

Нахождение корней функции f(x)=0 методом Ньютона
Нужно написать программу нахождения корней функции f(x)=0 методом Ньютона. Функция должна вводиться просто строкой, например в Edit. ...

2
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
11.05.2017, 07:53
Цитата Сообщение от Андрей1981 Посмотреть сообщение
Общая постановка: n = n1 - f(n1)/f(n1)' "вычислять до тех пор, пока значение, полученное на итерации i будет больше (или равно) значению, полученному на итерации i-1, на фиксированную величину".
То есть Вы утверждаете что значение на итерации i по определению может быть больше чем на предыдущей.
Алгоритм утверждает обратное.
n0 = 5
n1 = 2.5
n2 = 1.25
.... и так далее, то есть значение текущей итерации всегда меньше предыдущей.
Поэтому в такой постановке задача не решаема.
Другой вопрос вычислять до тех пор, пока абсолютная разница между итерациями не будет менее какой то величины.
Тогда вот оно...
Java
1
2
3
4
5
6
7
8
9
10
11
public class Neetn2 {
    public static void main(String[] args) {
        double n1 = 5.00;
        double n = n1 - Math.pow(n1, 2) / (2 * n1);
        while (Math.abs(n - n1) > 0.35) {
            n1 = n;
            n = n1 - Math.pow(n1, 2) / (2 * n1);
            System.out.println(n);
        }
    }
}
1
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 128
11.05.2017, 23:12  [ТС]
Спасибо за ответ!
Да, в этом был косяк. К тому же упустил из виду abs.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2017, 23:12
Помогаю со студенческими работами здесь

Процедура нахождения корня уравнения методом половинного деления и методом Ньютона
написать программу процедуру для нахождения корня каждого уравнения методом половинного деления и методом Ньютона с точностью ε=0,001....

Найти значение корня методом деления пополам и методом Ньютона
Не знаю как сделать. Новичок в этом деле Люди добрые помогите решить нам препод толком ничего не объясняет, а требует сдавать лабы....

Нахождение корня уравнения методами итераций, хорд и Ньютона
1. Найти хотя бы один корень заданного уравнения с относительной точностью 0.1%. Реализовать на Pascal-метод простых итераций для...

Уточнение корня уравнения методом Ньютона
В общем написал программу для уточнения корня уравнения y=sin(x)+0,3*x-3.4 методом Ньютона , можете проверить?Private Sub Command1_Click()...

Вычислить значение корня методом Ньютона
Произвести расчет вычисленного значения корня (подробно), если за Х принять 3 т.е. как будет выглядеть само решение x1:=x0-fun(х0) ? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например: Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
Трассировка корутин Kotlin с OpenTelemetry
mobDevWorks 14.07.2025
Асинхронное программирование меняет правила игры, особенно когда речь заходит о трассировке операций. В Kotlin с его корутинами эта проблема приобретает особый оттенок, который я хотел бы детально. . .
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru