Advertisement
rootUser

Curve fitting - straight line

Jul 24th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.36 KB | None | 0 0
  1. package regression;
  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 printList(List<Double> list)
  10.     {
  11.         int listSize = list.size();
  12.  
  13.         for(int i=0;i<listSize;i++)
  14.         {
  15.             System.out.println("Item "+(i+1)+" : "+list.get(i));
  16.         }
  17.     }
  18.     public void printList(String listName,List<Double> list)
  19.     {
  20.         int listSize = list.size();
  21.         System.out.println("In "+listName+" : ");
  22.         for(int i=0;i<listSize;i++)
  23.         {
  24.             System.out.println("Item "+(i+1)+" : "+list.get(i));
  25.         }
  26.     }
  27.     public double sumOfList(List<Double> list)
  28.     {
  29.         int listSize = list.size();
  30.         double sum = 0;
  31.         for(int i=0;i<listSize;i++)
  32.         {
  33.             sum=sum+list.get(i);
  34.         }
  35.         return sum;
  36.     }
  37.     public List<Double> makeSumOfSquareList(List<Double> list)
  38.     {
  39.         List<Double> newList = new ArrayList();
  40.         int listSize = list.size();
  41.         for(int i=0;i<listSize;i++)
  42.         {
  43.             double x = list.get(i);
  44.             double newX = Math.pow(x,2);
  45.             newList.add(newX);
  46.         }
  47.         return newList;
  48.     }
  49.         public double calculateB(List<Double> xList,List<Double> yList,int n)
  50.     {
  51.         double b = 0;
  52.         double sumXY=0,sumXsumY=0,sumXsquare=0,squareOfsumX=0;
  53.         List<Double> customList = new ArrayList();
  54.         for(int i=0;i<n;i++)
  55.         {
  56.             double u = xList.get(i);
  57.             double v = yList.get(i);
  58.             double w = u*v;
  59.             customList.add(w);
  60.         }
  61.         sumXY= sumOfList(customList);
  62.         double x1 = sumOfList(xList);
  63.         double x2 = sumOfList(yList);
  64.         sumXsumY=x1*x2;
  65.         sumXsquare=sumOfList(makeSumOfSquareList(xList));
  66.         squareOfsumX=Math.pow(sumOfList(xList),2);
  67.        
  68.         b = ( (n*sumXY) - sumXsumY ) / ( (n*sumXsquare ) - (squareOfsumX) ) ;
  69.        
  70.         return b;
  71.     }
  72.     public double calculateA(List<Double> xList,List<Double> yList,int n)
  73.     {
  74.         double A = 0;
  75.        
  76.         double sumY = sumOfList(yList);
  77.         double sumX = sumOfList(xList);
  78.         double B = calculateB(xList,yList,n);
  79.        
  80.         A= ( sumY/n ) - ( ( B*sumX ) / n );
  81.        
  82.         return A;
  83.     }
  84. }
  85.  
  86. public class Main
  87. {
  88.     public static List<Double> listX = new ArrayList();
  89.     public static List<Double> listY = new ArrayList();
  90.     public static void inputData2D(int totalDataSize)
  91.     {
  92.        Scanner scanner = new Scanner(System.in);
  93.        for(int i=0;i<totalDataSize;i++)
  94.        {
  95.            System.out.print("Enter x"+(i+1)+" : ");
  96.            double x = scanner.nextDouble();
  97.            listX.add(x);
  98.            System.out.print("Enter y"+(i+1)+" : ");
  99.            double y = scanner.nextDouble();
  100.            listY.add(y);
  101.        }  
  102.        
  103.     }
  104.     public static void main(String[] args)
  105.     {
  106.        Functions functions = new Functions();
  107.        Scanner scanner = new Scanner(System.in);
  108.        System.out.print("How many (x,y) inputs : ");
  109.        int totalData = scanner.nextInt();
  110.        inputData2D(totalData);
  111.        double b = functions.calculateB(listX, listY, totalData);
  112.        double a = functions.calculateA(listX, listY, totalData);
  113.        System.out.println("The straight line is : y="+a+"+"+b+"x");
  114.     }
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement