signe expression trigo

Utilisation de Xcas

Modérateur : xcasadmin

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

signe expression trigo

Message par alb » lun. nov. 06, 2017 9:47 pm

delta:=(1-2*cos(alpha))^2-4;
factoriser(delta);
purge(alpha);
sign(2*cos(alpha)-3); // renvoie -1 ok
supposons(-2*pi/3<alpha<2*pi/3);
sign(delta); // renvoie -1 ok
supposons(2*pi/3<alpha<4*pi/3);
sign(delta); // renvoie sign((-2*cos(alpha)+1)^2-4) au lieu du 1 attendu

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

Re: signe expression trigo

Message par parisse » mar. nov. 07, 2017 8:06 am

Je ne vois pas comment ameliorer sans risquer d'introduire plein de bugs. Il y a une ligne de code qui teste specifiquement que la "variable" etendue dont depend polynomialement l'expression est cos ou sin, et un test d'annulation fait pour la valeur la plus grande de l'intervalle de valeurs possibles, pas la plus petite (donc 1 dans le 1er cas et -1/2 dans le 2eme cas). Tout ca doit correspondre a des corrections (non optimales) de bugs de sign dont je n'ai malheureusement pas garde la trace

Code : Tout sélectionner

alg_ext.cc:...
       if (strict && (v0.is_symb_of_sommet(at_sin) || v0.is_symb_of_sommet(at_cos)))
	    return 0;
Le systeme n'a pas ete concu pour gerer les inegalites strictes, du coup meme avec des inegalites strictes, ca peut etre des inegalites larges qui sont considerees... (si on met 3*pi/4<=alpha<=5*pi/4, tout va bien!)

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

Re: signe expression trigo

Message par alb » mar. nov. 07, 2017 10:15 am

bon je vais rester classique:

delta:=(1-2*cos(alpha))^2-4;
factoriser(delta);
supposons(-pi<alpha<=pi);
solve(2*cos(alpha)-3<0,alpha);
solve(2*cos(alpha)+1<=0,alpha);
solve(2*cos(alpha)+1>=0,alpha);
solve(delta=0,alpha);
solve(delta>0,alpha);
solve(delta<0,alpha);

Répondre