Foire aux questions, F.A.Q., page 2

Page modifiée le 18 / 1 / 2003
Contenu : Différences entre Mathematica et Maple ; charger un fichier Excel compatible dans Mathematica ; emploi du logiciel Vibrations, transfert de fichiers sonores dans Excel, Mathematica et Maple ; Utiliser des fonctions spéciales (fonctions de Bessel J) avec Mathematica ; ondes électromagnétiques ; perte de l'option d'insertion sous Delphi ; création modification d'un site Internet et de ses images.
 

1 FAQ Mathematica, Maple

1.1. Quelles sont les différences entre Mathematica et Maple et  lequel choisir ?


Question embarrassante, s'il en est.

Ma réponse serait : adoptez celui que votre établissement possède déjà. Certains s'amusent au petit jeu du logiciel le plus rapide : Deux machines identiques, deux logiciels différents, programmés pour effectuer le même calcul. et à la date zéro, on appuie sur les deux touches Enter !
Cela peut amuser, mais dans la pratique, le logiciel le plus rapide sera celui pour lequel vous trouverez la documentation la plus abondante, ou la mieux adaptée à vos besoins, donc vraisemblablement celui qui est utilisé par d'autres collègues.
Mais n'éludons pas la question.
Mathematica est plus puissant, beaucoup mieux adapté au traitement des listes de nombres (pour vous en convaincre, comparez la FFT de Mathematica et celle de Maple). Il donne des graphiques splendides. Il est beaucoup plus simple au niveau du traitement des listes de données, car pour lui, tout est liste. Sa puissance à traiter les collections de données, ses affectations différées, ses variables muettes, permettent une programmation très élégante (donc très lisible). Pratiquement, il est inutile d'employer les boucles de programmation For To.
Par contre, il travaille systématiquement dans l'ensemble des complexes, ce qui est pénible, pour un élève de lycée.
Il est bien adapté à la recherche en mathématiques. Nous vous conseillons de consulter le livre de référence Mathematica, par Stephen Wolfram, et dans l'ouvrage 'Problèmes pour physiciens résolus avec Mathematica et Maple', Jean-Michel Jussiaux, Ellipses, page 56, le paragraphe : programmation par motif, ou déclarative. Mathematica est réellement impressionnant.
Maple fait plus facilement ressortir les termes qui se répètent dans une expression, permet de poser des conditions, ex simplifier sachant que x > 0. Mathematica 4 le permet aussi. Mathematica 3 permet de poser des conditions uniquement dans le calcul intégral (Assumption).
Maple est livré avec une bibliothèque étudiant permettant des calculs limités aux réels.
Il possède une fonctionnalité graphique intéressante, pour les équations différentielles.
Il distingue séquences, listes, ensembles, tableaux, tables, ce qui dans la pratique est assez pénible.
Maple est semble t il moins coûteux.
Comparer les rapidités respectives est douteux, car les algorithmes de Maple et ceux de Mathematica ne sont pas optimisés dans la même optique : Mathematica sera un peu plus lent pour calculer 100 chiffres, mais parviendra à en donner 100 000 dans un délai raisonnable, quand Maple s'essoufflera.
Signalons aussi Mathcad dédié au calcul numérique, ultra rapide et livré avec le noyau Maple pour le calcul formel.

Haut de cette page 
 

1.2. Traiter des fichiers Excel dans Mathematica


