Page 1 sur 1

Fonctions rationnelles

Publié : lun. mars 09, 2009 9:14 pm
par magicvinni
Bonjour,

Je cherche à faire une procédure qui compare 2 fonctions rationnelles, et je voudrais qu'elle me retourne faux pour par exemple :
f1=(x-1)/(x^2-1) et f2(x)=1/(x+1) dans la mesure où elles n'ont pas le m^me ensemble définition, avez-vous des idées ? Car pour XCas, f1=f2

Merci,

Vincent

Publié : mar. mars 10, 2009 7:38 am
par parisse
On doit pouvoir construire une telle fonction en utilisant getDenom qui renvoie le denominateur d'une expression non simplifie. Ensuite le test a construire sur getDenom peut varier, par exemple si on cherche une dependance par rapport a une variable x:

Code : Tout sélectionner

test_eq(f1,f2,x):={
  if (normal(f1-f2)!=0) return false;
  return diff(normal(getDenom(f1)/getDenom(f2)),x)==0;
}
Attention, il faut que f1 et f2 soient deja reduits sous forme d'une unique fraction.[/code]

Publié : mar. mars 10, 2009 1:09 pm
par magicvinni
Bonjour,

Merci de ta réponse, en fait c'est ce que j'avais fait comme essai, mais getDenom, ne fonctionne en effet que si on a déjà une fonction rationnelle et pas un truc du genre 1/(x-1)+3/x, du coup si on veut le faire il faut utiliser normal avant et du coup il simplifie :(

Publié : mar. mars 10, 2009 2:07 pm
par parisse
oui, si on veut eviter la simplification il faut ecrire soi-meme un programme de reduction au meme denominateur sans simplification. Ca doit etre faisable avec une procedure recursive, en utilisant le fait que pour une expression f (type(f)==DOM_SYMBOLIC), f[0] designe l'opérateur (qu'on peut comparer avec +,neg,*,inv) et f[1], ..., f[size(f)] désignent les arguments de l'opérateur (x-y est codé x + neg(y) et x/y est codé x*inv(y), + et * peuvent avoir plusieurs args). Mais ce n'est pas un prog tout simple...

Publié : mar. mars 10, 2009 4:50 pm
par magicvinni
OK, merci de ta réponse rapide, je vais peut-être m'y coller.

J'ai une autre question si on tape 2(x-5)^2+8 , la multiplication n'est pas prise en compte, existe-il un procédure pour ajouter les * ? (En fait je suis ne train de gérer des réponses d'élèves et je ne veux pas les obliger à mettre le *).

merci

Vincent

Publié : mar. mars 10, 2009 6:17 pm
par parisse
En y réfléchissant, je vais peut-etre modifier getDenom et getNum pour mettre les expressions rationnelles sous forme d'une fraction non simplifée. Ca serait cohérent avec leur fonctionnalité.
Par contre pour 2(x-5)^2, ça nécessiterait de changer les règles grammaticales du parser, et je n'ai pas trop envie de le faire, j'ai trop peur d'introduire des bugs. D'autant plus que en général, il faut explicitement indiquer le *, le cas de 2x étant simplement une tolérance.

Publié : mar. mars 10, 2009 6:24 pm
par magicvinni
OK, merci, je vais donc programmer l'ajout du * à la main depuis le php.

Pour ce qui est des modifs à venir de getDonom et autres, je me posais une question justement, j'ai (après un an de galère) à réussit à installer Giac via php sur le serveur pédagogique de mon académie...Pour mettre une version à jour, il faut recommencer toute l'installation ou c'est "facile" ?

Merci pour ta disponibilité

Vincent

Publié : mar. mars 10, 2009 6:53 pm
par parisse
Je pense qu'il n'y a qu'à mettre à jour l'exécutable et/ou la librairie dynamique. Ca devrait donc etre plus simple. Jean-Pierre Branchard devrait pouvoir répondre mieux que moi!