Page 1 sur 1

Savoir si une expression est un polynome

Publié : dim. déc. 26, 2010 4:35 pm
par magicvinni
Bonjour,

Je ne trouve pas de fonction qui dit si une expression est un polynôme ou non. Je pensais m'en sortir avec degree(x+sqrt(x)) qui renvoi 0, mais avec degree(1/(x+1)), j'ai une erreur....

Autre question du même ordre, je suis en train d'écrire une routine qui compare les domaines de définition de 2 fonctions, ça n'existe pas ? (Au cas où :lol: )

[EDIT] Dernière question (promis) : Existe-il une fonction qui dit si l'expression saisie est grammaticalement correcte ?

Merci,
Vincent

Re: Savoir si une expression est un polynome

Publié : dim. déc. 26, 2010 7:44 pm
par parisse
il n'existe effectivement pas de telle fonction en langage xcas (en C++ on peut tester assez facilement si une expression est rationnelle par rapport à une variable). Je peux en ajouter une, en attendant, si c'est un polynome de degré maximal k fixé (par exemple 4) vous pouvez vérifier que la dérivée k+1-ième est nulle.
Il n'existe pas non plus de fonction pour le domaine de définition.
Sinon, pour la correction grammaticale, vous voulez dire est-ce qu'une chaine de caractère correspond à une expression? Il y a peut-etre expr qui renvoie undef si ce n'est pas le cas, sinon pour un controle plus fin (avec emplacement du premier token non reconnu) il faut appeler une fonction depuis le C++.

Re: Savoir si une expression est un polynome

Publié : dim. déc. 26, 2010 10:07 pm
par magicvinni
Merci pour ces réponses.

Pour les polynômes, j'y avais pensé en effet, mais ne connaissant pas à l'avance le degré ce n'était pas très pratique. Si vous pensez que cela peut être utile vous pouvez l'ajouter, pour ma part, je reste bloqué à cause de mon installation sur serveur (Je n'arrive pas à installer une version plus récente que la 0.8.0, et d'un autre côté, comme ça fonctionne bien comme ça, je n'ose pas trop insister :roll: ). donc je vais trouver une méthode alternative (via le php peut être une fois l'expression sous forme normale, ça doit être simple).

Pour la comparaison des 2 ensembles de définition, j'ai un algo en tête, que je déposerai ici quand il fonctionnera pour ceux que ça intéresse.

Enfin, est-il possible de modifier les valeurs comme All_trig_sol en ligne de commande ?

Merci,
Bonnes fêtes de fin d'année,

Vincent

Re: Savoir si une expression est un polynome

Publié : lun. déc. 27, 2010 7:49 am
par parisse
Voila un petit programme Xcas qui teste si une expression f est polynomiale par rapport à x (je n'ai pas beaucoup testé...

Code : Tout sélectionner

est_poly(f,x):={
  local j,s,n;
  si type(f)!=DOM_SYMBOLIC ou !contains(lname(f),x) alors return 1; fsi;
  s:=sommet(f);
  si !contains(['+','*','neg','^'],s) alors return 0; fsi;
  n:=nops(f);
  pour j de 1 jusque n faire
    si !est_poly(f[j],x) alors return 0; fsi;
  fpour;
  si s=='^' alors return type(f[2])==DOM_INT fsi;
  return 1;
}
Pour les solutions trigo, il y a la commande all_trig_solutions:=0 ou 1

Re: Savoir si une expression est un polynome

Publié : sam. janv. 15, 2011 10:36 am
par magicvinni
Merci beaucoup !
Je teste ça tout de suite

Vincent