Advertisement
rootUser

Curve fitting - 2nd degree polynomial

Jul 24th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 7.04 KB | None | 0 0
  1. package regression2;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Scanner;
  6.  
  7. public class Functions
  8. {
  9.     public void printMatrix(double[][] matrix,int n)
  10.     {
  11.         for(int i=1;i<=n;i++)
  12.         {
  13.             for(int j=1;j<=n+1;j++)
  14.             {
  15.                 System.out.print(matrix[i][j]+"\t");
  16.             }
  17.             System.out.println("");
  18.         }
  19.     }
  20.     public void printList(List<Double> list)
  21.     {
  22.         int listSize = list.size();
  23.  
  24.         for(int i=0;i<listSize;i++)
  25.         {
  26.             System.out.println("Item "+(i+1)+" : "+list.get(i));
  27.         }
  28.     }
  29.     public void printList(String listName,List<Double> list)
  30.     {
  31.         int listSize = list.size();
  32.         System.out.println("In "+listName+" : ");
  33.         for(int i=0;i<listSize;i++)
  34.         {
  35.             System.out.println("Item "+(i+1)+" : "+list.get(i));
  36.         }
  37.     }
  38.     public double sumOfList(List<Double> list)
  39.     {
  40.         int listSize = list.size();
  41.         double sum = 0;
  42.         for(int i=0;i<listSize;i++)
  43.         {
  44.             sum=sum+list.get(i);
  45.         }
  46.         return sum;
  47.     }
  48.     public List<Double> makeSumOfSquareList(List<Double> list)
  49.     {
  50.         List<Double> newList = new ArrayList();
  51.         int listSize = list.size();
  52.         for(int i=0;i<listSize;i++)
  53.         {
  54.             double x = list.get(i);
  55.             double newX = Math.pow(x,2);
  56.             newList.add(newX);
  57.         }
  58.         return newList;
  59.     }
  60.     public List<Double> makeSumOfCubeList(List<Double> list)
  61.     {
  62.         List<Double> newList = new ArrayList();
  63.         int listSize = list.size();
  64.         for(int i=0;i<listSize;i++)
  65.         {
  66.             double x = list.get(i);
  67.             double newX = Math.pow(x,3);
  68.             newList.add(newX);
  69.         }
  70.         return newList;
  71.     }
  72.     public List<Double> makeSumOfPower4List(List<Double> list)
  73.     {
  74.         List<Double> newList = new ArrayList();
  75.         int listSize = list.size();
  76.         for(int i=0;i<listSize;i++)
  77.         {
  78.             double x = list.get(i);
  79.             double newX = Math.pow(x,4);
  80.             newList.add(newX);
  81.         }
  82.         return newList;
  83.     }
  84.     public List<Double> makeSumOfYXList(List<Double> listX,List<Double> listY)
  85.     {
  86.         List<Double> newList = new ArrayList();
  87.         int listSize = listX.size();
  88.         for(int i=0;i<listSize;i++)
  89.         {
  90.             double x = listX.get(i);
  91.             double y = listY.get(i);
  92.             double w = y*x;
  93.             newList.add(w);
  94.         }
  95.         return newList;
  96.     }
  97.     public List<Double> makeSumOfYXSquareList(List<Double> listX,List<Double> listY)
  98.     {
  99.         List<Double> newList = new ArrayList();
  100.         int listSize = listX.size();
  101.         for(int i=0;i<listSize;i++)
  102.         {
  103.             double x = Math.pow(listX.get(i),2);
  104.             double y = listY.get(i);
  105.             double w = y*x;
  106.             newList.add(w);
  107.         }
  108.         return newList;
  109.     }
  110.     public double[][] makeMatrix(List<Double> listX,List<Double> listY,int n)
  111.     {
  112.         double[][] x = new double[n+1][n+2];
  113.        
  114.         x[1][1]=n;
  115.         x[1][2]=sumOfList(listX);
  116.         x[1][3]=sumOfList(makeSumOfSquareList(listX));
  117.         x[1][4]=sumOfList(listY);
  118.         x[2][1]=sumOfList(listX);
  119.         x[2][2]=sumOfList(makeSumOfSquareList(listX));
  120.         x[2][3]=sumOfList(makeSumOfCubeList(listX));
  121.         x[2][4]=sumOfList(makeSumOfYXList(listX,listY));
  122.         x[3][1]=sumOfList(makeSumOfSquareList(listX));
  123.         x[3][2]=sumOfList(makeSumOfCubeList(listX));
  124.         x[3][3]=sumOfList(makeSumOfPower4List(listX));
  125.         x[3][4]=sumOfList(makeSumOfYXSquareList(listX,listY));
  126.        
  127.         for(int i=1;i<=3;i++)
  128.         {
  129.             for(int j=1;j<=4;j++)
  130.             {
  131.                 System.out.print(x[i][j]+"\t");
  132.             }
  133.             System.out.println("");
  134.         }
  135.        
  136.         return x;
  137.     }
  138.     public List<Double> solutionGJM(double[][] matrix,int n)
  139.     {
  140.         List<Double> list = new ArrayList();
  141.         double Matrix[][] = matrix;
  142.         double pivotSafe=0,pivotOwn=0;
  143.         for(int k=1;k<=n;k++)
  144.         {
  145.  
  146.             for(int i=1;i<=n;i++)
  147.             {
  148.                 if(i!=k)
  149.                 {
  150.                     pivotSafe = Matrix[k][k];
  151.                     pivotOwn = Matrix[i][k];
  152.                     for(int j=1;j<=n+1;j++)
  153.                     {
  154.                         Matrix[i][j]=(pivotSafe*Matrix[i][j])-(pivotOwn*Matrix[k][j]);
  155.                     }
  156.                 }
  157.             }
  158.         }
  159.         //printMatrix(Matrix,n);
  160.             for(int i=1;i<=n;i++)
  161.             {
  162.                 double pivot = Matrix[i][i];
  163.                     for(int j=1;j<=n+1;j++)
  164.                     {
  165.                         Matrix[i][j]=Matrix[i][j]/pivot;
  166.                     }
  167.             }
  168.            
  169.           //  printMatrix(Matrix,n);
  170.           for(int i = 1;i<=n;i++)
  171.           {
  172.               list.add(Matrix[i][n+1]);
  173.           }
  174.         return list;
  175.     }
  176.     /*
  177.     public double[][] elimination1(double[][] matrix,int n)
  178.     {
  179.         double Matrix[][] = matrix;
  180.         double pivotSafe=0,pivotOwn=0;
  181.         for(int k=1;k<=n;k++)
  182.         {
  183.  
  184.             for(int i=1;i<=n;i++)
  185.             {
  186.                 if(i!=k)
  187.                 {
  188.                     pivotSafe = Matrix[k][k];
  189.                     pivotOwn = Matrix[i][k];
  190.                     for(int j=1;j<=n+1;j++)
  191.                     {
  192.                         Matrix[i][j]=(pivotSafe*Matrix[i][j])-(pivotOwn*Matrix[k][j]);
  193.                     }
  194.                 }
  195.             }
  196.         }
  197.         //printMatrix(Matrix,n);
  198.             for(int i=1;i<=n;i++)
  199.             {
  200.                 double pivot = Matrix[i][i];
  201.                     for(int j=1;j<=n+1;j++)
  202.                     {
  203.                         Matrix[i][j]=Matrix[i][j]/pivot;
  204.                     }
  205.             }
  206.        
  207.         return Matrix;
  208.     }
  209. */
  210. }
  211. public class Main
  212. {
  213.     public static List<Double> listX = new ArrayList();
  214.     public static List<Double> listY = new ArrayList();
  215.     public static void inputData2D(int totalDataSize)
  216.     {
  217.        Scanner scanner = new Scanner(System.in);
  218.        for(int i=0;i<totalDataSize;i++)
  219.        {
  220.            System.out.print("Enter x"+(i+1)+" : ");
  221.            double x = scanner.nextDouble();
  222.            listX.add(x);
  223.            System.out.print("Enter y"+(i+1)+" : ");
  224.            double y = scanner.nextDouble();
  225.            listY.add(y);
  226.        }  
  227.        
  228.     }
  229.     public static void main(String[] args)
  230.     {
  231.        Functions functions = new Functions();
  232.        Scanner scanner = new Scanner(System.in);
  233.        System.out.print("How many (x,y) inputs : ");
  234.        int totalData = scanner.nextInt();
  235.        inputData2D(totalData);
  236.        double[][] matrix = functions.makeMatrix(listX,listY,totalData);
  237.        List<Double> listA = functions.solutionGJM(matrix,3);
  238.        System.out.println("The straight line is : y="+listA.get(0)+"+"+listA.get(1)+"x"+"+"+listA.get(2)+"x2");
  239.     }
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement