Miejsca zerowe funkcji - Metoda bisekcj

0

Witam, mam działający algorytm na obliczanie pierwiastka funkcji metodą bisekcj, ale chciałbym poprosić o pomoc. Wzót funkcji jest zapisany w kodzie w funkcji double f. Jak zrobić, aby wzór był wczytywany z klwiatury po uruchomieniu programu? Dodam, że wzór składa się zarówno z cyfr jak i litery(x), więc nie wystarczy wczytać do stringa i parsować inteegerem(przynajmniej tak mi się wydaję) Z góry dziękuję za pomoc.

#include <iostream>
#include <iomanip>
#include <cmath>
#include <cstdlib>

using namespace std;

const double EPS0 = 0.0000000001; 
const double EPSX = 0.0000000001;


double f(double x)
{
  return 3*x*x*x-28*x*x+66;
}

int main()
{

  double a,b,x0,fa,fb,f0;

  cout << setprecision(5) 
       << fixed;              

  cout << "Obliczanie pierwiastka funkcji - metoda bisekcji\n"          
          "Podaj zakres poszukiwan pierwiastka:\n\n";
  cout << "a = "; cin >> a;
  cout << "b = "; cin >> b;
  cout << "\n------------------------------------------------\n\n"
          "WYNIK:\n\n";
  fa = f(a); fb = f(b);
  if(fa * fb > 0)     cout << "Funkcja nie spelnia zalozen\n";
  else
  {
    while(fabs(a - b) > EPSX)
    {
      x0 = (a + b) / 2; f0 = f(x0);
      if(fabs(f0) < EPS0) break;
      if(fa * f0 < 0) b = x0;
      else
      {
        a = x0; fa = f0;
      }
    }
    cout << "x0 = " << setw(15) << x0 << endl;
  }
  cout << "\n------------------------------------------------\n\n";  
  system("pause");
  return 0;
} 
0

wydaje mi się, że najprościej tak:
http://octave.sourceforge.net/doxygen/html/

1

@krwq- przecież to jest jakieś zadanie szkolne, może do tego jeszcze sztuczną inteligencję zaprząc? :]

IMO najprościej szłoby to zrobić za pomocą http://en.wikipedia.org/wiki/Reverse_Polish_notation, rozszerzenie jej o obsługę symbolu x powinno być proste.

1 użytkowników online, w tym zalogowanych: 0, gości: 1