Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3.  
  4. public class Main {
  5.  
  6.     public static double f(double x1, double x2) {
  7.         return x1+(2*x2) + (Math.pow(x1, 2)) + (3*Math.pow(x2, 2));
  8.     }
  9.  
  10.     public static double[] fGrad(double x1, double x2) {
  11.         double grad[] = {1+2*x1, 2+6*x2};
  12.         return grad;
  13.     }
  14.  
  15.     public static double[] fGrad(double[] grad, double[] gradNew) {
  16.         double gr[] = {gradNew[0] + modulGrad(gradNew) / modulGrad(grad) * grad[0],
  17.                 gradNew[1] + modulGrad(gradNew) / modulGrad(grad) * grad[1]};
  18.         return gr;
  19.     }
  20.  
  21.     public static double[][] fGessian(double x1, double x2) {
  22.         double ges[][] = {{2, 0},
  23.                           {0, 6}};
  24.         return ges;
  25.     }
  26.    
  27.  
  28.     public static double dGessian(double[][] gessian) {
  29.         return gessian[0][0] * gessian[1][1] - (-gessian[0][1]) * (-gessian[1][0]);
  30.     }
  31.  
  32.     public static double[] mul(double[][] G, double[] grad) {
  33.         double[] direct = {G[0][0] * grad[0] + G[1][0] * grad[1], G[0][1] * grad[0] + G[1][1] * grad[1]};
  34.         return direct;
  35.     }
  36.  
  37.     public static double modulGrad(double[] grad) {
  38.         return Math.sqrt(Math.pow(grad[0], 2) + Math.pow(grad[1], 2));
  39.     }
  40.  
  41.     public static void main(String[] args) throws Exception {
  42.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  43.  
  44.         System.out.print("Enter x1:");
  45.         double x1 = Double.parseDouble(reader.readLine());
  46.  
  47.         System.out.println("Enter x2:");
  48.         double x2 = Double.parseDouble(reader.readLine());
  49.  
  50.         double h = 0;
  51.  
  52.         System.out.println("Enter ε:");
  53.         double ebc = Double.parseDouble(reader.readLine());
  54.         double[][] gessian = fGessian(x1, x2);
  55.         double[] grad = fGrad(x1, x2);
  56.         while (modulGrad(grad) > ebc) {
  57.             x1 = x1 - mul(gessian, grad)[0] / dGessian(gessian);
  58.             x2 = x2 - mul(gessian, grad)[1] / dGessian(gessian);
  59.             grad = fGrad(x1, x2);
  60.             gessian = fGessian(x1, x2);
  61.         }
  62.         System.out.println("x1= " + x1 + " x2= " + x2);
  63.     }
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement