Advertisement
rootUser

find all roots (lab)

Jun 13th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 3.24 KB | None | 0 0
  1. package lab11;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Scanner;
  6.  
  7. public class Lab11
  8. {
  9.     public static double F(double a,double b,double c,double d,double x)
  10.     {
  11.         double result = (x-a)*(x-b)*(x-c)*(x-d);
  12.         return result;
  13.        
  14.     }
  15.     public static boolean checkSign(double x)
  16.     {
  17.         if(x<0)
  18.         {
  19.             return false;
  20.         }
  21.         return true;
  22.     }
  23.     public static void bisection(double a,double b,double c,double d,double x1,double x2)
  24.     {
  25.        
  26.         int i = 1;
  27.         double x0;
  28.         double f2,f0,f1,t;
  29.         double ESP = 0.001;
  30.        
  31.         System.out.println("\n__________________________________________________________________\n");
  32.         System.out.println("\niteration\t x1\t       x2\t x0\t   f1\t   f2\t   f0");
  33.         System.out.println("\n___________________________________________________________________\n");
  34.         do
  35.         {
  36.             x0=(x1+x2)/2;
  37.             f1=F(a,b,c,d,x1);
  38.             f2=F(a,b,c,d,x2);
  39.             f0=F(a,b,c,d,x0);
  40.             System.out.println("\n"+" "+i+" "+x1+" "+x2+" "+x0+" "+f1+" "+f2+" "+f0);
  41.             if(f1*f0<0)
  42.             {
  43.                 x2=x0;
  44.             }
  45.             else
  46.             {
  47.                 x1=x0;
  48.             }
  49.             i++;
  50.         }
  51.         while(Math.abs(f0)>ESP);
  52.         System.out.println("\n__________________________________________________________\n");
  53.         System.out.println("\n\nRoot = "+x0);
  54.     }
  55.     public static void main(String[] args)
  56.     {
  57.         System.out.println("Enter a,b,c,d,A,B,delX : ");
  58.         Scanner scanner = new Scanner(System.in);
  59.        
  60.         double a = scanner.nextDouble();
  61.         double b = scanner.nextDouble();
  62.         double c = scanner.nextDouble();
  63.         double d = scanner.nextDouble();
  64.         double A = scanner.nextDouble();
  65.         double B = scanner.nextDouble();
  66.         double delX = scanner.nextDouble();
  67.        
  68.         double initialStart = A;
  69.         double initialEnd = B;
  70.         double stepSize = delX;  
  71.         List<Double> listX =new ArrayList();
  72.         List<Double> listFX = new ArrayList();
  73.         for(double i=initialStart;i<=initialEnd;i=i+stepSize)
  74.         {
  75.             double X = i;
  76.             double FX = F(a,b,c,d,X);
  77.             listX.add(X);
  78.             listFX.add(FX);
  79.         }
  80.        
  81.         //now find each two points that bracket root
  82.         List<Double> listBracket = new ArrayList();
  83.         for(int i=0;i<listX.size()-1;i++)
  84.         {
  85.             boolean previous = checkSign(listFX.get(i));
  86.             boolean next = checkSign(listFX.get(i+1));
  87.             if(previous!=next)
  88.             {
  89.                 listBracket.add(listX.get(i));
  90.                 listBracket.add(listX.get(i+1));
  91.             }
  92.         }
  93.        
  94.         //finally do bisection between them
  95.         for(int i=0;i<listBracket.size();i=i+2)
  96.         {
  97.             double start = listBracket.get(i);
  98.             double end = listBracket.get(i+1);
  99.             start = start -1;
  100.             end = end +1;
  101.             bisection(a,b,c,d,start,end);
  102.             //System.out.println(listBracket.get(i));
  103.            
  104.         }
  105.        
  106.  
  107.        
  108.        
  109.     }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement