358
Le logiciel R - Effectuer des analyses math´ ematiques
Puisque trouver le maximum d’une fonction f est ´ equivalent `
a trouver le
minimum de la fonction − f , nous utiliserons nlm() sur la fonction − f .
> f <- function(z,alpha=1.1) {
+ x <- z[1]
+ y <- z[2]
+ r <- sqrt((x-3)^2+(y-4)^2)
+ return(- 10 * sin(r)/r^alpha)
+ }
> res <- nlm(f,c(0,0)) # Le deuxième paramètre effectif
# correspond aux valeurs initiales.
> res
$minimum
[1] -1.046464
$estimate
[1] -1.627385 -2.169848
$gradient
[1] -1.534979e-07 1.139977e-07
$code
[1] 1
$iterations
[1] 7
Le maximum vaut (−1)×res$minimum=1.046464 et se produit en
res$estimate=(−1.627, −2.169).
Astuce
Voici un exemple de passage de param` etre dans nlm pour la fonction ` a
minimiser. Ainsi, pour la maximisation de f avec α = 2, vous pouvez
ex´ ecuter l’instruction suivante : nlm(f,c(0,0),alpha=2)
• Optimisation sous contrainte
Pour effectuer une optimisation avec des contraintes simples du type −a ≤
x ≤ b et −c ≤ y ≤ d, vous pouvez utiliser la fonction nlminb() et ses
param` etres lower et upper. Par exemple, recherchons les trois maxima
de la surface suivante donn´ ee par l’´ equation e
−(x−1.2)
2 −(y−2)
2 cos(2π(x − 1.2))
sur le domaine [−1, 3] × [0, 4], dont le trac´ e peut ˆ etre obtenu au moyen
des instructions suivantes :
> f <- function(x,y) exp(-(x-1.2)^2-(y-2)^2) * cos((x-1.2) * pi * 2)
> x <- seq(-1,3,0.1)
> y <- seq(0,4,0.1)
> persp(x,y,outer(x,y,f),theta=30,phi=30,expand=0.5,
+
col="lightblue",ticktype="detailed")
Précédent

- 390/701

Suivant