Advertisement
rootUser

Curve fitting - transedental equation

Jul 24th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 4.16 KB | None | 0 0
  1. package regression1;
  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 List<Double> makelnList(List<Double> list)
  50.     {
  51.         List<Double> newList = new ArrayList();
  52.         int listSize = list.size();
  53.         for(int i=0;i<listSize;i++)
  54.         {
  55.             double x = list.get(i);
  56.             double newX = Math.log(x);
  57.             newList.add(newX);
  58.         }
  59.         return newList;
  60.     }
  61.     public double calculateB(List<Double> xList,List<Double> yList,int n)
  62.     {
  63.         double b = 0;
  64.         double sumlnXlnY=0,sumlnXsumlnY=0,sumlnXsquare=0,squareOfsumlnX=0;
  65.         List<Double> customList = new ArrayList();
  66.         for(int i=0;i<n;i++)
  67.         {
  68.             double u = Math.log(xList.get(i));
  69.             double v = Math.log(yList.get(i));
  70.             double w = u*v;
  71.             customList.add(w);
  72.         }
  73.         sumlnXlnY= sumOfList(customList);
  74.         double x1 = sumOfList(makelnList(xList));
  75.         double x2 = sumOfList(makelnList(yList));
  76.         sumlnXsumlnY=x1*x2;
  77.         sumlnXsquare=sumOfList(makeSumOfSquareList(makelnList(xList)));
  78.         squareOfsumlnX=Math.pow(sumOfList(makelnList(xList)),2);
  79.        
  80.         b = ( (n*sumlnXlnY) - sumlnXsumlnY ) / ( (n*sumlnXsquare ) - (squareOfsumlnX) ) ;
  81.        
  82.         return b;
  83.     }
  84.     public double calculateA(List<Double> xList,List<Double> yList,int n)
  85.     {
  86.         double A = 0;
  87.        
  88.         double sumlnY = sumOfList(makelnList(yList));
  89.         double sumlnX = sumOfList(makelnList(xList));
  90.         double B = calculateB(xList,yList,n);
  91.        
  92.         A= ( sumlnY/n ) - ( ( B*sumlnX ) / n );
  93.        
  94.         return A;
  95.     }
  96.     public double new_b(List<Double> xList,List<Double> yList,int n)
  97.     {
  98.         double b = calculateB(xList,yList,n);
  99.         return b;
  100.     }
  101.     public double new_a(List<Double> xList,List<Double> yList,int n)
  102.     {
  103.         double a = 0;
  104.         double A = calculateA(xList,yList,n);
  105.         a=Math.pow(Math.E, A);
  106.         return a;
  107.     }
  108. }
  109.  
  110. public class Main
  111. {
  112.     public static List<Double> listX = new ArrayList();
  113.     public static List<Double> listY = new ArrayList();
  114.     public static void inputData2D(int totalDataSize)
  115.     {
  116.        Scanner scanner = new Scanner(System.in);
  117.        for(int i=0;i<totalDataSize;i++)
  118.        {
  119.            System.out.print("Enter x"+(i+1)+" : ");
  120.            double x = scanner.nextDouble();
  121.            listX.add(x);
  122.            System.out.print("Enter y"+(i+1)+" : ");
  123.            double y = scanner.nextDouble();
  124.            listY.add(y);
  125.        }  
  126.        
  127.     }
  128.     public static void main(String[] args)
  129.     {
  130.        Functions functions = new Functions();
  131.        Scanner scanner = new Scanner(System.in);
  132.        System.out.print("How many (x,y) inputs : ");
  133.        int totalData = scanner.nextInt();
  134.        inputData2D(totalData);
  135.        double b = functions.calculateB(listX, listY, totalData);
  136.        double a = functions.new_a(listX, listY, totalData);
  137.        System.out.println("The equation is : y="+a+"(x)^"+b);
  138.     }
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement