next up previous contents
suivant: Une liste partielle des monter: introduction précédent: Calcul matriciel   Table des matières

Programmer avec Maxima

Jusqu'à présent, nous avons utilisé Maxima en mode interactif, comme une super calculatrice. Toutefois, pour des calculs qui nécessitent une séquence de commandes répétitive, il est préférable d'exécuter un programme. Nous présentons maintenant un exemple de court programme permettant le calcul des points critiques d'une fonction $ f$ de deux variables $ x$ et $ y$. Le programme demande à l'utilisateur d'entrer une fonction $ f$, puis il calcule les dérivées partielles $ \frac{\partial f}{\partial x} \tmop{et}$ $ \frac{\partial
f}{\partial y}$, et enfin il fait appel à la commande SOLVE de Maxima pour obtenir les solutions du système d'équations :

    $ \frac{\partial f}{\partial x} = 0 \tmop{et}$ $ \frac{\partial
f}{\partial y} = 0$$\displaystyle $

Le programme est écrit avec un éditeur de textes quelconque, puis est chargé dans Maxima avec la commande BATCH. Voici le listing du programme :

/*-------------------------------------

Ceci est le programme critpts.max

comme vous le voyez, les commentaires avec Maxima sont analogues à ceux en langage C

Auteur : Nelson Luis Dias

Créé le 07/07/2000

-----------------------------------------*/

critpts():=(

print("Programme pour déterminer les points critiques "),

/* --------------------------------------

On entre une fonction

-----------------------------------------*/

f:read("Entrez f(x,y)"),

/*----------------------------------------

On renvoie la réponse pour vérification

------------------------------------------*/

print("f = ",f),

/*-----------------------------------------

On construit une liste avec les dérivées partielles :

-------------------------------------------*/

eqs:[diff(f,x),diff(f,y)],

/*--------------------------------------------

On construit la liste des inconnues

------------------------------------------*/

unk:[x,y],

/*-------------------------------------------

On résout le système

---------------------------------------------*/

solve(eqs,unk)

)

$

Le programme ( qui est en l'état actuel une fonction sans argument ) s'appelle critpts. Chaque ligne est une commande ( qui doit être valide ) Maxima qui pourrait être exécutée en mode interactif, et qui est séparée de la commande suivante par une virgule. Les dérivées partielles sont stockées dans une liste qui s'appelle eqs, et les inconnues dans une liste qui s'appelle unk. Voici un exemple d'exécution du programme :

(C1) batch("/home/michel/temp/critpts.max");

batching #p/home/michel/temp/critpts.max

(C2) critpts() := (PRINT("Programme recherchant les points critiques "),

f : READ("Entrez f(x,y)"), PRINT(" f = ", f), eqs : [DIFF(f, x), DIFF(f, y)],

unk : [x, y], SOLVE(eqs, unk))

(C3) critpts();

Programme recherchant les points critiques

Entrez f(x,y)

%E^ (x^ 3+y^ 2)*(x+y);

$ f = ( y + x ) e^{y^2 + x^3}$

(D3) [[x = 0.4588955685487 %I + 0.35897908710869,

y = 0.49420173682751 %I - 0.12257873677837],

[x = 0.35897908710869 - 0.4588955685487 %I,

y = - 0.49420173682751 %I - 0.12257873677837],

[x = 0.41875423272348 %I - 0.69231242044203,

y = 0.86972626928141 %I + 0.4559120701117]]

y = 0.4559120701117 - 0.86972626928141 %I],

[x = - 0.41875423272348 %I - 0.69231242044203,

y = 0.86972626928141 %I + 0.4559120701117]]


next up previous contents
suivant: Une liste partielle des monter: introduction précédent: Calcul matriciel   Table des matières
Michel 2002-05-01