#include #include using namespace std; double g(double x) { // f(x) = x*x return 1.-x * x ; } double bisekcija(double a, double b,double epsilon) { // funkcija naj bo kar f(x)=x^2 double dx,f,fmid,xmid,rtb; int JMAX=100; f=g(a); fmid=g(b); if (f * fmid >= 0. ) { cout << "Ni vmesne nicle!" << endl ; return -1000; } rtb= f < 0. ? (dx=b-a,a) : (dx=a-b,b); //cout << "rtb=" << rtb << " dx=" << dx << endl; for (int j=1;j<=JMAX;j++) { fmid=g(xmid=rtb+(dx*=0.5)); if (fmid <= 0.) rtb = xmid; if (abs(dx) < epsilon || fmid == 0. ) { cout << "korakov=" << j << endl; return rtb; } } cout << "Ni vmesne nicle!" << endl ; return -1000; } int main() { double epsilon=1e-3; double a=0.1; double b=1000.2; double val= bisekcija(a,b,epsilon); cout << "bisekcija=" << val << endl; printf("natancno = %30.20f\n",val); }