Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lab11;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- public class Lab11
- {
- public static double F(double a,double b,double c,double d,double x)
- {
- double result = (x-a)*(x-b)*(x-c)*(x-d);
- return result;
- }
- public static boolean checkSign(double x)
- {
- if(x<0)
- {
- return false;
- }
- return true;
- }
- public static void bisection(double a,double b,double c,double d,double x1,double x2)
- {
- int i = 1;
- double x0;
- double f2,f0,f1,t;
- double ESP = 0.001;
- System.out.println("\n__________________________________________________________________\n");
- System.out.println("\niteration\t x1\t x2\t x0\t f1\t f2\t f0");
- System.out.println("\n___________________________________________________________________\n");
- do
- {
- x0=(x1+x2)/2;
- f1=F(a,b,c,d,x1);
- f2=F(a,b,c,d,x2);
- f0=F(a,b,c,d,x0);
- System.out.println("\n"+" "+i+" "+x1+" "+x2+" "+x0+" "+f1+" "+f2+" "+f0);
- if(f1*f0<0)
- {
- x2=x0;
- }
- else
- {
- x1=x0;
- }
- i++;
- }
- while(Math.abs(f0)>ESP);
- System.out.println("\n__________________________________________________________\n");
- System.out.println("\n\nRoot = "+x0);
- }
- public static void main(String[] args)
- {
- System.out.println("Enter a,b,c,d,A,B,delX : ");
- Scanner scanner = new Scanner(System.in);
- double a = scanner.nextDouble();
- double b = scanner.nextDouble();
- double c = scanner.nextDouble();
- double d = scanner.nextDouble();
- double A = scanner.nextDouble();
- double B = scanner.nextDouble();
- double delX = scanner.nextDouble();
- double initialStart = A;
- double initialEnd = B;
- double stepSize = delX;
- List<Double> listX =new ArrayList();
- List<Double> listFX = new ArrayList();
- for(double i=initialStart;i<=initialEnd;i=i+stepSize)
- {
- double X = i;
- double FX = F(a,b,c,d,X);
- listX.add(X);
- listFX.add(FX);
- }
- //now find each two points that bracket root
- List<Double> listBracket = new ArrayList();
- for(int i=0;i<listX.size()-1;i++)
- {
- boolean previous = checkSign(listFX.get(i));
- boolean next = checkSign(listFX.get(i+1));
- if(previous!=next)
- {
- listBracket.add(listX.get(i));
- listBracket.add(listX.get(i+1));
- }
- }
- //finally do bisection between them
- for(int i=0;i<listBracket.size();i=i+2)
- {
- double start = listBracket.get(i);
- double end = listBracket.get(i+1);
- start = start -1;
- end = end +1;
- bisection(a,b,c,d,start,end);
- //System.out.println(listBracket.get(i));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement