Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4. #include "methods.h"
  5.  
  6. double delta = 0.0000001;
  7.  
  8. extern double F(double x){
  9. double result = 2*x*x - pow(x,4) - 1 - log(x) ;
  10. result = x+20.0/23.0*result;
  11. return result;
  12. }
  13.  
  14. double ITER(double X0,double Eps,int &N)
  15. {
  16. if (Eps<=0.0) {puts("Неверное задание точности \n");exit (1);}
  17. double X1=Round(F(X0), delta);
  18. double X2=F(X1);
  19. N = 2;
  20. while( (X1 - X2)*(X1 - X2) > fabs((2*X1-X0-X2)*Eps) )
  21. {
  22. X0 = X1;
  23. X1 = X2;
  24. X2 = F(X1);
  25. N++;
  26. }
  27. return X2;
  28. }
  29.  
  30. double Round (double X,double Delta)
  31.  
  32. {
  33.  
  34. if (Delta<=1E-9) {puts("Неверное задание точности округления \n");exit(1);}
  35.  
  36. if (X>0.0) return (Delta*(long((X/Delta)+0.5)));
  37.  
  38. else return (Delta*(long((X/Delta)-0.5)));
  39.  
  40. }
  41.  
  42.  
  43. int main(){
  44. int N;
  45. double res;
  46. double eps = 0.1;
  47. for (int j = 0; j<7; j++){
  48. res = ITER(0.93, eps, N);
  49. printf("F(x) = 0 => x = %.7f\n", Round(res,eps));
  50. printf("N(EPS) = %u(%.7f)\n", N, eps);
  51. printf("D(x) = %.7f\n\n", Round(res,eps)-1.00000);
  52. eps /= 10;
  53. }
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement