Question

Je suis à la recherche d'un moyen automatisé pour transformer une valeur décimale en une fraction dans la calculatrice PARI / GP (gp). Par exemple, je veux tourner 0,759765625 en 389/512. Je sais que je peux le faire manuellement en tapant « 759765625/10 ^ 9 », mais je voudrais un moyen plus facile, comme « Rationaliser (0,759765625); » fonctionnerait dans Maxima.

Si elle ne peut pas faire directement, peut-être il y a une fonction pour compter le nombre de décimales? Je pourrais soulever 10 au résultat de cette fonction. (La fonction devrait compter premier décimales de 0s pour être utile.)

Était-ce utile?

La solution

Dans pari 2.5, vous pouvez utiliser bestappr (x) directement, sans préciser le supplément nombre de chiffres argument. Il utilisera tous les chiffres disponibles à l'interne:

? bestappr(Pi)
%1 = 17004845848539028973023/5412810546621363616752

Autres conseils

Utilisez la fonction bestappr (); pour l'exemple donné, utiliser bestappr (0.759765625,10 ^ 9). (Réponse avec la permission de la liste de diffusion PARI / GP).

a encore l'inconvénient que le nombre de décimales doit être spécifiée manuellement, mais cela peut être surmonté: le second paramètre à bestappr () peut être une très grande puissance de 10, plus grande que la plus longue décimale que vous aurez jamais besoin de "rationaliser".

Attention: assurez-vous de définir la précision suffisante avant d'appeler bestappr, en utilisant la commande \ p

.

Deux grandes façons de le faire:

a) utiliser lindep:

x=Pi;digits=7;l=lindep([x,1],digits);-l[2]/l[1]

b) l'utilisation continue des fractions en arrêtant chaque fois qu'un grand quotient partiel est rencontré (ci-dessous, je fixe la limite à 1000):

x=Pi;maxquot=1000;p0=0;p1=1;q0=1;q1=0;a=floor(x);while(a<maxquot,p2=a*p1+p0;q2=a*q1+q0;p0=p1;p1=p2;q0=q1;q1=q2;x=1/frac(x);a=floor(x));p1/q1
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top