Jako, że to mój pierwszy post na tym forum, chciałbym się z wami serdecznie przywitać :)
Mam następujący problem. Muszę napisać program, który wykorzystując metodę iteracji prostej, rozwiąże dla mnie równanie
Niestety, informacji na temat samej metody iteracji prostej w polskiej sieci tyle, co kot napłakał (jedyne, co udało mi się znaleźć to: http://neo.dmcs.p.lodz.pl/mn3/wyklad.pdf , str 48/50)
Bazując na informacjach z tego dokumentu, próbowałem jakoś to napisać, z dosyć marnym skutkiem, poniżej prezentuje mój kod:
// Program ma za zadanie znaleźć miejsce zerowe funkcji x^3 + 3x^2 + 1 metoda iteracji prostych
//
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;
ofstream wyniki("wyniki.txt");
double x = -4.0, f_l = 0;
const double BLAD = 0.001;
double f(double argument_funkcji);
//********************************************
int _tmain(int argc, _TCHAR* argv[])
{
cout << "Program ma za zadanie znalezc miejsce zerowe funkcji x^3 + 3x^2 + 1 metoda iteracji prostych \n";
int i = 1;
while(fabs(x - f_l) > BLAD)
{
f_l = f(x);
cout << "Na poczatku f(x) = \t" << f_l <<" x = \t" << x << "\n";
if(f_l == 0 || fabs(f_l) < BLAD)
{
break;
}
else
{
x = f_l;
f_l = f(x);
}
cout << "Po " << i << " iteracji wartosci x =\t" << x << " f(x) = \t" << f_l << endl;
wyniki << x << ";" << f_l;
i++;
}
cout << "Dla x = \t" << x << " wartosc f(x) = \t" << f_l << endl;
return 0;
}
//********************************************
double f(double argument_funkcji)
{
double wynik = pow(argument_funkcji, 3.0) + 3*pow(argument_funkcji, 2.0) + 1;
return wynik;
}
Program się kompiluje, jednakże samego miejsca zerowego nie znajduje. Byłbym bardzo wdzięczny, gdyby ktoś, dysponujący jakimiś informacjami odnośnie tej metody, zasugerował mi jak to powinienem rozwiązać lub gdyby ktoś mógłby mnie skierować do strony zawierającej jakiś dokładniejszy opis samej metody.
Pozdrawiam i z góry dziękuje za pomoc