Page 1 sur 1

infini symbolique

Publié : dim. févr. 20, 2011 5:08 pm
par alb
Dans un programme:
"S=]"+ -inf +","+ inf +"[" renvoie S=]-infinity,+(infinity)[
Est-il possible d'avoir l'intervalle avec des infinis symboliques ?

Re: infini symbolique

Publié : lun. févr. 21, 2011 2:06 pm
par parisse
Je ne comprends pas la question, peut-etre que si vous donniez votre programme, le contexte m'aiderait.
S'il s'agit de pouvoir ecrire des intervalles sous la forme ]a,b[, ce n'est pas possible (sauf sous forme de chaine de caracteres) puisque ] est un delimiteur fermant de liste, il ne peut etre en premier.
Concernant les infinis, il y en a 3: infinity (complexe), +infinity et -infinity (reels) et des abbreviations (compatibles maxima) inf et -inf pour les deux derniers.

Re: infini symbolique

Publié : lun. févr. 21, 2011 4:19 pm
par alb
J'ai écrit un programme qui renvoie les solutions d'une inéquation du second degré à l'aide d'intervalles.
J'obtiens ce que je veux sous la forme S=]-infinity,3]U[5,+(infinity)[ par exemple
je veux simplement savoir si on peut obtenir -infinity sous la forme symbolique avec ce genre de fonction:

Code : Tout sélectionner

Pgm():={local a,b;a:=3;b:=5;"S=]"+ -inf +","+a+"]U["+b+","+ inf+"["}:;

Re: infini symbolique

Publié : lun. févr. 21, 2011 4:34 pm
par parisse
je ne comprends toujours pas bien, dans votre programme vous retournez une chaine de caractères, donc vous pouvez renvoyer ce que vous voulez, ici donc une union d'intervalles écrits en notation mathématique (à la française). Par contre bien sur une telle chaine de caractères ne pourra pas être syntaxiquement correcte.

Re: infini symbolique

Publié : lun. févr. 21, 2011 8:56 pm
par alb
Il s'agit d'un programme sans grand intérêt pour l'instant vu les répétitions (l'idée était de reprendre toutes les positions d'une parabole):

Code : Tout sélectionner

IneqDeg2(E,sg):={
local sol,c;
sol:=solve(E);
c:=coeff(E,x,2);
si sg=='>' alors 
  si size(sol)==0 alors 
    si c>0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
    si c<0 alors retourne "l'inéquation n'a pas de solution";fsi;
  fsi;
  si size(sol)==1 alors
    si c>0 alors retourne "S=]"+-inf+","+sol[0]+"[U]"+sol[0]+","+inf+"[";fsi;
    si c<0 alors retourne "l'inéquation n'a pas de solution";fsi;
  fsi;
  si size(sol)==2 alors 
    si c>0 alors retourne "S=]"+-inf+","+min(sol)+"[U]"+max(sol)+","+inf+"[";fsi;
    si c<0 alors retourne "S=]"+min(sol)+","+max(sol)+"[";fsi;
  fsi;
fsi;
si sg=='>=' alors 
  si size(sol)==0 alors 
    si c>0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
    si c<0 alors retourne "l'inéquation n'a pas de solution";fsi;
  fsi;
  si size(sol)==1 alors
    si c>0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
    si c<0 alors retourne "l'inéquation a une seule solution: x="+sol[0];fsi;
  fsi;
  si size(sol)==2 alors 
    si c>0 alors retourne "S=]"+-inf+","+min(sol)+"]U["+max(sol)+","+inf+"[";fsi;
    si c<0 alors retourne "S=["+min(sol)+","+max(sol)+"]";fsi;
  fsi;
fsi;
si sg=='<' alors 
  si size(sol)==0 alors 
    si c>0 alors retourne "l'inéquation n'a pas de solution";fsi;
    si c<0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
  fsi;
  si size(sol)==1 alors
    si c>0 alors retourne "l'inéquation n'a pas de solution";fsi;
    si c<0 alors retourne "S=]"+-inf+","+sol[0]+"[U]"+sol[0]+","+inf+"[";fsi;
  fsi;
  si size(sol)==2 alors 
    si c<0 alors retourne "S=]"+-inf+","+min(sol)+"[U]"+max(sol)+","+inf+"[";fsi;
    si c>0 alors retourne "S=]"+min(sol)+","+max(sol)+"[";fsi;
  fsi;
fsi;
si sg=='<=' alors 
  si size(sol)==0 alors 
    si c<0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
    si c>0 alors retourne "l'inéquation n'a pas de solution";fsi;
  fsi;
  si size(sol)==1 alors
    si c<0 alors retourne "S=]"+-inf+","+inf+"[";fsi;
    si c>0 alors retourne "l'inéquation a une seule solution: x="+sol[0];fsi;
  fsi;
  si size(sol)==2 alors 
    si c<0 alors retourne "S=]"+-inf+","+min(sol)+"]U["+max(sol)+","+inf+"[";fsi;
    si c>0 alors retourne "S=["+min(sol)+","+max(sol)+"]";fsi;
  fsi;
fsi;
}
:;
On fait par exemple

Code : Tout sélectionner

IneqDeg2(-2x^2+5x+7,'<=')
pour obtenir S=]-infinity,-1]U[7/2,+(infinity)[
et donc je me demandais si au lieu de -infinity et +infinity on pouvait obtenir leurs écritures mathématiques
(comme si on avait tapé -inf en ligne de commande)

Re: infini symbolique

Publié : mar. févr. 22, 2011 7:57 am
par parisse
Ok, j'ai compris, vous voulez simplement le caractere infini, il suffit donc de recopier le caractere UTF8 ∞ dans votre chaine.

Re: infini symbolique

Publié : mar. févr. 22, 2011 4:12 pm
par alb
Pas très fier d'avoir posé une question aussi idiote.... :oops:
Je poste mon idée d'exercice dans le forum enseignement.