Wielkimi krokami zbliża się zaliczenie a ja jestem kompletnie zielony z programowania. Potrzebuję napisać algorytm, który przy użyciu metody bisekcji odnajdzie pierwiastek równania:
sin(x)-x^3+5x^2+18x+3=0
Prosiłbym o jakieś instrukcję.
Wielkimi krokami zbliża się zaliczenie a ja jestem kompletnie zielony z programowania. Potrzebuję napisać algorytm, który przy użyciu metody bisekcji odnajdzie pierwiastek równania:
sin(x)-x^3+5x^2+18x+3=0
Prosiłbym o jakieś instrukcję.
Dzięki zasobom internetu udało mi się wymodzić coś takiego:
#include
#include
#include
using namespace std;
const double EPS0 = 0.0000000001; // dokładność porównania z zerem
const double EPSX = 0.0000000001; // dokładność wyznaczenia pierwiastka
double f(double x)
{
return sin(x) - x*x*x + 5*x*x + 18*x + 3;
}
int main(int argc, char* argv[])
{
double a,b,x0,fa,fb,f0;
cout.precision(8); // 8 cyfr po przecinku
cout.setf(ios::fixed); // format stałoprzecinkowy
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
"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;
}
system("pause");
return 0;
}
Byłbym wdzięczny za przeanalizowanie tego kodu i wytknięcie wszelkiego rodzaju błędów
Na stronie z której to zerżnąłeś jest dokładny opis algorytmu i jego działania, jak już skopiowałeś gotowy kod to byś chociaż przeczytał jak działa, a nie jeszcze chciał by ktoś Ci to tłumaczył. Jak napiszesz program sam to zrozumiesz działanie, gwarantuje Ci to.