bogdanNiculeasa

aproximare

Mar 8th, 2022
1,016
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5. void afisareEroare(float stanga, float  dreapta);
  6.  
  7. int main() {
  8.     float stanga, dreapta;
  9.     cout << "Introduceti limita interval stanga: ";
  10.     cin >> stanga;
  11.     cout << "Introduceti limita interval dreapta: ";
  12.     cin >> dreapta;
  13.  
  14.     afisareEroare(stanga, dreapta);
  15.  
  16.     return 0;
  17. }
  18.  
  19. void afisareEroare(float stanga, float dreapta) {
  20.    // cauta un punct in stanga unde f(left) < 0
  21.    // cauta un punct in dreapta unde f(right) > 0
  22.    // gaseste mijlocul intervalului [left, right]
  23.    // calculeaza  value = f(middle)
  24.    // if value ii apropiata de 0 => felicitari done!
  25.    // altfel daca valoare < 0 atunci mijlocul devine stanga
  26.    // altfel daca valoarea ii > 0 atunci mijloc devine dreapta
  27.  
  28.    while(stanga <= dreapta) {
  29.        float mijloc  = stanga + (dreapta - stanga) / 2.0;
  30.        float valoare = pow(mijloc, 3) + (mijloc * 3) + 1;
  31.        float marjaEroare = 0.0000001;
  32.        cout << "stanga: " << stanga <<"; dreapta: " << dreapta << "; valoare = " << valoare <<" si mijloc = " << mijloc << endl;
  33.  
  34.        // Solutia este mijlocul
  35.        if ((valoare < marjaEroare) && (valoare > 0)) {
  36.            cout << "\n\nSolutie:" << mijloc << endl;
  37.            break;
  38.        } else if (valoare < 0) {
  39.            stanga= mijloc;
  40.        } else {
  41.            dreapta = mijloc;
  42.        }
  43.    }
  44.  
  45.  
  46. }
  47.  
Advertisement
Add Comment
Please, Sign In to add comment