infini symbolique

Utilisation de Xcas

Modérateur : xcasadmin

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

infini symbolique

Message par alb » dim. févr. 20, 2011 5:08 pm

Dans un programme:
"S=]"+ -inf +","+ inf +"[" renvoie S=]-infinity,+(infinity)[
Est-il possible d'avoir l'intervalle avec des infinis symboliques ?

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: infini symbolique

Message par parisse » lun. févr. 21, 2011 2:06 pm

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.

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: infini symbolique

Message par alb » lun. févr. 21, 2011 4:19 pm

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+"["}:;

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: infini symbolique

Message par parisse » lun. févr. 21, 2011 4:34 pm

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.

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: infini symbolique

Message par alb » lun. févr. 21, 2011 8:56 pm

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)

parisse
Messages : 5894
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: infini symbolique

Message par parisse » mar. févr. 22, 2011 7:57 am

Ok, j'ai compris, vous voulez simplement le caractere infini, il suffit donc de recopier le caractere UTF8 ∞ dans votre chaine.

alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

Re: infini symbolique

Message par alb » mar. févr. 22, 2011 4:12 pm

Pas très fier d'avoir posé une question aussi idiote.... :oops:
Je poste mon idée d'exercice dans le forum enseignement.

Répondre