transformer ln(8) en 3*ln(2)
Modérateur : xcasadmin
transformer ln(8) en 3*ln(2)
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.
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.
Re: transformer ln(8) en 3*ln(2)
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...
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...
Re: transformer ln(8) en 3*ln(2)
Je proposerai aux élèves de charger ce petit programme qui leur permettra de vérifier seuls leurs simplifications de ln
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.
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;
}
:;
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.
Re: transformer ln(8) en 3*ln(2)
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.
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.
Re: transformer ln(8) en 3*ln(2)
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
sommet(L[1])=='-'; renvoie 0 je suis
E:=ln(1024)-2*ln(16)+5/6+2*pi;
L:=simplifier(op(E));
sommet(op(op(L)[1]))=='ln'; renvoie 1 je suis

sommet(L[1])=='-'; renvoie 0 je suis

Re: transformer ln(8) en 3*ln(2)
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).
Re: transformer ln(8) en 3*ln(2)
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.
+ou-ln(rationnel)
ou bien
+ou-ln(rationnel)/(entier positif) ?
Merci pour framebox, c'est parfait.
Re: transformer ln(8) en 3*ln(2)
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 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) ?
Re: transformer ln(8) en 3*ln(2)
J'ai oublié un mot dans ma question:
Est-ce que simplify(rationnel*ln(rationnel)) etc....
Est-ce que simplify(rationnel*ln(rationnel)) etc....
Re: transformer ln(8) en 3*ln(2)
ca en a tout l'air, mais je ne le garantis pas!