π
<-
Chat plein-écran
[^]

Enlever valeur absolue d'une expression

Programmation et implémentation d'algorithmes.

Enlever valeur absolue d'une expression

Message non lude azerty89 » 09 Fév 2012, 22:08

Bonjour à tous,

Je sollicite votre aide sur le programme que j'écris.

Pour faire court, je cherche une solution pour :

1) Soit effacer les termes absolus d'une expression.

Exemple : 2+abs(x) qui donnerait 2+x

2) Soit, cela se rapporte un peu au premier cas, pouvoir préciser que les valeurs non numériques contenues dans les variables sont systématiquement positives et non nulles.

Je séche sur la méthode, j'espère qu'il y en a une !!

Merci !
Avatar de l’utilisateur
azerty89
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 26.7%
 
Messages: 5
Inscription: 09 Fév 2012, 22:01
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Enlever valeur absolue d'une expression

Message non lude Persalteas » 10 Fév 2012, 11:57

les valeurs non numériques contenues dans les variables sont systématiquement positives et non nulles.


Là, il y a un truc que mon cerveau avale pas...

Une valeur non numérique positive ? C'est à dire ?
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Enlever valeur absolue d'une expression

Message non lude azerty89 » 10 Fév 2012, 12:39

Oui c'est pas très bien formulé :#roll#:

par exemple :

2*l+5 → calcul

Préciser que l ne peut avoir pour valeur que des valeurs positives, l apparient à R+*

