fork download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Equation
  6. {
  7. public static void main (String[] args) throws java.lang.Exception
  8. {
  9. //Описание переменных для хранения входных данных.//
  10. Scanner in = new Scanner(System.in);
  11. double eps = in.nextDouble();
  12. double x = in.nextDouble();
  13. double difference, right = 0.0, tmp = 1.0;
  14. double left = (Math.pow(Math.E, x) + Math.pow(Math.E , -x)) / 2; //Расчет левой части равенства.
  15. int n = 0;
  16. if (eps != 0){ //Критерий, при котором программа может быть выполнена//
  17. do{ //Цикл программы (для подсчета правой части равенства).
  18. n ++;
  19. right += tmp ;
  20. tmp *= x * x / ((2 * n - 1) * 2 * n);
  21. difference = left - right; //Вычисление разности значения левой части и правой части//
  22. }
  23. while(Math.abs(difference) > eps); //Конечный критерий, при котором цикл останавливается//
  24. //Вывод окончательных результатов на экран//
  25. System.out.printf("Левая часть равна = " + left + "\nПравая часть равна = " + right + " \n");
  26. System.out.printf("После n=" + n + " исследуемое выражение отличается от левой части менее, чем на " + Math.abs(eps) + ", а именно на " + Math.abs(difference));
  27. }
  28. else{ //Вывод оповещения о неправильном вводе данных (при несоответствии начальному критерию).//
  29. if (Math.abs(eps) == 0)
  30. System.out.printf("Погрешность равна 0, тогда правая часть стремится к левой" + left + "(n=infinity)");
  31. }
  32. }
  33. }
Success #stdin #stdout 0.15s 321344KB
stdin
0.00005 3
stdout
Левая часть равна = 10.067661995777764
Правая часть равна = 10.067659876395926 
После n=8 исследуемое выражение отличается от левой части менее, чем на 5.0E-5, а именно на 2.119381838028289E-6