Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2013, 15:07   #1
arktest
Новичок
Джуниор
 
Регистрация: 12.04.2012
Сообщений: 1
По умолчанию Решение уравнения методом Ньютона. Локализация корня

Собственно, программа имеется, все довольно таки просто, но необходимо локализовать корень и найти именно положительный корень уравнения. Я так понял, нужно найти начальное приближение Xn и Xm. Приближение необходимо искать методом деления пополам. Как мне объяснили, необходимо выставить пределы для деления пополам от 0 до 100 и потом, когда метод будет сходится уже что-то принимать за Xn и Xm. Я в этом не силен. Необходима помощь, желательно программно.

Код:
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <iomanip>
 
using namespace std;
double e = 0.001; 
 
 
double funct(double x)
{
    double f = x*x+4*sin(5*x)+exp(x+1)-3.2;
    return f;
}
 
 
double diff(double x)
{
    double f = 2*x+exp(x+1)+20*cos(5*x);
    return f;
}
 
 
int task_2()
{
    int n = 0;
    double xm = 0.95;
    double xn = 0;
    double xnprev;
    double acc = fabs(xn - xm);
    //int a=0,b=2;
    /*
    double c;
    while ((xn-xm)>=e)
          {
               c=(xn+xm)/2;
               if (funct(xm)*funct(c)<0)
               xn=c;
               else xm=c;                         
           }*/
    cout << "Решение методом Ньютона:" << endl << endl;
    while (acc > e)
    {
        n++;
        xnprev=xn;
        xn = xm - funct(xm)/diff(xm);
        if(xn<0){
            //xn=xnprev;
            //break;
        }
        acc = fabs(xn - xm);
        cout << setw(2) << n << " " << xm << " " << xn << " " << acc << endl;
        xm = xn;
    }
    cout << endl << "Корень уравнения x = " << xn << endl;
    return 0;
}
 
int main()
{
    
          
    setlocale(LC_ALL,"Rus");
    int ch;
   
    cout.precision(4);
    cout.setf(ios::fixed);
    
    task_2();
        
    system("PAUSE");
    return EXIT_SUCCESS;
}


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.12.2013 в 22:08.
arktest вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение нелинейного уравнения методом Ньютона(касательных) actrise Общие вопросы C/C++ 2 23.09.2013 01:08
Решение уравнения методом Ньютона Pascal 2Dletti Помощь студентам 1 22.01.2013 22:44
решение уравнения методом хорд и методом Ньютона Маргоша)) Общие вопросы Delphi 1 21.04.2010 20:40
Решение уравнения F(x)=0 методом Ньютона BGR71 Помощь студентам 2 13.04.2010 15:26
Решение нелинейного уравнения методом Ньютона Tina Общие вопросы C/C++ 2 04.06.2008 21:48