Cela pour éviter que des calculs (de norme, car il s'agit en pratique de composantes de vecteurs) entrainent des abs() dans le résultat...
Avatar de l’utilisateur
azerty89
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 26.7%
 
Messages: 5
Inscription: 09 Fév 2012, 22:01
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Enlever valeur absolue d'une expression

Message non lude Persalteas » 10 Fév 2012, 13:24

Euh, pourquoi ne pas tout simplement le préciser au moment ou la valeur l est choisie ?

ça dépend de ce que tu veux faire exactement.

Ou sinon, mets une condition pour que le calcul ne soit fait que si l est positif-non-nul et sinon ignoré.
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Enlever valeur absolue d'une expression

Message non lude azerty89 » 10 Fév 2012, 18:41

Le problème c'est que l n'est jamais choisi. Le programme permet de calculer une expression, il ne fait pas de calcul avec des valeurs fixées....
Avatar de l’utilisateur
azerty89
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 26.7%
 
Messages: 5
Inscription: 09 Fév 2012, 22:01
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Enlever valeur absolue d'une expression

Message non lude Persalteas » 10 Fév 2012, 18:44

mais alors, imaginons que l aie une mauvaise valeur, tu veux qu'il se passe quoi ?

-le calcul soit fait avec la valeur positive ? (j'imagine que ce n'est pas ça)
-le calcul soit ignoré ?
-le calcul soit fait, mais on rajoute un deuxième calcul derrière pour corriger ?
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Enlever valeur absolue d'une expression

Message non lude azerty89 » 10 Fév 2012, 19:27

Ben en fait il ne peux pas vraiment y avoir de mauvaise valeur ^^

Le programme en question permet de calculer l'expression du torseur cohésion (pour des calculs de résistance de matériaux) le long de n'importe quelle poutre en 2D. L'utilisateur rentre les coordonnées de la poutre, les efforts excercés, et le programme sort tout les termes du torseur de cohésion.

Les coordonnées de la poutre sont stockés sous forme de matrice, et pour les calculs à effectuer, il me faut des distances entre des points. Je fais appel à norme(), et vu que les coordonnées ne sont pas forcément des valeurs numériques fixées, norme() renvoie des abs().... Mathématiquement correct, mais inutile ici, vu qu'il s'agit de longueurs, qui ne peuvent pas être négative, ni être nulle, ca n'aurait pas de sens...

Au final, "l'algorithme" fonctionne, l'expression calculée correspond principalement à des sommes et des produits de termes.... mais les résultats ne sont pas simplifiés du tout...

Par exemple, je viens de faire un essai sur un cas très simple, le résultat obtenu est :

f*( x+|l|- l ), ce serait parfait si cette valeur absolue pouvait partir, la calcu pourrait faire la simplification pour n'obtenir que f*x.

Du coup face au desespoir (!!), je réfléchis à faire une fonction qui, en convertissant en string, chercherait les abs() de l'expression, recopierait l'expression en contournant cette fonction, pour en suite reconvertir en expression... Mais je trouve ca lourd....

Merci de t'interesser à mon problème !
Avatar de l’utilisateur
azerty89
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 26.7%
 
Messages: 5
Inscription: 09 Fév 2012, 22:01
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Enlever valeur absolue d'une expression

Message non lude Persalteas » 10 Fév 2012, 20:37

AAAAHHhhHhhhhh.....


ça y est j'ai compris. Comme quoi en expliquant tout d'un coup, ça marche mieux.

C'est donc la TI qui te renvoie une valeur en abs(valeur).


je ne l'avais pas compris comme ça, moi je n'ai pas de TI 89 et sur la 83 que j'ai, toute valeur en abs(valeur) est automatiquement transformée en la valeur seule.

Il te faut donc un calcul qui élimine le abs.
ça y est j'ai compris.

J'imagine que faire
Code: Tout sélectionner
abs(l)/1
te renvoie quand même abs(l) et non pas l ?

dans ce cas, je viens de demander aux hautes autorités de ce forum qui m'ont dit que:
Code: Tout sélectionner
abs(x)|x>0


renverrait X au lieu de abs(x), | voulant dire "tant que".
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Re: Enlever valeur absolue d'une expression

Message non lude azerty89 » 10 Fév 2012, 23:13

Inserer une contrainte avec "|" marche bien dans l'écran de calcl, mais dans un programme je n'ai pas réussi à faire fonctionner.

Si quelqu'un connait la syntaxe, je n'ai pas trouvé...

J'ai par contre fait une fonction qui eneleve les valeurs absolues d'une expression. Ca a l'air de fonctionner, mais j'aimerais que ca reste provisoire.... C'est un peu du bricolage !!

Je mets le code, pour info ^^
Code: Tout sélectionner
(datain)
Func
local unabs, unabst, pos, dimen, car, par
string(datain)»unabs
Loop
    0»par
    inString(unabs,"abs(")»pos
    If pos=0 Then
        expr(unabs)»unabs
        Return unabs
    EndIf
    dim(unabs)»dimen
    left(unabs,pos-1)»unabst
    pos+4»pos
    While posœdimen
        mid(unabs,pos,1)»car
        If car="(" Then
            par+1»par
            ElseIf car=")" Then
            par-1»par
        EndIf
        If par=ª1 Then
            0»par
            Else
            unabst&car»unabst
        EndIf
        pos+1»pos
    EndWhile
unabst»unabs
EndLoop
EndFunc


Désolé pour les noms de variables particuliers ^^
Avatar de l’utilisateur
azerty89
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 26.7%
 
Messages: 5
Inscription: 09 Fév 2012, 22:01
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Enlever valeur absolue d'une expression

Message non lude Persalteas » 10 Fév 2012, 23:16

Aie... Là, je ne peux plus t'aider, ça sort de mon domaine...

comme je t'ai dit je n'ai pas de 89, je comprends mal leurs codes.

je redemanderai aux connaisseurs comment faire dans un programme.
Avatar de l’utilisateur
PersalteasMembre UPECS
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 6.2%
 
Messages: 2337
Images: 113
Inscription: 04 Fév 2010, 00:00
Localisation: Evry (France)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: PhD candidate, Bioinformatics

Suivante

Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 11 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2455 utilisateurs:
>2433 invités
>17 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)