Skip to content

Commit fa378a8

Browse files
committed
Add examples
1 parent f4a6b53 commit fa378a8

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

examples/linear_eq.jl

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Examples from Luc Jaulin, Michel Kieffer, Olivier Didrit and Eric Walter - Applied Interval Analysis
2+
3+
using IntervalArithmetic, IntervalRootFinding, StaticArrays
4+
5+
A = [4..5 -1..1 1.5..2.5; -0.5..0.5 -7.. -5 1..2; -1.5.. -0.5 -0.7.. -0.5 2..3]
6+
sA = SMatrix{3}{3}(A)
7+
mA = MMatrix{3}{3}(A)
8+
9+
b = [3..4, 0..2, 3..4]
10+
sb = SVector{3}(b)
11+
mb = MVector{3}(b)
12+
13+
p = fill(-1e16..1e16, 3)
14+
15+
rts = gauss_seidel_interval!(p, A, b, precondition=true) # Gauss-Seidel Method; precondition=true by default
16+
rts = gauss_seidel_interval!(p, sA, sb, precondition=true) # Gauss-Seidel Method; precondition=true by default
17+
rts = gauss_seidel_interval!(p, mA, mb, precondition=true) # Gauss-Seidel Method; precondition=true by default
18+
19+
rts = gauss_seidel_interval(A, b, precondition=true) # Gauss-Seidel Method; precondition=true by default
20+
rts = gauss_seidel_interval(sA, sb, precondition=true) # Gauss-Seidel Method; precondition=true by default
21+
rts = gauss_seidel_interval(mA, mb, precondition=true) # Gauss-Seidel Method; precondition=true by default
22+
23+
rts = gauss_seidel_contractor!(p, A, b, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
24+
rts = gauss_seidel_contractor!(p, sA, sb, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
25+
rts = gauss_seidel_contractor!(p, mA, mb, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
26+
27+
rts = gauss_seidel_contractor(A, b, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
28+
rts = gauss_seidel_contractor(sA, sb, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
29+
rts = gauss_seidel_contractor(mA, mb, precondition=true) # Gauss-Seidel Method (Vectorized); precondition=true by default
30+
31+
rts = gauss_elimination_interval!(p, A, b, precondition=true) # Gaussian Elimination; precondition=true by default
32+
rts = gauss_elimination_interval(A, b, precondition=true) # Gaussian Elimination; precondition=true by default

src/linear_eq.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ end
1313
function gauss_seidel_interval(A::AbstractMatrix, b::AbstractArray; precondition=true, maxiter=100)
1414

1515
n = size(A, 1)
16-
x = fill(-1e16..1e16, n)
17-
16+
x = similar(b)
17+
x .= -1e16..1e16
1818
gauss_seidel_interval!(x, A, b, precondition=precondition, maxiter=maxiter)
1919
return x
2020
end
@@ -47,7 +47,8 @@ end
4747
function gauss_seidel_contractor(A::AbstractMatrix, b::AbstractArray; precondition=true, maxiter=100)
4848

4949
n = size(A, 1)
50-
x = fill(-1e16..1e16, n)
50+
x = similar(b)
51+
x .= -1e16..1e16
5152
x = gauss_seidel_contractor!(x, A, b, precondition=precondition, maxiter=maxiter)
5253
return x
5354
end
@@ -78,8 +79,8 @@ end
7879
function gauss_elimination_interval(A::AbstractMatrix, b::AbstractArray; precondition=true)
7980

8081
n = size(A, 1)
81-
x = fill(-1e16..1e16, n)
82-
82+
x = similar(b)
83+
x .= -1e16..1e16
8384
x = gauss_elimination_interval!(x, A, b, precondition=precondition)
8485

8586
return x

0 commit comments

Comments
 (0)