@@ -28,41 +28,70 @@ Supported dependent arithmetic between uncertain numbers:
2828Most of the fundamental binary operations can be performed between uncertain numbers of all types:
2929
3030``` julia
31- julia> a = normal (- 1 ,1 );
32- julia> b = interval (1 ,2 );
31+ julia> a = normal (10 ,1 );
32+ julia> b = uniform (1 ,2 );
3333julia> a + b
34- Pbox: ~ ( range= [- 3.09023 , 4.090232 ], mean= [ 0.0 , 1.0 ], var= [1.0 , 1.25 ])
34+ Pbox: ~ ( range= [7.9098 , 15.09 ], mean= 11.5 , var= [0.38392 , 2.1086 ])
3535
3636julia> a - b
37- Pbox: ~ ( range= [- 6.090232 , 1.0902323 ], mean= [ - 3.0 , - 2.0 ], var= [1.0 , 1.25 ])
37+ Pbox: ~ ( range= [4.9098 , 12.09 ], mean= 8.5 , var= [0.38392 , 2.1086 ])
3838
3939julia> a * b
40- Pbox: ~ ( range= [- 4.090232 , 4.180464 ], mean= [- 1.015451 , - 1.9690 ], var= [0.99763 , 3.99053 ])
40+ Pbox: ~ ( range= [6.9098 , 26.18 ], mean= [12.194 , 18.069 ], var= [0.6576 , 32.544 ])
4141
4242julia> a / b
43- Pbox: ~ ( range= [- 2.045116 , 2.0902323 ], mean= [- 0.50772 , - 0.984548 ], var= [0.249408 , 0.99763 ])
43+ Pbox: ~ ( range= [3.4549 , 13.09 ], mean= [5.6205 , 8.3861 ], var= [0.13574 , 7.6644 ])
4444```
45-
46- All of the above operations assume independence. For unknown dependence:
45+ ``` @raw html
46+ <img src="./plots/sumFrechet.png" width="49.5%"/>
47+ <img src="./plots/subFrechet.png" width="49.5%"/>
48+ <img src="./plots/prodFrechet.png"width="49.5%"/>
49+ <img src="./plots/divFrechet.png" width="49.5%"/>
50+ ```
51+ By default all arithmetic operations in ` ProbabilityBoundsAnalysis.jl ` are _ Frechet_ operations, operations which consider all possible dependencies (copulas). Therefore we naturally get p-boxes even if we began with precise distributions. For independence:
4752``` julia
48- julia> convFrechet (a, b, op = + )
49- Pbox: ~ ( range= [- 3.09023 ,4.090232 ], mean= [0.0 ,1.0 ], var= [0.383917 ,2.1086384 ])
53+ julia> convIndep (a, b, op = + )
54+ Pbox: ~ ( range= [7.9098 , 15.09 ], mean= 11.5 , var= 1.0833 )
55+
56+ julia> convIndep (a, b, op = - )
57+ Pbox: ~ ( range= [4.9098 , 12.09 ], mean= 8.5 , var= 1.0833 )
5058
51- julia> convFrechet (a, b, op = - )
52- Pbox: ~ ( range= [- 6.09023 ,1.090232 ], mean= [- 3.0 ,- 2.0 ], var= [0.383917 ,2.108638 ])
59+ julia> convIndep (a, b, op = * )
60+ Pbox: ~ ( range= [6.9098 , 26.18 ], mean= 15.0 , var= [10.052 , 11.538 ])
61+
62+ julia> convIndep (a, b, op = / )
63+ Pbox: ~ ( range= [3.4549 , 13.09 ], mean= [6.919 , 6.944 ], var= [2.3032 , 2.6815 ])
5364```
5465
55- The resulting p-boxes are much wider than the independence case.
66+ The resulting p-boxes are precise.
67+
68+ ``` @raw html
69+ <img src="./plots/sumIndep.png" width="49.5%"/>
70+ <img src="./plots/subIndep.png" width="49.5%"/>
71+ <img src="./plots/prodIndep.png"width="49.5%"/>
72+ <img src="./plots/divIndep.png" width="49.5%"/>
73+ ```
5674
5775Perfect and opposite convolutions can also be performed:
5876``` julia
59- julia> a = normal (0 ,1 );
60- julia> b = normal (1 ,1 );
6177julia> convPerfect (a, b, op = + )
62- Pbox: ~ ( range= [- 5.18046 ,7.18046 ], mean= [0.96909 ,1.030903 ], var= [3.80050 ,4.18248 ])
78+ Pbox: ~ ( range= [7.9098 , 15.09 ], mean= [11.482 , 11.518 ], var= [1.5807 , 1.7096 ])
79+
80+ julia> convPerfect (a, b, op = * )
81+ Pbox: ~ ( range= [6.9098 , 26.18 ], mean= [15.234 , 15.33 ], var= [18.661 , 19.605 ])
6382
6483julia> convOpposite (a, b, op = + )
65- Pbox: ~ ( range= [0.48559 ,1.51440 ], mean= [0.96909 ,1.03090 ], var= [0.0 ,0.00840 ])
84+ Pbox: ~ ( range= [8.9048 , 14.095 ], mean= [11.482 , 11.518 ], var= [0.47843 , 0.55648 ])
85+
86+ julia> convOpposite (a, b, op = * )
87+ Pbox: ~ ( range= [12.162 , 16.638 ], mean= [14.67 , 14.766 ], var= [2.0885 , 2.3469 ])
88+ ```
89+
90+ ``` @raw html
91+ <img src="./plots/sumPerfect.png" width="49.5%"/>
92+ <img src="./plots/prodPerfect.png" width="49.5%"/>
93+ <img src="./plots/sumOpposite.png"width="49.5%"/>
94+ <img src="./plots/prodOpposite.png" width="49.5%"/>
6695```
6796
6897Binary operations with a specified correlation coefficient may also be performed:
0 commit comments