28. & +* ,)
Discriminat
Sign
<0
>0
=0
Computes root case 1 Computes roots case 2 2
T F
T F ( /X1/ <= X & X <=
X == X1
/X2/ )
Return True Return False Return True Return False Return False
End
29
29. & * ) quot;(
Initial Request
1 Day
After
1 Week
After
30
30. & * ) quot;(
Initial Request Evolution Request
1 Day
After
Few Weeks Later ?
1 Day
1 Week
After
After
31
33. - ) -
6HFRQG 2UGHU
3 RO QRP L D O
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
34
34. - ) -
6HFRQG 2UGHU
3 RO QRP L D O ' L V FUL P L QD QW
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
35
35. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
36
36. - & #
6HFRQG 2UGHU
3 RO QRP L D O
computeRoots()
create()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
37
38. -
' L V FUL P L QD QW
6HFRQG 2UGHU
3 RO QRP L D O
39
39. - )
6HFRQG 2UGHU
3 RO QRP L D O
6HFRQG 2UGHU
3 RO QRP L D O
) D FW RU
' L V FUL P L QD QW
40
40. - )
6HFRQG 2UGHU
3 RO QRP L D O
6HFRQG 2UGHU
3 RO QRP L D O
) D FW RU
' L V FUL P L QD QW
41
41. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
42
42. class Discriminant {
private double delta;
public Discriminant (double a, double b, double c) {
delta = (b * b) - (4.0 * a * c);
}
public double value () {
return delta;
}
}
43
43. ) *
static Polynome create( double a, double b, double c) {
Discriminant theDiscriminant = new Discriminant(a,b,c);
double delta = theDiscriminant.value();
Polynome polynome;
if (delta == 0.0) {
return polynome = new SingleRootPolynome(a,b,c,theDiscriminant) ;
}
else if (delta > 0.0) {
return polynome = new TwoRootsPolynome(a,b,c,theDiscriminant) ;
}
else {
return polynome = new NoRootPolynome(a,b,c,theDiscriminant);
}
}
44
44. * &
static Polynome create( double a, double b, double c) {
Discriminant theDiscriminant = new Discriminant(a,b,c);
double delta = theDiscriminant.value();
Polynome polynome;
if (delta == 0.0) {
return polynome = new SingleRootPolynome(a,b,c,theDiscriminant) ;
}
else if (delta > 0.0) {
return polynome = new TwoRootsPolynome(a,b,c,theDiscriminant) ;
}
else {
return polynome = new ComplexRootsPolynome(a,b,c,theDiscriminant);
}
}
45
46. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
47
48. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
49
50. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
51
53. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
54
54. - #
6HFRQG 2UGHU
3 RO QRP L D O
' L V FUL P L QD QW
Double a
Double b
Double c
computeRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V & RP S O H[ 5 RRW V
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
55
57. -
6HFRQG 2UGHU
3 RO QRP L D O
computeRoots()
isInBetweenRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
isInBetweenRoots() isInBetweenRoots() isInBetweenRoots()
58
59. -
6HFRQG 2UGHU
3 RO QRP L D O
computeRoots()
isInBetweenRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
isInBetweenRoots() isInBetweenRoots() isInBetweenRoots()
60
61. -
6HFRQG 2UGHU
3 RO QRP L D O
computeRoots()
isInBetweenRoots()
6L QJ O H 5 RRW 7 Z R 5 RRW V 1 R 5 RRW
6HFRQG 2UGHU 6HFRQG 2UGHU 6HFRQG 2UGHU
3 RO QRP L D O 3 RO QRP L D O 3 RO QRP L D O
computeRoots() computeRoots() computeRoots()
isInBetweenRoots() isInBetweenRoots() isInBetweenRoots()
62