## Recherche de minimum de fonction à deux arguments par la méthode de Newton

On souhaite fabriquer une fonction qui recherche le minimum d'une fonction par la méthode de Newton.

Pour cela, prenons déjà une fonction F : R^2 -> R 
                                         (x,y) -> F(x,y)

Les conditions nécessaires d'extréma (F est supposée différentiable 2x) sont, 
pour (xinf,yinf) l'argument minimisant de F,

dF/dx(xinf,yinf) = 0 ; dF/dy(xinf,yinf) = 0

Il s'agit donc de résoudre ces deux équations et on veut que ce soit en utilisant la méthode de 
Newton. 

### Analyse

Si F est connue, trouver ses dérivées partielles

Choisir une expression simple comme x^4+y^4+x*y par exemple.

Calculer l'itération de Newton : le passage de (x0,y0) à (x1,y1)

pour les équations dF/dx(x,y)=0 et dF/dy(x,y)=0

Fabriquer une fonction réalisant cette itération.

On peut utiliser 'define' plutôt que ':=' pour placer des résultats de calculs dans le corps de la fonction

Voir la différence avec les exemples ci-dessous

res:x^2/(1+x);
f(x):=res;
fundef(f);

res:x^2/(1+x);
define(f(x),res);
fundef(f);

Essayer la fonction : d'abord sans s'occuper du critère d'arrêt et ensuite en l'introduisant

### Synthèse 

Il s'agit de réunir les étapes précédentes

Et de les réunir dans une fonction globale 

### Fonction d'un nombre d'arguments quelconque

Voici une fonction qui donne l'itération de Newton pour un nombre quelconque d'arguments

ItNwt(F,X):=block([G,H,X1,sol],
 X1:map(lambda([%x],concat(%x,1)),X),
 G:map(lambda([%x],diff(F,%x)),X),
 H:map(lambda([%g],map(lambda([%x],diff(%g,%x)),X)),G),
 sol:solve(map(lambda([%h,%g],%h.(X1-X)+%g),H,G),X1),
 ev(X1,sol))$

ItNwt(x^4+y^4+z^4,[x,y,z]);

Fabriquer une fonction globale comme dans 1.2