Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.81 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #define EPS 1e-5
  5.  
  6. //Să se scrie o funcţie care determină rădăcina unei funcţii f(x), în intervalul
  7. //[a,b], ştiind că admite o singură rădăcină în acest interval. Funcţia f va fi transmisă ca
  8. //parametru efectiv.
  9.  
  10. double f(double x)
  11. {
  12.     return sin(x);
  13. }
  14.  
  15. double rad(double a, double b, double (*p)(double))
  16. {
  17.     //f(a)*f(b) < 0, a < b
  18.     double x, fx;
  19.     do {
  20.         x = (b + a) / 2;
  21.         fx = (*p)(x);
  22.         if (fx * (*p)(a) < 0)
  23.             b = x;
  24.         else
  25.             a = x;
  26.     } while(b-a >= EPS && fabs(fx) >= EPS);
  27.     return x;
  28. }
  29.  
  30. int main()
  31. {
  32.     double a, b;
  33.     scanf("%lf", &a);
  34.     scanf("%lf", &b);
  35.     double x = rad(a, b, f);
  36.     printf("Rad. din [%2f,%2f]: %f\n", a, b, x);
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement