Le challenge de funtool

je suis sûr que beaucoup de matlabeurs ne connaissent pas sa signification.

Il y a quelques années de ça quand je travaillais avec la Symbolic Math Toolbox, j’avais découvert la calculatrice graphique qui se lance en tapant la commande funtool. Bon de là à dire que c’est un outil fun comme le suppose le nom … faut vraiment être un geek MATLAB !

Donc j’arrête le suspense, voici la fameuse calculatrice interactive graphique funtool de MATLAB:

funtool

En résumé: f, g et a sont de type syms (variables symboliques), et x de type string (chaine de caractères).
La première ligne de boutons sert à faire des calculs sur f uniquement comme l’intégrale , l’inverse…alors que la troisième ligne opère sur les fonctions symboliques f et g en même temps. Pour en savoir plus, voici le lien vers la doc de funtool .

Ce qui nous intéresse ici, c’est la dernière ligne et notamment le bouton Demo, qui comme son nom l’indique lance une démo de la calculatrice.

C’est dans le help de funtool.m qu’on va trouver le challenge du chef scientifique à TMW , Cleve moler :

Cleve Moler

Pour ceux qui ne connaissant pas Cleve Barry Moler , je vous invite à lire sa biographie sur le site de TMW: Founders

Donc comme je disais plus haut , le challenge de Cleve est dans le help de funtool, donc quand on tape dans le Command Window de MATLAB :
>>help funtool on peut lire vers la fin:

% The first three buttons in the fourth row manage a list of functions.
% The Insert button places the current active function in the list.
% The Cycle button rotates the function list.
% The Delete button removes the active function from the list.
% The list of functions is named fxlist. A default fxlist containing
% several interesting functions is provided.
%
% The Reset button sets f, g, x, a and fxlist to their initial values.
% The Help button prints this help text.
%
% The Demo button poses the following challenge: Can you generate the
% function sin(x) without touching the keyboard, using just the mouse?
% The demo does it with a reset and then nine clicks. If you can do
% it with fewer clicks, please send e-mail to moler@mathworks.com.

%
% The Close button closes all three windows.
%
% See also EZPLOT.

Pour être franc je n’ai jamais relevé le défi, j’ai juste vu en effet qu’appuyer sur le bouton Demo simulait les 9 clics souris. Apparemment plusieurs y sont arrivés , c’est ce qu’on peut lire en tout cas dans ce post de 2005:
Funtool’s Challange is no more a Challange (Obaid Mushtaq) sur le MATLAB central .
On peut d’ailleurs lire que Cleve affirme que le record c’est 5 clics de souris pour arriver à calculer sin(x) ! Nouveau challenge pour les MATLAB geeks?!!

Voici pour infos , le callback effectué par le bouton Demo:

%%%%% Callback for Demo button. %%%%%

case 'Demo'
 
   % "B" is the vector of button handles in the control panel.
   % "prog" is a "program" consisting of button codes.
 
   prog = {'Reset','f/a','int f','f + g','1/f', ...
           'int f','finv','int f','df/dx','num f'};
   B = findobj(gcf,'Style','pushbutton');  
   for k = 1: length(prog)
      currB = findobj(B,'String',prog{k});
      set(currB,'BackgroundColor','white');
      eval(get(currB,'Callback'));
      pause(1)
      set(currB,'BackgroundColor','default');
   end

%%%%%%%%%%%%%%%%%%%%%%%%%%%

Donc comme on peut le lire dans le callback ,au début ça émule le bouton Reset qui remet la calculatrice à son état initial , c’est à dire:
f(x) = x et g(x) = 1 sur le domaine [-2*pi, 2*pi] puis ensuite sont successivement évalués 8 opérations .

Note : Vu que le challenge est dans le help, c’est à dire dans les commentaires de la fonction funtool , cet article est publié dans la catégorie « MATLAB Documentation » .

N’hésitez pas non plus à télécharger une version gratuite de 15 jours de la Symbolic Math Toolbox pour relever le défi! Pour cela en bas à droite de la page http://www.mathworks.com/products/ vous avez un lien Product Trials

Have fun with funtool!!!

Laisser un commentaire