Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
#1

Решить функцию методом Ньютона - C++

17.10.2012, 17:21. Просмотров 1553. Ответов 24
Метки нет (Все метки)

Нужно решить функцию методом Ньютона http://www.cyberforum.ru/cgi-bin/latex.cgi?0.1 x^2 - x \ln \,x=0. Отрезок содержащий корень [1;2]. Точное значение должно выдать 1,1183. Но моя прога выдает -1.#IND
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
#include "stdafx.h"
#include <iostream>
#include <iomanip>  // для setprecision
#include <cmath> // для pow и log
 
using namespace std;
double Rech1(double x)
{
    return 0,1*pow(x,2)-x*log10(x);  // начальная
}
double Rech2(double x)
{
    return 0,1*pow(x,2)-x*log10(x);           //Производная
}
void main()
{
    double x = 2, x0 = 1;
    double e = 0.0001;
    do
    {
        x0 = x;
        x = x0 - Rech1(x)/Rech2(x);
    }
    while (fabs(x0-x)>e);
    cout << setprecision (6)<<x;
 
  system("pause");
  
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.10.2012, 17:26     Решить функцию методом Ньютона #21
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
#include <iostream>
#include <cmath>
double f(double x)
{
 return 0.1*x*x-x*log(x);
}
double f1(double x)
{
 return 0.2*x-log(x)-1;
}
int main(void)
{
 double a=1,b=2,e=0.00001,c1,c=a;
 do
 {
  c1=c-f(c)/f1(c);
  c=c1;
 } 
 while (fabs(f(c1))>e);
 std::cout.setf(std::ios::fixed);
 std::cout.precision(4);
 std::cout<<c1<<std::endl;
 system("PAUSE");
 return 0;
}
Здесь без второй производной.

Не по теме:

А все-таки хотелось, чтоб автор сам доделал))

Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
18.10.2012, 18:26     Решить функцию методом Ньютона #22
Методу Ньютона нужна только первая производная, вторая используется лишь для проверки корректности начальных условий.
BumerangSP
18.10.2012, 19:13
  #23

Не по теме:

Герц, была у меня книжка по численным методам, так там как раз тот пример с двумя был.

Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
18.10.2012, 21:12     Решить функцию методом Ньютона #24
Ты путаешь с оптимизацией методом ньютона.
Формула самого метода ньютона это x[i+1]=x[i]-f(x[i])/f'(x[i]).
Если ты ищешь минимум этим методом - тебе нужен нуль производной, а не самой функции, таким образом получается x[i+1]=x[i]-f'(x[i])/f''(x[i]).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 22:04     Решить функцию методом Ньютона
Еще ссылки по теме:

C++ Интерполяция методом Ньютона и Лагранжа
C++ Уравнение методом Ньютона
Решить уравнение по заданной формуле методом хорд и модифицированным методом Ньютона C++
Решение уравнения c методом касательных (Ньютона) C++
C++ 'разобраться' с уравнением методом Ньютона

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

Или воспользуйтесь поиском по форуму:
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.10.2012, 22:04     Решить функцию методом Ньютона #25
Герц, в общем-то да, похоже...Но дело в том, что я нашел код, который делал по блок-схеме из той книжки, и там почему-то она была, только не использовалась. Может, случайно написал
Yandex
Объявления
18.10.2012, 22:04     Решить функцию методом Ньютона
Ответ Создать тему
Опции темы

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