pastebin

Paste Search Dynamic
obj
  1. #include <stdio.h>
  2. #include <math.h>
  3.  
  4. #define EPS 0.00001f
  5.  
  6. const double a = 1.f;
  7. const double b = 2.f;
  8.  
  9. typedef struct dot {
  10.   double x;
  11.   double a;
  12.   double b;
  13. } dot;
  14.  
  15. typedef double(*FN)(double);
  16. typedef double(*MFN)(FN, double*, double*);
  17. typedef double * pd;
  18.  
  19. double sign(double x) {
  20.   return x < 0 ? -1.f : 1.f;
  21. }
  22.  
  23. double dx(FN f, double x) {
  24.   return (f(x + EPS) - f(x)) / EPS;
  25. }
  26. double d2x(FN f, double x) {
  27.   return (dx(f, x + EPS) - dx(f, x)) / EPS;
  28. }
  29.  
  30. double abs(double x) {
  31.   return x * sign(x);
  32. }
  33.  
  34.  
  35. double function(double x){
  36.         x=x/2;
  37.         return tan(x) - 1/tan(x) + x*2;
  38. }
  39.  
  40. double iter(dot obj){
  41.         double a = obj.a;
  42.         double b = obj.b;
  43.         while(abs(a - b) > EPS){
  44.                 if(function(a)*function(a/2+b/2) > 0){
  45.                         a = (a + b) / 2;
  46.                 }else{
  47.                         if(function(b)*function(a/2+b/2) > 0){
  48.                                 b = (a + b) / 2;
  49.                         }
  50.                 }
  51.         }
  52.         return (a + b) / 2;
  53. }
  54.  
  55.  
  56. int main() {
  57.         dot obj;
  58.         obj.a = a;
  59.         obj.b = b;
  60.         obj.x = iter(obj);
  61.         printf("%.4lf\n", obj.x);
  62.         return 0;
  63. }
Parsed in 0.007 seconds