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

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

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

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

17.10.2012, 17:21. Просмотров 1613. Ответов 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");
  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2012, 17:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Решить функцию методом Ньютона (C++):

Решить уравнение по заданной формуле методом хорд и модифицированным методом Ньютона - C++
8. Решить уравнение 5sinx - x = 0 на отрезке с точностью E методом хорд и модифицированным методом Ньютона.

Методом Ньютона решить линейное уравнение - C++
Всем привет и хорошего настроения! Решаю вычмат. Методом Ньютона надо решить линейное уравненьице. Сам метод запроган. Хочу запрогать...

Решить нелинейное уравнение методом хорд и методом простой итерации - C++
Help, please, послезавтра сдавать лабу, а я не знаю как делать=( Нужно решить нелинейное уравнение методом хорд и методом простой...

Уравнение методом Ньютона - C++
Доброго времени суток, помогите пожалуйста, справиться с уравнением, которое нужно реализовать методом Ньютона. Есть уравнение, скрин...

Интерполяция методом Ньютона и Лагранжа - C++
Задано табличное представление функции: x y 3 4 7 10 11 22 15 26 19 23 Сравнить методы интерполяции Лагранжа и Ньютона...

Решение СНАУ методом Ньютона - C++
РЕбят, такое дело, есть у меня задание, решение СНАУ методом Ньютона. Даже не знаю с чего начать, может поможете хотяб пример...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BumerangSP
18.10.2012, 16:24     Решить функцию методом Ньютона
  #16

Не по теме:

doctor_lecter, да, я все же хочу уточнить, что ТС имеет в виду.

иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
18.10.2012, 16:27  [ТС] #17
Цитата Сообщение от doctor_lecter Посмотреть сообщение
А у вас в исходной функции логарифм натуральный или десятичный?
В задании написано lnx я подразумеваю что это логарифм по основанию 10.
Производные верные. А то что x0=x это должно быть так а то как иначе бедет меняться x0 чтобы приближаться к корню уравнения.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.10.2012, 16:28 #18
1-ая производная: 0.2*x-ln(x)-1
2-ая: 0.2-1/x
Все так, осталось убрать log10 отовсюду)
doctor_lecter
280 / 153 / 8
Регистрация: 22.09.2012
Сообщений: 283
18.10.2012, 16:31 #19
Цитата Сообщение от иван_пропал Посмотреть сообщение
Производные верные. А то что x0=x это должно быть так а то как иначе бедет меняться x0 чтобы приближаться к корню уравнения.
Какие конкретно? И в любом случае саму функцию надо переписать.
0.2*x - log(x) - 1 - это если у вас ln
если lg - то производная будет такая: 0.2*x - log10(x) - 1/log(10)
А цикл правильно организовать так: сначала x0 = x; потом вычисление нового x
иван_пропал
36 / 0 / 1
Регистрация: 05.10.2012
Сообщений: 110
18.10.2012, 16:34  [ТС] #20
задание http://www.fayloobmennik.net/2286701
BumerangSP
4286 / 1408 / 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;
}
Здесь без второй производной.

Не по теме:

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

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

Не по теме:

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

Герц
524 / 341 / 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]).
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
18.10.2012, 22:04 #25
Герц, в общем-то да, похоже...Но дело в том, что я нашел код, который делал по блок-схеме из той книжки, и там почему-то она была, только не использовалась. Может, случайно написал
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.10.2012, 22:04
Привет! Вот еще темы с ответами:

Функция Арксинус методом Ньютона - C++
Калькулятор имеет функции синус, косинус, необходимо написать арксинус методом Ньютона. Ниже код. Ошибка при вычислении отрицательных...

'разобраться' с уравнением методом Ньютона - C++
Подскажите пожалуйста план действий, как это делать. Ибо в заданиях подобного рода я бессилен

Решение СНАУ методом Ньютона - C++
Нужно написать программу для решения систем нелинейных алгебраических уравнений методом Ньютона. Наибольшая сложность заключается в том что...

Нахождение корней методом Ньютона - C++
Нужно написать программу вычисляющую корень полинома методом Ньютона. Подскажите, как можно описать функцию...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.10.2012, 22:04
Ответ Создать тему
Опции темы

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