fork download
  1. import java.io.BufferedReader;
  2. import java.io.InputStream;
  3. import java.io.InputStreamReader;
  4. import java.io.Reader;
  5. import java.math.BigDecimal;
  6. import java.text.DecimalFormat;
  7.  
  8. public class Main {
  9.  
  10. public double x, epsilon, d, x1, xR;
  11. public int iteration = 0;
  12.  
  13. public static void main(String[] args) {
  14. Main Zadacha3 = new Main();
  15. Zadacha3.vvod();
  16. Zadacha3.Proverka();
  17. Zadacha3.start();
  18. }
  19.  
  20. public void vvod() {
  21. try {
  22. InputStream inputStream = System.in;
  23. Reader inputStreamReader = new InputStreamReader(inputStream);
  24. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  25.  
  26. System.out.println("Введите значение начальное значение х");
  27. x = Double.parseDouble(bufferedReader.readLine());
  28. System.out.println("Введите значение точности е");
  29. epsilon = Double.parseDouble(bufferedReader.readLine());
  30. xR = x;
  31. } catch (Exception e) {
  32. System.out.println("-----Ошибка ввода");
  33. vvod();
  34. }
  35. }
  36.  
  37. public void start() {
  38. try {
  39. double x1 = 0;
  40. BigDecimal f1 = new BigDecimal(epsilon);
  41. while (true) {
  42. x1 = f(x);
  43. d = Math.abs(x1 - x);
  44. iteration += 1;
  45. BigDecimal f2 = new BigDecimal(d);
  46. if (f2.compareTo(f1) < 1) {
  47. break;
  48. } else {
  49. x = x1;
  50. }
  51. }
  52. print(x1, d, iteration);
  53. } catch (Exception e) {
  54. System.out.println("С этой начальной точки корней найти не удалось");
  55. System.exit(0);
  56. }
  57. }
  58.  
  59. static double f(double x) {
  60. return (x+(12*x-Math.pow(x,3)+5)/36);
  61. //корни -3.23 -0.42 3.65
  62. }
  63.  
  64. public void print(double a, double b, int c) {
  65. DecimalFormat dF = new DecimalFormat("#.############");
  66. System.out.println("\n" + "х = " + dF.format(a)
  67. + "\nпогрешность приближения = " + dF.format(b)
  68. + "\nИтерация " + iteration + "");
  69. }
  70.  
  71. public void Proverka() {
  72. if (x <= 0) {
  73. System.out.println("Условие х <= 0 нарушено");
  74. System.exit(0);
  75. }
  76.  
  77. }
  78. }
Success #stdin #stdout 0.2s 56320KB
stdin
2
0.000001
stdout
Введите значение начальное значение х
Введите значение точности е

х = 3.656166309082
погрешность приближения = 0.00000027356
Итерация 13