Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Alexandr-
0 / 0 / 2
Регистрация: 15.09.2012
Сообщений: 78
1

Метод Ньютона (касательных), программа выдает неправильный результат

30.11.2016, 23:06. Просмотров 651. Ответов 6
Метки нет (Все метки)

Здравствуйте. Проблема в том, что с моей функцией программа выдает неверный результат(хотя если написать функцию, например x*x-2, то все нормально).
Метод Ньютона(касательных).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "stdafx.h"
#include <math.h>
#include <iostream>
using namespace std;
 
//Функция
double f(double x) {
 
    return (cos(x)*sin(6*x*x)-4*sin(x));
}
 //Производная
double f1(double x) {
 
    return (12*x*cos(x)*cos(6*x*x)-sin(x)*sin(6*x*x)-4*cos(x));
}
 //2 производная
double f2(double x) {
 
    return (-144*x*x*sin(6*x*x)*cos(x)-24*x*sin(x)*cos(6*x*x)+4*sin(x)-sin(6*x*x)*cos(x)+12*cos(x)*cos(6*x*x));
}
 
int main() {
    int n=0;
    double a,b,c,eps;
 
    cout<<"Vvedite granici otrezka\n";
    cout<<"a="; cin>>a;
    cout<<"b="; cin>>b;
    cout<<"eps="; cin>>eps;
 
    if(f(a)*f2(a)>0) c=a;
    else c=b;
    do {
        c=c-f(c)/f1(c);
        n+=1;
    }
    while (fabs(f(c))>=eps);
        cout<<"c="<<c<<"\n";
        cout<<"n="<<n<<"\n";
 
    system("pause");
    return 0;
}
Добавлено через 5 часов 55 минут
Помогите кто-нибудь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2016, 23:06
Ответы с готовыми решениями:

Программа для подсчета калорий выдает неправильный результат
Здравствуйте. Недавно начал изучать c++. Написал простую программу для...

Метод касательных (Ньютона)
Добрый вечер! Вот нашел на форуме задачу решения уравнения по методу...

Метод Ньютона (касательных)
Здравствуйте. Прошу помочь с задачей: Дано квадратное уравнение X^2-4=0...

Решение уравнения методом касательных (метод Ньютона) в С++, С
Доброго времени суток. Помогите решить методом касательных уравнение: 1/x -...

Программа выдает неправильный ответ при перегрузке
не понимаю почему ответ выходит за пределы допустимых значений:wall: ...

6
tegauss
30 / 24 / 27
Регистрация: 06.05.2014
Сообщений: 161
01.12.2016, 06:44 2
Alexandr-,
а почему ответ неверный? Вроде бы все ок. Приведите числа, которые вас не устраивают.

Добавлено через 11 минут
Alexandr-,
а вот то, что функция не самая подходящая, это да. Пробовали построить и посмотреть на нее?
0
Alexandr-
0 / 0 / 2
Регистрация: 15.09.2012
Сообщений: 78
01.12.2016, 10:08  [ТС] 3
К примеру если ввести а=2, b=5, eps=0.001 ответ будет -1.11443e-005
Если ввести тоже самое на:
Кликните здесь для просмотра всего текста
http://math.semestr.ru/optim/newton.php

То там ответ будет 1.56019013...
0
Байт
Эксперт C
18951 / 12165 / 2540
Регистрация: 24.12.2010
Сообщений: 24,805
01.12.2016, 11:10 4
Alexandr-, Градусы с радианами не путаете?
0
Alexandr-
0 / 0 / 2
Регистрация: 15.09.2012
Сообщений: 78
01.12.2016, 11:52  [ТС] 5
А причем тут градусы и радианы? При простой функции же выводит 1 и тот же ответ.
0
Байт
Эксперт C
18951 / 12165 / 2540
Регистрация: 24.12.2010
Сообщений: 24,805
01.12.2016, 11:55 6
Цитата Сообщение от Alexandr- Посмотреть сообщение
причем тут градусы и радианы?
Мое дело предупредить...
0
tegauss
30 / 24 / 27
Регистрация: 06.05.2014
Сообщений: 161
01.12.2016, 19:02 7
Alexandr-,
ну замечательно А не смущает вас, что в этой точке (1.56) ваша функция не равна нулю? То есть, это никакой не корень, а метод просто не сошелся. И, вероятно, зациклился возле локального экстремума. Ваша программа в таком случае просто зависла бы, а в той онлайн решалке, видимо, сработало ограничение на количество итераций.

Ваша же программа зависает, если ввести, к примеру a=4, b=5, e=0.01 (если не перепутал, по памяти пишу).

Вообще, метод Ньютона не подходит для такой функции.

Добавлено через 27 минут
Если по-умному, то, видимо, необходима монотонность первой производной функции, чтобы можно было его использовать.
0
01.12.2016, 19:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2016, 19:02

Программа выдает не правильный результат
Задание: Задана прямоугольная матрица размером N x M вещественных 8-ми байтовых...

Почему программа выдает такой результат
Всем привет. У меня в голове образовалась каша с полиморфизмом. Вот такой код:...

Метод Ньютона - программа уходит в бесконечный цикл
Подскажите где туплю, уже недели две над этой прогой сижу, а оно всё не...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru