Skip to content

Commit

Permalink
add projet de OP
Browse files Browse the repository at this point in the history
  • Loading branch information
Dave0126 committed Nov 9, 2021
1 parent 2c9ebb3 commit 3f944fd
Show file tree
Hide file tree
Showing 82 changed files with 52,989 additions and 0 deletions.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Manifest.toml
/docs/Manifest.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
language: julia
os:
- osx
- linux
- windows
julia:
- 1.4
beofre_script:
- julia -e 'using Pkg; Pkg.add(PackageSpec(url="https://github.com/mathn7/TestOptinum.git"))'

notifications:
email: false

jobs:
include:
- stage: Documentation
julia: 1.4
os: linux
script:
- julia --project=docs -e 'using Pkg; Pkg.instantiate(); Pkg.develop(PackageSpec(path=pwd()))'
- julia --project=docs --color=yes docs/make.jl
after_success: skip
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
name = "Optinum"
uuid = "289cfbba-6966-46b0-8dde-953cd55d6e8f"
authors = ["relmo <[email protected]>"]
version = "0.1.0"

[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
Plots = "91a5bcdd-55d7-5caf-9e0b-520d859cae80"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
TestOptinum = "a6016688-b6f6-4950-8384-ab0954b6af15"
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Optinum


Pour récupérer Optinum, il faut cloner ce dépot git :

`> git clone https://gitlab.irit.fr/toc/mathn7/optimisation-numerique/optinum.git`

Pour récupérer les tests unitaires

`> git clone https://gitlab.irit.fr/toc/mathn7/optimisation-numerique/optinum-test.git`

Ensuite, pour accéder au sujet du TP ouvrir

`optinum/docs/build/index.html`

optinum/src contient le corps (à compléter) des algorithmes d'optimisation vus en cours d'Optimisation Numérique.

`optinum-test/src` contient les tests unitaires que vous avez à compléter.

#### Fichiers à ne pas modifier :
* `src/Optinum.jl`
* `test/runtests.jl`
* `Project.toml`
* `Manifest.toml`
* `docs/Project.toml`
* `docs/Manifest.toml`
* `docs/assets/`
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[deps]
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
Optinum = "289cfbba-6966-46b0-8dde-953cd55d6e8f"
TestOptinum = "a6016688-b6f6-4950-8384-ab0954b6af15"
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0"/><title>L&#39;algorithme de Newton local · Optinum.jl</title><link href="https://fonts.googleapis.com/css?family=Lato|Roboto+Mono" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/fontawesome.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/solid.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/brands.min.css" rel="stylesheet" type="text/css"/><link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" rel="stylesheet" type="text/css"/><script>documenterBaseURL="."</script><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.6/require.min.js" data-main="assets/documenter.js"></script><script src="siteinfo.js"></script><script src="../versions.js"></script><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-dark.css" data-theme-name="documenter-dark"/><link class="docs-theme-link" rel="stylesheet" type="text/css" href="assets/themes/documenter-light.css" data-theme-name="documenter-light" data-theme-primary/><script src="assets/themeswap.js"></script></head><body><div id="documenter"><nav class="docs-sidebar"><a class="docs-logo" href="index.html"><img src="assets/logo.png" alt="Optinum.jl logo"/></a><div class="docs-package-name"><span class="docs-autofit">Optinum.jl</span></div><form class="docs-search" action="search.html"><input class="docs-search-query" id="documenter-search-query" name="q" type="text" placeholder="Search docs"/></form><ul class="docs-menu"><li><a class="tocitem" href="index.html">Accueil</a></li><li><a class="tocitem" href="Sujet.html">Sujet</a></li><li><span class="tocitem">Algorithmes</span><ul><li class="is-active"><a class="tocitem" href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a><ul class="internal"><li><a class="tocitem" href="#Principe-1"><span>Principe</span></a></li><li><a class="tocitem" href="#Algorithme-1"><span>Algorithme</span></a></li><li><a class="tocitem" href="#Tests-de-convergence-1"><span>Tests de convergence</span></a></li></ul></li><li><a class="tocitem" href="Regions_de_confiance.html">La méthode des régions de confiance</a></li><li><a class="tocitem" href="Lagrangien_augmente.html">La méthode du Lagrangien augmenté</a></li></ul></li><li><a class="tocitem" href="fct_index.html">Index des fonctions</a></li><li><a class="tocitem" href="Annexes.html">Annexes</a></li><li><a class="tocitem" href="mise_en_place.html">Installation de Julia et tests unitaires</a></li><li><a class="tocitem" href="FAQ.html">Foire aux Questions</a></li></ul><div class="docs-version-selector field has-addons"><div class="control"><span class="docs-label button is-static is-size-7">Version</span></div><div class="docs-selector control is-expanded"><div class="select is-fullwidth is-size-7"><select id="documenter-version-selector"></select></div></div></div></nav><div class="docs-main"><header class="docs-navbar"><nav class="breadcrumb"><ul class="is-hidden-mobile"><li><a class="is-disabled">Algorithmes</a></li><li class="is-active"><a href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li></ul><ul class="is-hidden-tablet"><li class="is-active"><a href="Algorithme_de_newton.html">L&#39;algorithme de Newton local</a></li></ul></nav><div class="docs-right"><a class="docs-edit-link" href="https://github.com//blob/master/docs/src/Algorithme_de_newton.md" title="Edit on GitHub"><span class="docs-icon fab"></span><span class="docs-label is-hidden-touch">Edit on GitHub</span></a><a class="docs-settings-button fas fa-cog" id="documenter-settings-button" href="#" title="Settings"></a><a class="docs-sidebar-button fa fa-bars is-hidden-desktop" id="documenter-sidebar-button" href="#"></a></div></header><article class="content" id="documenter-page"><h1 id="Algorithme-de-Newton-local-1"><a class="docs-heading-anchor" href="#Algorithme-de-Newton-local-1">Algorithme de Newton local</a><a class="docs-heading-anchor-permalink" href="#Algorithme-de-Newton-local-1" title="Permalink"></a></h1><h2 id="Principe-1"><a class="docs-heading-anchor" href="#Principe-1">Principe</a><a class="docs-heading-anchor-permalink" href="#Principe-1" title="Permalink"></a></h2><p>La fonction <span>$f$</span> étant <span>$C^{2}$</span> , on peut remplacer <span>$f$</span> au voisinage de l’itéré courant <span>$x_{k}$</span> par son développement de Taylor au second ordre, soit :</p><p><span>$f(y) \sim q(y)=f\left(x_{k}\right)+\nabla f\left(x_{k}\right)^{T}\left(y-x_{k}\right)+\frac{1}{2}\left(y-x_{k}\right)^{T} \nabla^{2} f\left(x_{k}\right)\left(y-x_{k}\right)$</span></p><p>On choisit alors comme point <span>$x_{k+1}$</span> le minimum de la quadratique q lorsqu’il existe et est unique, ce qui n’est le cas que si <span>$\nabla^{2} f (x)$</span> est définie positive. Or le minimum de q est réalisé par <span>$x_{k+1}$</span> solution de : <span>$\nabla q (x_{k+1}) = 0$</span> , soit : <span>$\nabla f\left(x_{k}\right)+\nabla^{2} f\left(x_{k}\right)\left(x_{k+1}-x_{k}\right)=0,$</span></p><p>ou encore, en supposant que <span>$\nabla^{2} f (x_{k})$</span> est définie positive :</p><p><span>$x_{k+1}=x_{k}-\nabla^{2} f\left(x_{k}\right)^{-1} \nabla f\left(x_{k}\right).$</span></p><p>La méthode ne doit cependant jamais être appliquée en utilisant une inversion de la matrice Hessienne (qui peut être de très grande taille et mal conditionnée), mais plutôt en utilisant :</p><p><span>$x_{k+1}=x_{k}+d_{k}$</span><span>$d_{k}$</span> est l’unique solution du système linéaire :</p><p><span>$\nabla^{2} f\left(x_{k}\right) d_{k}=-\nabla f\left(x_{k}\right)$</span> , <span>$d_{k}$</span> étant appelée direction de Newton.</p><p>Cette méthode est bien définie si à chaque itération, la matrice hessienne <span>$\nabla^{2} f (x_{k})$</span> est définie positive : ceci est vrai en particulier au voisinage de la solution <span>$x^{*}_{k}$</span> cherchée si on suppose que <span>$\nabla^{2} f (x^{*})$</span> est définie positive (par continuité de <span>$\nabla^{2} f$</span>).</p><h2 id="Algorithme-1"><a class="docs-heading-anchor" href="#Algorithme-1">Algorithme</a><a class="docs-heading-anchor-permalink" href="#Algorithme-1" title="Permalink"></a></h2><h4 id="Données:-1"><a class="docs-heading-anchor" href="#Données:-1">Données:</a><a class="docs-heading-anchor-permalink" href="#Données:-1" title="Permalink"></a></h4><p><span>$f , x_{0}$</span> première approximation de la solution cherchée, <span>$\epsilon &gt; 0$</span> précision demandée.</p><h4 id="Sorties-1"><a class="docs-heading-anchor" href="#Sorties-1">Sorties</a><a class="docs-heading-anchor-permalink" href="#Sorties-1" title="Permalink"></a></h4><p>une approximation de la solution du problème <span>$\min _{x \in \mathbb{R}^{n}} f(x)$</span> .</p><h4 id=".Tant-que-le-test-de-convergence-est-non-satisfait-1"><a class="docs-heading-anchor" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-1">1.Tant que le test de convergence est non satisfait</a><a class="docs-heading-anchor-permalink" href="#.Tant-que-le-test-de-convergence-est-non-satisfait-1" title="Permalink"></a></h4><p>a. Calculer <span>$d_k$</span> solution du système : <span>$\nabla^{2} f (x_{k}) d_{k} = - \nabla f (x_{k})$</span></p><p>b. Mise à jour : <span>$x_{k+1} = x_{k}+ d_{k} , k = k + 1$</span></p><h4 id=".Retourner-:-x_{k}.-1"><a class="docs-heading-anchor" href="#.Retourner-:-x_{k}.-1">2.Retourner : <span>$x_{k}$</span>.</a><a class="docs-heading-anchor-permalink" href="#.Retourner-:-x_{k}.-1" title="Permalink"></a></h4><h2 id="Tests-de-convergence-1"><a class="docs-heading-anchor" href="#Tests-de-convergence-1">Tests de convergence</a><a class="docs-heading-anchor-permalink" href="#Tests-de-convergence-1" title="Permalink"></a></h2><ol><li>Convergence, <span>$\|\nabla f(x^{(k+1)})\|$ petit : $\|\nabla f(x^{(k+1)})\| \leq \max(\texttt{Tol\_rel}\|\nabla f(x^{(0)})\|,\texttt{Tol\_abs})$</span></li><li>Stagnation de <span>$x_k$</span>, <span>$d^{(k)}=x^{(k+1)}-x^{(k)}$</span> petit : <span>$\|x^{(k+1)}-x^{(k)}\| \leq \max(\texttt{Tol\_rel}\|x^{(k)}\|,\texttt{Tol\_abs})$</span></li><li>Stagnation de <span>$f$</span> : <span>$|f(x^{(k+1)}) - f(x^{(k)})| \leq \max(\texttt{Tol\_rel}|f(x^{(k)})|,\texttt{Tol\_abs})$</span></li><li>Le nombre d&#39;itération maximal est atteint.</li></ol></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="Sujet.html">« Sujet</a><a class="docs-footer-nextpage" href="Regions_de_confiance.html">La méthode des régions de confiance »</a></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> on <span class="colophon-date" title="Monday 8 November 2021 11:31">Monday 8 November 2021</span>. Using Julia version 1.4.1.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Loading

0 comments on commit 3f944fd

Please sign in to comment.