Advertisement
Guest User

Untitled

a guest
Feb 25th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.66 KB | None | 0 0
  1. package MatMod;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.Scanner;
  7.  
  8. public class LenaNewton {
  9. public static void main(String[] args) throws IOException {
  10. while (true) {
  11. double a;
  12. double b;
  13. double exp;
  14. int i = 0;
  15. System.out.println("Интервал: ");
  16. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  17. String s = reader.readLine();
  18. a = Double.parseDouble(s);
  19. s = reader.readLine();
  20. b = Double.parseDouble(s);
  21. System.out.println("Exp enter");
  22. s = reader.readLine();
  23. exp = Double.parseDouble(s);
  24. if (checkSign(fun(a), fun(b))) {
  25. System.out.println("Same");
  26. return;
  27. }
  28. else {
  29. while (true) {
  30. double checkF = fun(a);
  31. double checkP = proizv2(a);
  32. if (checkSign(checkF, checkP)) { // a = начальная точка
  33. double xn = pribl(a,fun(a),proizv(a));
  34. System.out.println(xn);
  35. a = a - xn;
  36. if (Math.abs(a) < exp) {
  37. break;
  38. }
  39. a = xn;
  40. i++;
  41. }
  42. else { // b = начальная точка
  43. double xn = pribl(b,fun(b),proizv(b));
  44. System.out.println(xn);
  45. b = b - xn;
  46. if (Math.abs(b) < exp) {
  47. break;
  48. }
  49. b = xn;
  50. i++;
  51. }
  52. }
  53. }
  54. System.out.println(i);
  55. break;
  56. }
  57. }
  58.  
  59. public static double pribl(double a, double b, double c) {
  60. return a - b/c; // где a = xk, b = f(x), c = f`(x)
  61. }
  62.  
  63. public static double proizv2(double x) {
  64. return -Math.cos(x); // вторая производная функции
  65. }
  66.  
  67. public static double fun(double x) {
  68. return (2 * x + Math.cos(x) - 0.5); // Сама функция
  69. }
  70.  
  71. public static double proizv(double x) {
  72. return 2 - Math.sin(x); // первая производная
  73. }
  74.  
  75. public static boolean checkSign(double x, double y) {
  76. return (x > 0 && y > 0) || (x < 0 && y < 0) || (x == 0 && y == 0); // проверка знака
  77. }
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement