Skip to content

Commit 100dfc1

Browse files
author
Ander Gray
committed
updates arithmetic docs
1 parent 8aa4845 commit 100dfc1

14 files changed

+89
-17
lines changed

docs/src/arithmetic.md

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,41 +28,70 @@ Supported dependent arithmetic between uncertain numbers:
2828
Most 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);
3333
julia> 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

3636
julia> 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

3939
julia> 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

4242
julia> 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

5775
Perfect and opposite convolutions can also be performed:
5876
```julia
59-
julia> a = normal(0,1);
60-
julia> b = normal(1,1);
6177
julia> 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

6483
julia> 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

6897
Binary operations with a specified correlation coefficient may also be performed:

docs/src/plots/divFrechet.png

34.1 KB
Loading

docs/src/plots/divIndep.png

37.5 KB
Loading
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using ProbabilityBoundsAnalysis, PyPlot
2+
3+
a = normal(10,1);
4+
b = uniform(1,2);
5+
6+
plot(a + b, fontsize = 22)
7+
PyPlot.xlabel("a + b", fontsize = 26)
8+
savefig("sumFrechet.png")
9+
plot(a - b, fontsize = 22)
10+
PyPlot.xlabel("a - b", fontsize = 26)
11+
savefig("subFrechet.png")
12+
plot(a * b, fontsize = 22)
13+
PyPlot.xlabel("a * b", fontsize = 26)
14+
savefig("prodFrechet.png")
15+
plot(a / b, fontsize = 22)
16+
PyPlot.xlabel("a / b", fontsize = 26)
17+
savefig("divFrechet.png")
18+
19+
plot(convIndep(a, b), fontsize = 22)
20+
PyPlot.xlabel("a + b (independent)", fontsize = 26)
21+
savefig("sumIndep.png")
22+
plot(convIndep(a, b, op = -), fontsize = 22)
23+
PyPlot.xlabel("a - b (independent)", fontsize = 26)
24+
savefig("subIndep.png")
25+
plot(convIndep(a, b, op = *), fontsize = 22)
26+
PyPlot.xlabel("a * b (independent)", fontsize = 26)
27+
savefig("prodIndep.png")
28+
plot(convIndep(a, b, op = /), fontsize = 22)
29+
PyPlot.xlabel("a / b (independent)", fontsize = 26)
30+
savefig("divIndep.png")
31+
32+
plot(convPerfect(a, b), fontsize = 22)
33+
PyPlot.xlabel("a + b (perfect)", fontsize = 26)
34+
savefig("sumPerfect.png")
35+
plot(convPerfect(a, b, op = *), fontsize = 22)
36+
PyPlot.xlabel("a * b (perfect)", fontsize = 26)
37+
savefig("prodPerfect.png")
38+
plot(convOpposite(a, b, op = +), fontsize = 22)
39+
PyPlot.xlabel("a + b (opposite)", fontsize = 26)
40+
savefig("sumOpposite.png")
41+
plot(convOpposite(a, b, op = *), fontsize = 22)
42+
PyPlot.xlabel("a * b (opposite)", fontsize = 26)
43+
savefig("prodOpposite.png")

docs/src/plots/prodFrechet.png

37.3 KB
Loading

docs/src/plots/prodIndep.png

40.6 KB
Loading

docs/src/plots/prodOpposite.png

38.3 KB
Loading

docs/src/plots/prodPerfect.png

36.7 KB
Loading

docs/src/plots/subFrechet.png

35.2 KB
Loading

docs/src/plots/subIndep.png

37.8 KB
Loading

0 commit comments

Comments
 (0)