Cette question est abordée dans l'ouvrage 'Problèmes pour physiciens résolus avec Mathematica et Maple', Jean-Michel Jussiaux, Ellipses, chapitre 11, page 85.
Un lecteur nous signale que le code proposé "ne marche pas".
En fait, les fichiers "Excel" auxquels je fais allusion dans le livre, se sont révélés ne pas être de vrais fichiers Excel. Il s'agit de fichiers de mesures donnés par des systèmes d'acquisition de données, sauvegardés au "format Excel". Après vérification, c'est un faux format Excel, mais qu' Excel et d'autres tableurs sont capables de lire.
Car Excel ajoute à vos nombres tout un tas d'informations, du genre : votre nom, si vous vous vous êtes bien acquitté de votre obole à M$ etc. Avec sans doute des choses cryptées.
Essayez ceci : Ouvrez votre fichier dans Excel. Sélectionnez les valeurs numériques qui vous intéressent. Faites Copier. Ouvrez NotePad (traitement de textes le plus basique qui soit, mais bien sympathique, car il n'ajoute pas de bla bla aux fichiers). Faites Coller. Puis Sauvegarder Sous.
Ça marche, le fichier obtenu peut être lu, puis traité par Mathematica.

Haut de cette page 
 

1.3. Emploi des logiciels Vibrations et coursFFT, transfert de fichiers sonores dans Excel, Mathematica et Maple


Bonjour. Quelques mots, suite à votre courrier :

Le logiciel Vibrations (obsolète) est maintenant remplacé par le logiciel WaveFFT, bien plus évolué, comportant un cours personnalisable sur la transformation de Fourier, avec simulation, traitement des fichiers sonores au format .wave, pilotage de la carte d'acquisition Candibus... Il est disponible sur ce site gratuitement (graticiel).

Car le logiciel Vibrations doit être considéré comme un prototype ; il a été rédigé pour traiter des mouvements vibratoires particuliers, lors d'un concours (Olympiades) de Physique. Ceci étant, il fonctionne. Il peut lire des fichiers .Wave (16 bits, mono) et les sauvegarder à des formats lisibles par Excel, Mathematica ou Maple. Son aide en ligne comporte une animation (inutile) qui nécessiterait 2 DLL très lourdes pour fonctionner. Elles ne sont pas livrées, d'où des messages d'erreur qu'il vous faut outrepasser.

Vibrations figure aussi (sans l'aide en ligne, pour raison d'encombrement) dans la suite contenant l'étude des réactions acido basiques.
Lors de l'installation de la suite, tout est rangé dans C : \ Program Files\ PhyJi \ Phys ; les logiciels de chimie sont dans C : \ Program Files\ PhyJi \ AcBas. Eux seuls bénéficient d'une installation automatique d'une icône de raccourci dans le menu Démarrer. Donc cherchez Vibrations !

Lorsque qu'un fichier sonore .Wav est chargé, il peut être sauvegardé sous forme lisible par d'autres logiciels. Excel est capable d'ouvrir de tels fichiers créés par Vibrations, ou WaveFFT. Pour Mathematica et Maple, il vous faudra écrire du code de lecture, en vous inspirant des modèles suivants et en veillant à écrire les adresses exactes des fichiers sauvegardés.

Voici un extrait de l'aide en ligne traitant ce sujet :


Pour Mathematica, la FFT n'est pas utile. Les mesures sont rangées à la suite les unes des autres, séparées par des espaces #32. Les dates ne sont pas transférées ; faites le 'à la main'.
 

Voici un exemple de programme permettant de récupérer le fichier tmp0, ou tmp1, ou tmp2...
 

ClearAll["Global`*"];
adresse="C:\\Mesdoc\\Olympiades\\Sons\\tmp3";

 Employez des doubles \. Le compilateur ayant réalisé ce fichier d'aide en ligne a jugé utile d'effacer une barre de fraction inverse, sur deux !

L'adresse du fichier doit être donnée 'à la main'. Soyez très attentifs à l'orthographe.

suite =  ReadList[adresse, Number];
nPoints=Length[suite]
suiteCourte = Drop[suite,Ceiling[0.1 nPoints]];
suiteCourte = Drop[suiteCourte,-Ceiling[0.85 nPoints]];
ListPlot[suite, PlotJoined->True, PlotRange->All];
ListPlot[suiteCourte, PlotJoined->True, PlotRange->All];
(* ListPlot[suite, PlotJoined->True, PlotRange->{All,{-32768,+32767}}]; *)

amplitude=Abs[Fourier[suite]];
freqEchant=11025 ;nPointsSpectre=Ceiling[nPoints/2]
liste=Table[{((i-1)freqEchant)/Length[suite],amplitude[[i]]},{i,
      nPointsSpectre}];

ListPlot[liste, PlotJoined->True, PlotRange->All, ImageSize->{500,300}];
 

listeCourte= Drop[liste,-Ceiling[0.9  nPointsSpectre]];
listeCourte= Drop[listeCourte,Ceiling[0.  nPointsSpectre]];
Length[listeCourte]
ListPlot[listeCourte, PlotJoined->True, PlotRange->All, ImageSize->{500,300}];

Drop permet de tronquer les listes.
Les points virgules évitent l'affichage des longues listes.
 


Pour Maple, les différentes mesures sont séparées par des retours chariot #10.

Voici le code Maple, permettant de traiter une liste de mesures .Wav, converties par le logiciel 'Vibrations' ou WaveFFT : Vous pourrez ainsi représenter graphiquement l'évolution de la tension au cours du temps, et tracer son spectre de Fourier, par F.F.T.

> restart;
> Adresse:=`C:/Tempo/Tmp1` :

Ceci initialise Maple, auquel, nous donnons ensuite l'adresse du fichier de nombres créé par notre logiciel 'Vibrations'.
Vibrations range le fichier converti, sous le nom tmp1, tmp2 ... dans le dossier contenant les fichiers sons .Wav à convertir.

Notez les accents graves, obtenus avec les touches Alt Gr et 7 pressées simultanément, suivies d'un appui sur la barre
d'espacement, ainsi que les barres de division.

> longueurFichier:=filepos(Adresse,infinity);

                        longueurFichier := 579

Ceci nous donne la taille en octets du fichier, mais place le pointeur en fin dudit fichier. Nous initialisons à nouveau :

> restart;Adresse:=`C:/Tempo/Tmp1` : frequenceEchant := 25 :
> tableauMesures:=array(1..256) :
> for i from 1 to 256 do nombreLu:=readline(Adresse) ; tableauMesures[i]:=[i/frequenceEchant,op(sscanf(nombreLu,`%f`))] :
od:

Nous donnons à Maple, la fréquence d'échantillonnage, 25 Hz, 'à la main', car le fichier ne contient que les mesures.

> listeCouplesLue:=convert(tableauMesures, `list`):
> plot(listeCouplesLue):

Remarquer les nécessités de conversion de types, en Maple. (Pour Mathematica, tout est liste).
 

(C) 1999 jussiaux.software
 

Voilà, en espérant que vous vous en sortirez.

Haut de cette page

1.4. Utilisation de fonctions spéciales avec Mathematica


Voici un petit travail réalisé dans Mathematica qui a simplement été copié dans cette page html. Les réponses données par Mathematica ne se présentent pas visuellement sur cette page Internet comme dans celui-ci. Remarquez la difficulté habituelle en Mathematica, pour récupérer une solution ou une fonction.

Premier essai : Une équation différentielle dont la solution générale est une combinaison linéaire de fonctions de Bessel :
In[3]:=

solBess = DSolve[z z y''[z]+z y'[z] + (z z - n n)y[z]==0, y[z],z]

Voici la solution copiée dans Mathematica (celui-ci la présente de façon plus lisible)
Out[3]=
\!\({{y[z] \[Rule] BesselJ[\(-n\), \@z\^2]\ C[1] + BesselJ[n, \@z\^2]\ C[2]}}
    \)

Le même problème, mais au lieu de demander y[z], on demande y ; la solution est moins 'lisible', mais plus facile à réemployer
In[4]:=

solBess2 = DSolve[z z y''[z]+z y'[z] + (z z - n n)y[z]==0, y,z]

Out[4]=
\!\({{y \[Rule]
        \((BesselJ[\(-n\), \@#1\^2]\ C[1] + BesselJ[n, \@#1\^2]\ C[2]&)\)}}\)

On récupère la solution (où la variable z est sous forme implicite), par substitution :
In[5]:=

fSolBess2 = y/.solBess2[[1]]

Out[5]=
\!\(BesselJ[\(-n\), \@#1\^2]\ C[1] + BesselJ[n, \@#1\^2]\ C[2]&\)

On dérive la fonction obtenue :
In[7]:=

dSolBess2 = fSolBess2'[z]

Voici la réponse, où les puissances 2 se baladent dans le code html
Out[7]=
                          2                          2
(z (BesselJ[-1 - n, Sqrt[z ]] - BesselJ[1 - n, Sqrt[z ]])
                       2
      C[1]) / (2 Sqrt[z ]) +
                             2
   (z (BesselJ[-1 + n, Sqrt[z ]] -
                             2                     2
        BesselJ[1 + n, Sqrt[z ]]) C[2]) / (2 Sqrt[z ])

On tente d'écrire directement une fonction de Bessel :
In[8]:=

testBess=BesselJ[-n, Sqrt[z z]]

Out[8]=
                  2
BesselJ[-n, Sqrt[z ]]

On essaie de dériver cette fonction :
In[10]:=

dtestBess = testBess'[z]

Out[10]=
                   2
(BesselJ[-n, Sqrt[z ]])'[z]

Pas de réponse valable (il aurait sans doute fallu faire une substitution).
On simplifie une expression contenant les fonctions de Bessel obtenues plus haut :
In[12]:=

Simplify[dSolBess2 + fSolBess2]

Out[12]=
       2                         2
(Sqrt[z ] (BesselJ[-1 - n, Sqrt[z ]] C[1] -
                             2
        BesselJ[1 - n, Sqrt[z ]] C[1] +
                              2
        BesselJ[-1 + n, Sqrt[z ]] C[2] -
                             2
        BesselJ[1 + n, Sqrt[z ]] C[2])) / (2 z) +
                       2
   (BesselJ[-n, Sqrt[#1 ]] C[1] +
                        2
      BesselJ[n, Sqrt[#1 ]] C[2] & )

On obtient bien une réponse.

Haut de cette page


2 Ondes électromagnétiques


Lorsqu'une onde électromagnétique plane se propage dans le vide, les vecteurs champ électrique et champ magnétique vibrent en phase, ainsi qu'il est aisé de le constater à la résolution des équations de Maxwell.
 

3 Delphi, perte de l'option d'insertion


Il arrive parfois, lors d'une séance de travail sous Delphi, que d'un seul coup, l'option d'insertion disparaisse (bug Delphi, ou Windows ? ). Pour la rétablir, faire Outils | Options d'environnement | Editeur  | Mode insertion.

Haut de cette page