Advertisement
Guest User

Untitled

a guest
May 21st, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cmath>
  4. #include <cstdlib>
  5. using namespace std;
  6. const double EPS0 = 0.000000001;
  7. const double EPSX = 0.000000001;
  8.  
  9. int poprawnosc(int &a)
  10. {
  11. cin >> a;
  12. while (cin.fail())
  13. {
  14. cin.clear();
  15. cin.ignore(1000, '\n');
  16. cout << "Podaj liczbe: ";
  17. cin >> a;
  18. }
  19. return a;
  20. }
  21. double poprawnosc(double &a)
  22. {
  23. cin >> a;
  24. while (cin.fail())
  25. {
  26. cin.clear();
  27. cin.ignore(1000, '\n');
  28. cout << "Podaj liczbe: ";
  29. cin >> a;
  30. }
  31. return a;
  32. }
  33. double f(double x,double *tab, int rozmiar, double wyraz)
  34. {
  35. double wolny=wyraz;
  36. double wynik=0;
  37. double potega;
  38. double *podstawianie = new double[rozmiar];
  39. double *po_podst=new double[rozmiar];
  40. for (int i = 0; i < rozmiar; i++)
  41. {
  42. podstawianie[i] = x;
  43. }
  44. for (int i = 0; i < rozmiar; i++)
  45. {
  46. potega = tab[i];
  47. po_podst[i]=pow(podstawianie[i], potega);
  48. cout<<"Podstawienie "<<i<<".\t"<<podstawianie[i]<<endl;
  49. cout<<"Potega "<<i<<".\t"<<pow(podstawianie[i], potega)<<endl;
  50. }
  51. for (int i = 0; i< rozmiar; i++)
  52. {
  53. wynik += po_podst[i];
  54. cout<<"\n\t\t"<<wynik+po_podst[i];
  55. }
  56. delete[]podstawianie;
  57. delete[] po_podst;
  58. return wynik + wolny;
  59. }
  60.  
  61. int main()
  62. {
  63. double a, b, x0, fa, fb, f0;
  64. int potega, ilosc_niewiadomych, wyraz_wolny;
  65. cout << "\n\t\tMetoda bisekcji:\n";
  66. cout << "Podaj jak ma wygladac twoja funkcja: \nPodaj ilosc niewiadomych x:";
  67. poprawnosc(ilosc_niewiadomych);
  68. double *tablica_pot = new double[ilosc_niewiadomych];
  69. for (int i = 0; i < ilosc_niewiadomych; i++)
  70. {
  71. cout << "Podaj potege " << i + 1 << ". wyrazu: ";
  72. poprawnosc(potega);
  73. tablica_pot[i] = potega;
  74. }
  75. cout << "\n\n\tPodaj wyraz wolny: ";
  76. poprawnosc(wyraz_wolny);
  77. cout << "\n\t\tTwoja funkcja wyglada tak: ";
  78. for (int i = 0; i < ilosc_niewiadomych; i++)
  79. {
  80. if (i == ilosc_niewiadomych - 1)
  81. {
  82. cout << "(x)^" << tablica_pot[i];
  83. break;
  84. }
  85. cout << "(x)^" << tablica_pot[i]<<"+";
  86. }
  87. if (wyraz_wolny >= 0)
  88. {
  89. cout <<"+"<< wyraz_wolny;
  90. }
  91. else
  92. {
  93. cout << wyraz_wolny;
  94. }
  95. cout << "\n\t\tPodaj zakres poszukiwan pierwiastka:\n\n";
  96. cout << "a = ";
  97. poprawnosc(a);
  98. cout << "b = ";
  99. poprawnosc(b);
  100. cout << "\n------------------------------------------------\n\n"
  101. "WYNIK:\n\n";
  102. fa = f(a,tablica_pot,ilosc_niewiadomych, wyraz_wolny);
  103. fb = f(b, tablica_pot, ilosc_niewiadomych, wyraz_wolny);
  104. cout << endl<<endl<<fa<<" " <<fb<<" "<<fa * fb;
  105. if (fa * fb > 0)
  106. cout << "\n\t\tFunkcja nie spelnia zalozen\n";
  107.  
  108. else
  109. {
  110. cout << "\n\n\tObliczenia w tej metodzie: ";
  111. while (fabs(a - b) > EPSX)
  112. {
  113. x0 = (a + b) / 2;
  114. f0 = f(x0,tablica_pot, ilosc_niewiadomych, wyraz_wolny);
  115. cout << "\n\t\t" << x0;
  116. if (fabs(f0) < EPS0)
  117. break;
  118. if (fa * f0 < 0)
  119. {
  120. b = x0;
  121. }
  122. else
  123. {
  124. a = x0;
  125. fa = f0;
  126. }
  127. }
  128. cout << "\n\t\tKoncowy przedzial: ";
  129. cout << "[" << a << ";" << b << "]";
  130. cout << "\n\n\n\t\tx0 = " << x0 << endl;
  131. }
  132. delete[] tablica_pot;
  133. return 0;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement