Implémentation des deux méthodes de Newton - #1
Open
bouayoubegrine wants to merge 1 commit into
Open
bouayoubegrine wants to merge 1 commit into
bouayoubegrine wants to merge 1 commit into
Conversation
|
Status: |
dpo
reviewed
Aug 17, 2025
| k = 0 | ||
| @printf "%2s %9s %7s %7s %7s\n" "k" "fk" "‖grad‖" "t" "slope" | ||
| @printf "%2d %9.2e %7.1e\n" k fk gnorm | ||
| while gnorm > 1.0e-6 + 1.0e-6 * gnorm0 && k < 10*n |
| @printf "%2d %9.2e %7.1e\n" k fk gnorm | ||
| while gnorm > 1.0e-6 + 1.0e-6 * gnorm0 && k < 10*n | ||
| Hk = hess(model,xk) | ||
| Hk = Symmetric(triu(Hk), :U) |
| k = 0 | ||
| @printf "%2s %9s %7s %7s %7s\n" "k" "fk" "‖grad‖" "t" "slope" | ||
| @printf "%2d %9.2e %7.1e\n" k fk gnorm | ||
| while gnorm > 1.0e-6 + 1.0e-6 * gnorm0 && k < 10*n |
| ############################## | ||
| # Direction de descent # | ||
| ############################## | ||
| (dk, stats) = Krylov.cg(Hk, -gk,linesearch=true) |
| slope = dot(dk, gk) | ||
| t = 1.0 | ||
| while obj(model, xk + t .* dk) > fk + 1.0e-4 * t * slope | ||
| t /= 2 |
|
|
||
| On remarque également que la méthode de Newton inexacte approche la solution plus rapidement que la méthode de Newton modifiée. De meme, la méthode inexacte peut s’avérer moins coûteuse, notamment si le gradient conjugué retourne une direction en un nombre faible d’itérations. | ||
|
|
||
| Enfin, dans les problèmes de grande taille, en particulier lorsque la matrice hessienne est sparse, le produit matrice-vecteur dans le gradient conjugué est bien plus économique que le coût d'une manipulation dense. Les méthodes directes comme la factorisation LDL nécessitent une permutation de la matrice pour conserver une factorisation creuse, mais obtenir une telle permutation peut être coûteux, voire inaccessible. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Titre : Implémentation des méthodes de Newton modifiée et inexacte pour la minimisation sans contrainte
Description :
Ce pull request propose l'implémentation de deux variantes de la méthode de Newton pour la minimisation de fonctions sans contrainte.
Les deux méthodes implémentées sont :
CGen se basant sur la courbure du sous-problème quadratique.Les deux méthodes suivent un critère d'arrêt basé sur la norme du gradient et le nombre d'itérations. Un test sur des problèmes polynomiaux et des problèmes non linéaires est inclus pour valider les méthodes.
Changements :
newton_modifieepour la méthode de Newton modifiée avec factorisation LDL modifiée.newton_inexactepour la méthode de Newton inexacte utilisant le gradient conjugué.