transformer ln(8) en 3*ln(2)

Utilisation de Xcas

Modérateur : xcasadmin

Répondre
alb
Messages : 1331
Inscription : ven. août 28, 2009 3:34 pm

transformer ln(8) en 3*ln(2)

Message par alb » sam. nov. 27, 2010 7:55 pm

Bonsoir,
Contrairement à simplifier qui transforme 4*ln(2)+3*ln(2) en ln(128), factor ou normal donne 7*ln(2).
En revanche il ne parait pas possible d'obtenir 7*ln(2) à partir de 4*ln(2)+ln(8)
Est-ce réaliste d'imaginer une suite d'instructions générales qui pour ce cas particulier renverrait 7*ln(2) ?
Autrement dit comment transformer par une méthode générale ln(8) en 3*ln(2) ?
Je suppose que la question a déjà été posée mais je n'en retrouve pas la trace.

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

Re: transformer ln(8) en 3*ln(2)

Message par parisse » dim. nov. 28, 2010 8:17 am

Pour 4*ln(2)+ln(8), tsimplify marche
Pour ln(8) en 3*ln(2), il n'y a pas de commandes automatiques (manuellement on peut faire ifactor dans l'argument du ln puis texpand).
edit-> meme manuellement ca ne marche pas parce que le 2^3 est évalué en 8. Il faudrait le quoter. tsimplify(ln('2^3')) renvoie bien 3*ln(2).
On pourrait modifier lnexpand, mais cela nécessiterait de savoir quand factoriser des entiers...

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

Re: transformer ln(8) en 3*ln(2)

Message par alb » dim. nov. 28, 2010 4:43 pm

Je proposerai aux élèves de charger ce petit programme qui leur permettra de vérifier seuls leurs simplifications de ln

Code : Tout sélectionner

Ln_entier(N):={
local L,s;
L:=ifactors(N);
s:=size(L);
return sum(L[2k+1]*ln(L[2k]),k,0,s/2-1);
}
:;
Ln(N):={
si type(N)==DOM_INT alors return Ln_entier(N);fsi;
si type(N)==DOM_RAT alors
  return Ln_entier(numer(N))-Ln_entier(denom(N));sinon ln(N);
fsi;
}
:;
Ln(1024);tsimplify(ln(1024)); renvoie 10*ln(2),ln(1024)
tsimplify(5*Ln(125/(456*19))-4*Ln(490)+8*Ln(1024/405)+3/2*Ln(1024)); renvoie -10*ln(19)+76*ln(2)-37*ln(3)+3*ln(5)-8*ln(7)
alors que
tsimplify(5*ln(125/(456*19))-4*ln(490)+8*ln(1024/405)+3/2*ln(1024)); renvoie 76*ln(2)-37*ln(3)-5*ln(361)-4*ln(49)+3*ln(5)
Peut-on expliquer pourquoi 361=19^2 et 49=7^2 n'ont pas été simplifiés ?

Question sans rapport:
Est-ce que l'option Framebox de cfg est déjà opérationnelle ? non pas que ce soit urgent mais j'ai un doute sur Quit and update.

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

Re: transformer ln(8) en 3*ln(2)

Message par parisse » dim. nov. 28, 2010 6:05 pm

tsimplify détermine s'il existe des relations entre les arguments de ln en calculant le PGCD des arguments (ce qui ne pose pas les problèmes d'efficacité de la factorisation), c'est pour ça qu'on obtient ce type de résultats.
Pour framebox, c'est partiellement implémenté, mais je pense faire une mise à jour demain qui devrait améliorer la 3-d (où l'option framebox servira à faire apparaitre ou non le maillage et les valeurs). Update and quit ne marche bien que sur debian compatible (il faut alors utiliser testing pour giac), sous windows il semble que ça dépend des versions.

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

Re: transformer ln(8) en 3*ln(2)

Message par alb » dim. nov. 28, 2010 9:03 pm

Un truc qui m'échappe:
E:=ln(1024)-2*ln(16)+5/6+2*pi;
L:=simplifier(op(E));
sommet(op(op(L)[1]))=='ln'; renvoie 1 je suis :D
sommet(L[1])=='-'; renvoie 0 je suis :shock:

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

Re: transformer ln(8) en 3*ln(2)

Message par parisse » lun. nov. 29, 2010 8:16 am

C'est a cause du - binaire et du - unaire. Ici il faut utiliser sommet(L[1])==neg (c'est vrai qu'a l'affichage c'est trompeur).

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

Re: transformer ln(8) en 3*ln(2)

Message par alb » mer. déc. 01, 2010 6:46 pm

Une expression du type rationnel*ln(rationnel) est-elle toujours évaluée sous l'une des deux formes suivantes:
+ou-ln(rationnel)
ou bien
+ou-ln(rationnel)/(entier positif) ?
Merci pour framebox, c'est parfait.

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

Re: transformer ln(8) en 3*ln(2)

Message par parisse » mer. déc. 01, 2010 7:25 pm

alb a écrit :Une expression du type rationnel*ln(rationnel) est-elle toujours évaluée sous l'une des deux formes suivantes:
+ou-ln(rationnel)
ou bien
+ou-ln(rationnel)/(entier positif) ?
Non, pas forcément, il faut se méfier de l'affichage qui réécrit les produits. Par exemple 2/3*ln(5) devient est codé '*'(2,inv(3),ln(5))

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

Re: transformer ln(8) en 3*ln(2)

Message par alb » mer. déc. 01, 2010 7:39 pm

J'ai oublié un mot dans ma question:
Est-ce que simplify(rationnel*ln(rationnel)) etc....

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

Re: transformer ln(8) en 3*ln(2)

Message par parisse » jeu. déc. 02, 2010 8:29 am

ca en a tout l'air, mais je ne le garantis pas!

Répondre