simplification d'expression et contrainte sur les variables

Utilisation de Xcas

Modérateur : xcasadmin

fred
Messages : 46
Inscription : mer. sept. 09, 2009 7:29 pm

simplification d'expression et contrainte sur les variables

Message par fred » mer. avr. 22, 2015 8:41 am

bonjour
Je travaille sur un sangaku : un triangle ABC rectangle en C coupé en 2 par la hauteur issue de l'angle droit (H est le pied de la hauteur).
Les trois cercles inscrits à chacun des 3 triangles.
Je sais faire les calculs "à la main", mais je veux tester des possibilités de Xcas pour le présenter à des collègues lors d'un stage.

Je voulais que Xcas calcule la somme des rayons des cercles inscrits. Suivant la construction utilisée pour définir mon triangle rectangle ABC, Xcas fait plus ou moins la tête ! (quitte à fermer sans préavis !)
Le calcul des aires des disques est inexploitable...

Je prépare alors mes formules (c'est facile à la main, car la formule qui donne le rayon en fonction des côtés des simple dans le cas d'un triangle rectangle) et j'obtiens des expressions à simplifier.
J'aimerais que dans les expressions, Xcas regroupe les termes en "a^2"et "b^2" et que "a^2 + b^2" soit simplifiée en "c^2" de même avec "ca" (longueur AH) et "cb" (longueur BH), il faudrait regrouper les termes et remplacer "ca+cb" par "c".
Je pensais utiliser la fonction subst mais elle remplace une variable par une valeur numérique.
Est-ce possible ? (si oui, de façon assez simple pour donner envie à des collègues d'utiliser Xcas ;-) )
Merci

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

Re: simplification d'expression et contrainte sur les variab

Message par parisse » mer. avr. 22, 2015 12:07 pm

on ne peut pas remplacer ca+cb par c, sauf en remplacant ca par c-cb ou cb par c-ca.
Sinon, pour eviter que les calculs ne soient trop couteux (surtout avec des cercles inscrits qui font intervenir des racines carrees differentes), il est conseille de simplifier au maximum le probleme a rotation/homothetie pres. Ce qui donne par exemple

Code : Tout sélectionner

assume(c=2); // pour la figure
A:=point(0);
B:=point(1);
C:=point(0,c);
T:=triangle(A,B,C);
H:=inter_unique( hauteur(A,B,C),segment(B,C));
U:=triangle(A,H,C);
V:=triangle(A,H,B);
t:=rayon(inscrit(T));
u:=rayon(inscrit(U));
v:=rayon(inscrit(V));
simplify(t+u+v);
aT:=aire(inscrit(T));
aU:=aire(inscrit(U));
aV:=aire(inscrit(V));
simplify(aT+aU+aV);
je ne sais pas ce que c'est cense donner...

fred
Messages : 46
Inscription : mer. sept. 09, 2009 7:29 pm

Re: simplification d'expression et contrainte sur les variab

Message par fred » jeu. avr. 23, 2015 5:56 am

Bonjour
Merci pour la réponse, c'est en gros ce que j'avais fait :
dans une fenêtre de géométrie (le triangle ABC est rectangle)

Code : Tout sélectionner

A:=point(-1,0)
B:=point(1,0)
cAB:=circle(A,B)
assume(t=[1.2471975512,-10.0,10.0,0.0])
C:=element(cAB,t)
H:=point(abscissa(C),0)
cAHC:=incircle(A,H,C)
cBHC:=incircle(B,H,C)
cABC:=incircle(A,B,C)
puis dans des lignes de calcul

Code : Tout sélectionner

rAHC:=radius(cAHC)
rBHC:=radius(cBHC)
rABC:=radius(cABC)
* premier soucis,le rayon du cercle inscrit à ABC contient des rootof que je ne sais pas exploiter, donc je travaille "à la main" pour redéfinir ce rayon

Code : Tout sélectionner

rABC:=2*sin(t)/(2+distance(B,C)+distance(A,C))
simplifier(rAHC^2+rBHC^2-rABC^2)
a1:=normal(area(cAHC))
a2:=normal(area(cBHC))
a3:=normal(area(cABC))
* nouveau soucis : l'aide du disque est exprimée à l'aide de rootof...

1) Pour ce problème j'ai en fait plus vite fait de travailler "à la main" qu'avec Xcas ?
2) Il n'y a donc pas de méthode pour remplacer une expression de la forme "a^2 + b^2" par "c^2" dans une expression plus complexe ?

--- Hors sujet initial ---
3) Je ne sais pas pourquoi quand j'exporte "comme texte Xcas", j'obtiens un fichier avec les commandes en anglais ?
4) Peut-on récupérer les commandes ET leurs résultats dans un fichier texte ?
Merci

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

Re: simplification d'expression et contrainte sur les variab

Message par parisse » jeu. avr. 23, 2015 6:21 am

Votre paramétrisation n'est pas rationnelle, C vaut exp(i*t), ce qui complique les calculs (on doit manipuler des sin(t) et cos(t) avec sin^2+cos^2=1). En remplaçant par C:=point((1+i*t)/(1-i*t)), les calculs sont beaucoup plus simples. Malheureusement le point ne se déplace alors plus régulièrement sur tout le cercle, c'est pour cela que j'ai conservé la paramétrisation trigonométrique avec assume. Une solution intermédiaire est de faire
C:=halftan(trig2exp(element(cAB,t)))
On ne peut pas empêcher les rootof, c'est la seule façon algorithmique que je connaisse de simplifier une expression contenant des racines carrées (plus généralement des extensions algébriques).
Il n'y a pas de méthode pour remplacer a^2+b^2 par c^2, par contre on peut remplacer a^2 par c^2-b^2 (subst(expression,a^2=c^2-b^2)).
La sauvegarde des fichiers de Xcas se fait avec les commandes en anglais pour permettre d'échanger des fichiers avec des utilisateurs en une autre langue. Il n'y a pas de possibilité de sauvegarder les réponses pour le moment (ça se fait uniquement au format session Xcas)

Répondre