Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.26 KB | None | 0 0
  1. static double metoda_stycznych(double XY, String xy, double epsilon) {
  2.         double a = -100, b = 100;    
  3.         double x, y;
  4.         int iter = 0;
  5.         ArrayList<Double> xn = new ArrayList<>();
  6.         xn.add(100.0);
  7.         ArrayList<Double> yn = new ArrayList<>();
  8.         yn.add(100.0);
  9.        
  10.        
  11.         if(xy == "x") {
  12.             y = XY;
  13.             x = 0;
  14.             if((pochodna_x(a, y) >= 0 && pochodna_x3(b, y) >= 0) || (pochodna_x(a, y) < 0 && pochodna_x(b, y) < 0)) {
  15.                 xn.add(a);
  16.             } else {
  17.                 xn.add(b);
  18.             }
  19.            
  20.             while(Math.abs(pochodna_x(xn.get(iter+1), y)) >= epsilon || Math.abs(xn.get(iter+1) - xn.get(iter)) >= epsilon) {
  21.                 xn.add(xn.get(iter) - (pochodna_x(xn.get(iter), y) / pochodna_x2(xn.get(iter), y)));
  22.                
  23.                 System.out.println("xn1 = " + xn.get(iter));
  24.                 iter++;
  25.             }
  26.         }
  27.        
  28.         if(xy == "y") {
  29.             x = XY;
  30.             y = 0;
  31.             if((pochodna_y(a, y) >= 0 && pochodna_y3(b, y) >= 0) || (pochodna_y(a, y) < 0 && pochodna_y3(b, y) < 0)) {
  32.                 yn.add(a);
  33.             } else {
  34.                 yn.add(b);
  35.             }
  36.            
  37.             while(Math.abs(pochodna_y(x, yn.get(iter + 1))) >= epsilon || Math.abs(yn.get(iter+1) - yn.get(iter)) >= epsilon) {
  38.                 yn.add(yn.get(iter) - (pochodna_y(x, yn.get(iter)) / pochodna_y2(x, yn.get(iter))));
  39.                 System.out.println("yn1 = " + yn.get(iter));
  40.                 iter++;
  41.             }
  42.         }
  43.         if(xy == "x") return xn.get(iter);
  44.         else return yn.get(iter);
  45.     }
  46.    
  47.     public static void main(String[] args) {
  48.         double x = 10, y = 10;
  49.         double EPSILON = 0.001;
  50.         double epsilon = 0.000001;        
  51.         int iter = 1;
  52.            
  53.         while(Math.abs(pochodna_xy(x,y)) > EPSILON) {
  54.            
  55.             System.out.println("x=" + x);
  56.             x = metoda_stycznych(y, "x", epsilon);
  57.            
  58.             System.out.println("x=" + x);
  59.             y = metoda_stycznych(x, "y", epsilon);
  60.            
  61.             System.out.println(x + " | " + y);
  62.            
  63.         }
  64.         System.out.println(x + " | " + y);
  65.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement