Problème avec gnuplot

2 réponses
Avatar
Robert LEFEVRE
Bonjour,
Je sais que je suis un peu limite par rapport au sujet du forum mais je
me dis que beaucoup des utilisateurs de linux connaissent gnuplot...

Je souhaite obtenir le graphe de deux fonctions:
f1=sqrt(3*x+1)/sqrt(x-2)
f2=sqrt((3*x+1)/(x-2))
En sortie de gnuplot, j'obtiens le même graphe pour f1 et f2.
C'est pourtant faux puisque f1 est définie pour Df ]2;+inf[ and f2 est
définie pour Df= ]-inf;-1/3]U]2;+inf[.
Avec d'autres traceurs (Qtiplot et GeoGebra par exemple) le problème ne
se produit pas, le graphe de f1 n'est bien que la partie droite de
celui de f2.
J'en conclus qu'il s'agit sans doute d'une mauvaise utilisation que je
fais de gnuplot, mais laquelle ? J'ai pensé à un problème de
représentation des nombres dans gnuplot, mais je n'avance pas et je
voudrais bien comprendre.
Merci d'éclairer ma lanterne !

2 réponses

Avatar
Nicolas George
Robert LEFEVRE wrote in message
<4c37f8cb$0$27583$:
Je souhaite obtenir le graphe de deux fonctions:
f1=sqrt(3*x+1)/sqrt(x-2)
f2=sqrt((3*x+1)/(x-2))
En sortie de gnuplot, j'obtiens le même graphe pour f1 et f2.
C'est pourtant faux puisque f1 est définie pour Df ]2;+inf[ and f2 est
définie pour Df= ]-inf;-1/3]U]2;+inf[.



gnuplot> x=-1
gnuplot> print sqrt(3*x+1)
{0.0, 1.4142135623731}
gnuplot> print sqrt(x-2)
{0.0, 1.73205080756888}
gnuplot> print {0.0, 1.4142135623731} / {0.0, 1.73205080756888}
0.816496580927728

Gnuplot, comme beaucoup d'outils, étend la racine carrée aux nombres
négatifs en utilisant les complexes, et même à tous les nombres complexes.
Cette convention n'est pas absurde et peut avoir son utilité.

Avec d'autres traceurs (Qtiplot et GeoGebra par exemple) le problème ne
se produit pas, le graphe de f1 n'est bien que la partie droite de
celui de f2.



Geogebra, au moins, est optimisé pour l'enseignement, il n'est guère
étonnant qu'il privilégie la rigueur par rapport à l'utilité.
Avatar
Robert LEFEVRE
Le 10/07/2010 09:42, Nicolas George a écrit :
Robert LEFEVRE wrote in message
<4c37f8cb$0$27583$:
Je souhaite obtenir le graphe de deux fonctions:
f1=sqrt(3*x+1)/sqrt(x-2)
f2=sqrt((3*x+1)/(x-2))
En sortie de gnuplot, j'obtiens le même graphe pour f1 et f2.
C'est pourtant faux puisque f1 est définie pour Df ]2;+inf[ and f2 est
définie pour Df= ]-inf;-1/3]U]2;+inf[.



gnuplot> x=-1
gnuplot> print sqrt(3*x+1)
{0.0, 1.4142135623731}
gnuplot> print sqrt(x-2)
{0.0, 1.73205080756888}
gnuplot> print {0.0, 1.4142135623731} / {0.0, 1.73205080756888}
0.816496580927728

Gnuplot, comme beaucoup d'outils, étend la racine carrée aux nombres
négatifs en utilisant les complexes, et même à tous les nombres complexes.
Cette convention n'est pas absurde et peut avoir son utilité.

Avec d'autres traceurs (Qtiplot et GeoGebra par exemple) le problème ne
se produit pas, le graphe de f1 n'est bien que la partie droite de
celui de f2.



Geogebra, au moins, est optimisé pour l'enseignement, il n'est guère
étonnant qu'il privilégie la rigueur par rapport à l'utilité.


Bien sûr, je m'en doutais et je pense aussi que c'est une bonne chose
que gnuplot étende la racine carrée aux nombres complexes. Seulement,
mes stagiaires, pour qui je prépare ce document, ne sont pas censés
connaître les complexes et ont déjà pas mal de travail avec les réels.
J'aurais dû poser ma question différemment: Comment modifier ce
comportement de gnuplot et, dans certains cas, ne le faire calculer que
sur des réels ?
Merci beaucoup et bonne journée.