Page 1 sur 1

On peut toujours demander !

Publié : sam. nov. 10, 2012 11:29 am
par alb
Comme tu avais suggéré de regrouper les demandes pédagogiques dans un même topic,
voici la première de la liste ... :-)

L'idée serait d'avoir une fonction prenant en paramètres deux expressions E1 et E2 et qui renverrait si c'est possible
l'expression E1 sous la forme E2*E3 mais avec E3 le moins modifiée possible (pas de simplification, pas de factorisation).
Je m'explique:

Exemple1:
E1:=(x^2-1)*(2*x+3)-(x+1)*(7-5*x)
E2:=x+1
factoriser_par(E1,E2) renverrait (x+1)*((x-1)*(2*x+3)-(7-5*x))

Exemple2:
E1:=exp(2*x)-exp(x)
E2:=exp(x)
factoriser_par(E1,E2) renverrait exp(x)*(exp(x)-1)

J'imagine qu'il y aurait trop de cas particuliers et que ma demande est utopique !

Re: On peut toujours demander !

Publié : sam. nov. 10, 2012 12:03 pm
par parisse
en gros tu veux
factoriser_par(a,b):=b*simplify(a/b)
mais où le simplify n'est pas "complet"?
Je ne vois pas du tout comment faire ça...

Re: On peut toujours demander !

Publié : sam. nov. 10, 2012 9:26 pm
par alb
oui c'était l'idée, généraliser cet exemple fait pour marcher:
factoriser_par(a,b):=b*somme(factor([op(a)]/b));
E1:=(x^2-1)*(2x+3)-(x+1)*(7-5x)+3*(x+1);
E2:=x+1;
factoriser_par(E1,E2);
mais qui ne marche plus si on prend par exemple:
E1:=(x^2-1)*(2x+3)-(x+1)*(7-5x)+(x+1); // (x+1) ou 1*(x+1) donne x,1
ou E1:=(x^2-1)*(x^2+x-1)-(x+1)*(7-5x)+3*(x+1); // x^2+x-1 est factorisé

Une question cependant:
somme([2x,x+3,x+5,4x]) renvoie x+3+2*x+x+5+4*x
somme([x,x+3,x+5,4x]) renvoie x+x+3+x+5+4*x
pourquoi l'inversion des deux premiers éléments dans un cas et pas dans l'autre ?

Re: On peut toujours demander !

Publié : dim. nov. 11, 2012 6:53 am
par parisse
C'est parce que x+3 est déjà une somme, donc plutot que de créer un symbolique imbriqué 2x+(x+3), ou de mettre 2x en 1er argument, 2x est ajouté en dernier argument après x et 3, c'est en effet moins couteux en temps si la liste des arguments est longue car il n'y a pas besoin de déplacer tout les arguments.

Re: On peut toujours demander !

Publié : jeu. déc. 27, 2012 8:07 am
par alb
Autre sujet.
Actuellement aire(cercle(0,1,0,3*pi/4)) renvoie pi
Est-ce possible d'avoir comme réponse l'aire du secteur 3*pi/8 ?

Re: On peut toujours demander !

Publié : jeu. déc. 27, 2012 4:18 pm
par parisse
En effet, il y a une petite étourderie dans le code

Code : Tout sélectionner

diff plot.cc plot.cc~
4730,4731c4730,4731
<       if (g._SYMBptr->feuille.type==_VECT && g._SYMBptr->feuille._VECTptr->size()>=3)
< 	return ratnormal(((*g._SYMBptr->feuille._VECTptr)[2]-(*g._SYMBptr->feuille._VECTptr)[1])*(rayon*conj(rayon,contextptr))/2);
---
>       if (g._SYMBptr->feuille.type==_VECT && g._SYMBptr->feuille._VECTptr->size()==4)
> 	return ratnormal(((*g._SYMBptr->feuille._VECTptr)[3]-(*g._SYMBptr->feuille._VECTptr)[2])*(rayon*conj(rayon,contextptr))/2);