TP-optimisation-numerique-2/test/tester_pas_de_cauchy.jl

81 lines
2.3 KiB
Julia
Raw Normal View History

2021-11-17 17:30:44 +00:00
@doc doc"""
Tester l'algorithme de pas de Cauchy
# Entrées :
* afficher : (Bool) affichage ou non des résultats de chaque test
# Les cas de test (dans l'ordre)
* quadratique 1
* quadratique 2
* quadratique 3
"""
function tester_pas_de_cauchy(afficher::Bool,Pas_De_Cauchy::Function)
tol_erreur = 1e-6
@testset "Pas de Cauchy" begin
"# Pour la quadratique 1"
@testset "g = 0" begin
g = [0; 0]
H = [7 0 ; 0 2]
delta = 1
s, e = Pas_De_Cauchy(g,H,delta)
@test (e == 0) && (isapprox(s,[0; 0],atol=tol_erreur))
end
@testset "quad 2, non saturé" begin
g = [6; 2]
H = [7 0 ; 0 2]
delta = 1
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(norm(g)^2/(g'*H*g))*g
@test (e == 1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
@testset "quad 2, saturé" begin
g = [6; 2]
H = [7 0 ; 0 2]
delta = 0.9
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(delta/norm(g))*g
@test (e == -1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
@testset "quad 3, non saturé" begin
g = [-2; 1]
H = [-2 0 ; 0 10]
delta = 6
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(norm(g)^2/(g'*H*g))*g
println("Cauchy 4 = ", sol)
@test (e == 1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
@testset "quad 3, saturé" begin
g = [-2; 1]
H = [-2 0 ; 0 10]
delta = 5
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(delta/norm(g))*g
println("Cauchy 5= ", sol)
@test (e == -1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
@testset "quad 3, g'*H*g <0 saturé" begin
g = [3; 1]
H = [-2 0 ; 0 10]
delta = 5
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(delta/norm(g))*g
println("Cauchy 6= ", sol)
@test (e == -1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
@testset "quad 3, g'*H*g = 0 saturé" begin
g = [1,2]
H = [2 -1 ; 4 -2]
delta = 5
s, e = Pas_De_Cauchy(g,H,delta)
sol = -(delta/norm(g))*g
println("Cauchy 6= ", sol)
@test (e == -1) && (isapprox(s,sol,atol=tol_erreur)) # sol = [-0.9230769230769234; -0.30769230769230776]
end
end
end