Метод Простых Итераций

Тема в разделе "C/C++/C#", создана пользователем Again, 17 мар 2012.

  1. Again

    Again Гость

    Такое задание: написать алгоритм численного решения нелинейных уравнений методом простых итераций и реализовать его на языке программирования.
    Сколько не читал и не искал инфу про данный метод, все никак не могу понять суть данного метода, отсюда и сложности в реализации на языке, в данном случае С/С++.
    Поясните, пож-ста, суть данного метода, ну если можно приведите пример решения конкретной задачи.
    Спасибо.
     
  2. Again

    Again Гость

    Что у меня есть на данный момент:
    Код (C++):
    #include "stdafx.h"
    #include <math.h>
    #include <iostream>
    #include <conio.h>
    using namespace std;
    const double eps = 0.001;
    double f(double x){
    return (x-1)*(x+2)*(x-4);
    }
    double fi(double x){
    return f(x)-x;
    }
    void NumberOfRoots(double min, double max)
    {   int k=0, n;
    cout<<"Enter the number of intervals ";
    cin>>n;
    double i = min;
    double del = (max - min)/n;
    do {
    if (f(i) * f(i+del) < 0)k++;
    i+=del;
    }
    while(i <= max);
    cout<<"Number of roots is "<<k<<endl;
    }
    int main() {
    NumberOfRoots(-3,5);   
    double  x0, x, xNext;
    int  nIter;
    cout<<"x0 = ";  cin>>x0;    cout<<"\n";
    x = x0;
    xNext = fi(x);
    nIter = 1;
    while ((fabs(xNext - x) > eps)&&(xNext == 0)) {
    x = xNext;
    xNext = fi(x);
    ++nIter;

    printf( "%.5g %.5g %d\n", x, xNext, nIter );
    }
    printf( "The root %.5g has been reached to within %.5g after %d iterations.\n",
    xNext, eps, nIter );
    getch();
    return 0;
    }
    Подскажите, пож-ста, как довести до ума данный код.
     
Загрузка...

Поделиться этой страницей