fork(2) download
  1. #include<iostream>
  2. #include<cmath>
  3. #include<cstdlib>
  4. #include<iomanip>
  5. using namespace std;
  6. long double bisek(long double(*funkcja)(long double),long double a,long double b,long double epsilon)
  7. {
  8. long double ya, yb, x, y;
  9. ya=funkcja(a);//licznie wartosci f-cji w koncach przedzialu
  10. yb=funkcja(b);
  11. if(ya*yb>=0)//sprawdzenie czy wewnątrz przedziału smienia się znak f-cji, czy jest miejsce zerowe w tym przedziale
  12. {
  13. return NAN;//jezli nie ma
  14. }
  15. do //jesli jest
  16. {
  17. x=(a+b)/2;//zmniejsz przedał
  18. y=funkcja(x);//policz wartosc w nowym koncu
  19. if(y==0)
  20. {
  21. return x;
  22. }
  23. if(ya*y<0)//sprawdz znak f-cji w nowym przedziale
  24. {
  25. b=x;
  26. yb=y;
  27. }
  28. else
  29. {
  30. a=x;
  31. ya=y;
  32. }
  33. }
  34. while(fabs(b-a)>epsilon);//wykonuj dopoki przedzial jest wiekszy od epsilon
  35. return x;
  36. }
  37.  
  38. long double funkcja1(long double x)//f-cja którą muszę policzyć
  39. {
  40. return ((0.518*223.0)/(x-0.0018707))-(12.612620/(x*(x+0.0012707)*sqrt(223.0)))-65000.0;
  41. }
  42. double funkcja2(double x)//f-cja do sprawdzania dzialania programu
  43. {
  44. return (x-2.13)*(x-2.13)*(x-2.13);
  45. }
  46.  
  47. int main()
  48. {
  49. cout.precision(10);
  50. int nr;
  51. long double (*funkcja)(long double), a, b, epsilon=1e-16,x;
  52. cout<<"podaj a:";
  53. cin>>a;
  54. cout<<"\npodaj b:";
  55. cin>>b;
  56. cout<<"\nfunkcje do wyboru:\n1: f-cja\n2: f-cja sprawdzajaca:\n"<<endl;
  57. cout<<"\nPodaj numer funkcji:";
  58. cin>>nr;
  59. switch(nr)
  60. {
  61. case 0:
  62. cout<<"to nie jest nr funkcji!";
  63. break;
  64. case 1:
  65. funkcja = funkcja1;
  66. break;
  67. /*case 2:
  68.   funkcja = funkcja2;
  69.   break;*/
  70. default:
  71. cout<<"to nie jest nr funkcji!";
  72. break;
  73. }
  74. x=bisek(funkcja, a, b, epsilon);
  75.  
  76. cout<<"miejsce zerowe funkcji to:"<<x<<endl;
  77. //system("PAUSE");
  78. return 0;
  79. }
Success #stdin #stdout 0s 3476KB
stdin
0.002 0.003 1
stdout
podaj a:
podaj b:
funkcje do wyboru:
1: f-cja
2: f-cja sprawdzajaca:


Podaj numer funkcji:miejsce zerowe funkcji to:0.002664269287