36 votos

Estimación de Pi mediante números enteros

Me encontré con este problema en un concurso de matemáticas del instituto:

"Debes usar los enteros $1$ a $9$ y sólo la suma, la resta, la multiplicación, la división y la exponenciación para aproximar el número $\pi$ con la mayor precisión posible. Cada número entero debe utilizarse como máximo una vez. Se pueden utilizar paréntesis".

Intenté escribir un programa en MATLAB para resolver este problema, pero era muy ineficiente (fuerza bruta) y llevaba demasiado tiempo.

¿Cuál es la respuesta correcta y cómo puedo averiguarla?

EJEMPLO:

$$\pi \approx \frac {(6+8+2^3)} 7 = \frac {22} 7 \approx 3.142857$$

28voto

WilliamStam Puntos 41

Aquí hay tres aproximaciones que se me ocurrieron, simplemente sentándome y "jugando" con los números (sin necesidad de un algoritmo de fuerza bruta):

1.) $\pi \approx 3+\dfrac {(5 \times 7)^{(\large8/9)^4}} {2^6+1} = 3.1415926539$

2.) $\pi \approx \left (\dfrac{3^7} {5+8+9} -2\right)^{1/4} = 3.141592652$

3.) $\pi \approx \dfrac{7^3+2 \times 6} {(8+5) \times 9 - 4} = \dfrac {355} {113} = 3.1415929$

Estoy seguro de que hay otras soluciones por ahí, estas son sólo las primeras que se me ocurren.

25voto

Oleg567 Puntos 9849

Encuentro la fórmula, que proporciona $11$ dígitos correctos de $\pi$ (incluyendo el líder $3.$ ):

$$ \begin{array}{|c|}\hline\\ {\Large \pi \approx \;}{\huge 3 +} \dfrac {\huge 9^{^{\frac{2}{5\cdot 7} - (1+6)^{-4}}}} {\huge 8} \large = 3.1415926535 \color{Tan}{916691}..., \\ \hline \end{array}\tag{1} $$ error (desviación) es igual a $\Delta = 1.875904... \times 10^{-12}$ .


La pregunta está estrechamente relacionada con aproximación digital de $\pi$
(ver http://mathworld.wolfram.com/PiApproximations.html ), eq. $(32),(35) - (38)$ .

Otras soluciones de gran precisión (que proporcionan $10$ dígitos correctos):

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx {\Large 1+\dfrac{(6-9^{-5})^{(4+7)^{8^{-2}}}}{3}} & = 3.141592653 \color{Tan}{473482}... & (\Delta=1.163107... \times 10^{-10}); & (2) \end{array} \begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \dfrac{\huge 12^{ \frac{7-\frac{3^{-5}}{6}}{8 \cdot 9}}}{\Large 4} & = 3.141592653 \color{Tan}{437419}... & (\Delta=1.523732... \times 10^{-10}); & (3) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx {\large 56^{4^{\Large-9^{-3^{-2}}}}}-\dfrac{7-1}{8} & = 3.141592653 \color{Tan}{772701}... & (\Delta=1.829078... \times 10^{-10}); & (4) \end{array} fórmula $(4)$ parece "telescopio".

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \Bigl(4 \cdot 92^{3/8}\Bigr)^{\Large\frac{1+\frac{6}{7}}{5}} & = 3.141592653 \color{Tan}{854014}... & (\Delta=2.642208... \times 10^{-10}); & (5) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 94 \cdot \left(\dfrac{8}{13}\right)^{7} - \dfrac{5^{-6}}{2} & = 3.141592653 \color{Tan}{854369}... & (\Delta=2.645759... \times 10^{-10}); & (6) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 4-1+\dfrac{\Bigl((6-7^{-3})\cdot 9\Bigr)^{\Large 2^{-5}}}{8} & = 3.141592653 \color{Tan}{863925}... & (\Delta=2.741318... \times 10^{-10}); & (7) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{1}{7+4^{-2}} - \left(6-\dfrac{5}{8}\right)^{-9} & = 3.141592653 \color{Tan}{303244}... & (\Delta=2.865490... \times 10^{-10}); & (8) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx {\large 3+\dfrac{1-9^{\Large-(6-8^{-5})}}{7+4^{-2}}} & = 3.141592653 \color{Tan}{904056}... & (\Delta=3.142632... \times 10^{-10}); & (9) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \color{gray}{3+\dfrac{\left(5 \cdot 7\right)^{(8/9)^4}}{2^6+1}} & \color{gray}{ = 3.141592653 \color{Tan}{915932}...} & \color{gray}{ (\Delta=3.261394... \times 10^{-10});} & \color{gray}{(10)} \end{array} fórmula $(10)$ se obtiene mediante usuario14069 (citado sólo para comparar la exactitud).

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \color{gray}{3+\dfrac{1-(9-8^{-5})^{-6}}{7+4^{-2}}} & \color{gray}{= 3.141592653 \color{Tan}{916501}...} & \color{gray}{(\Delta=3.267085... \times 10^{-10});} & \color{gray}{(11)} \end{array} fórmula $(11)$ se obtiene mediante Ed Pegg , ver fuente (citado sólo para comparar la precisión).

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{75248}{9^6-1} & = 3.141592653 \color{Tan}{921421}... & (\Delta=3.316278... \times 10^{-10}); & (12) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{1-9^{-6}}{7+4^{-2}} & = 3.141592653 \color{Tan}{921922}... & (\Delta=3.321291... \times 10^{-10}); & (13) \end{array} fórmula $(13)$ parece muy fácil; contiene $7$ sólo dígitos.

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{5-4-9^{-6}}{7+\dfrac{1}{2 \cdot 8}} & = 3.141592653 \color{Tan}{921922}... & (\Delta=3.321291... \times 10^{-10}); & (13') \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{8\cdot(1-9^{-6})}{57-\dfrac{2}{4}} & = 3.141592653 \color{Tan}{921922}... & (\Delta=3.321291... \times 10^{-10}); & (13'') \end{array}

fórmulas $(13'), (13'')$ son iguales a $(13)$ pero utiliza todos los dígitos.

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\dfrac{8}{\Bigl(1+9^{-6}\Bigr)\cdot \Bigl(57-\dfrac{2}{4}\Bigr)} & = 3.141592653 \color{Tan}{922423}... & (\Delta=3.326304... \times 10^{-10}); & (14) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx {\large \dfrac{1+\Biggl(\dfrac{2^{\Large 4^{6/5}}}{9}\Biggr)^3}{8}-7} & = 3.141592653 \color{Tan}{226228}... & (\Delta= 3.635644... \times 10^{-10}); & (15) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \dfrac{3}{\dfrac{1}{4}-{\Large 7^{- \bigl(2+5^{6^{-8}}\bigr)} }}-9 & = 3.141592653 \color{Tan}{223921}... & (\Delta= 3.658712... \times 10^{-10}); & (16) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\left(8-1+(2 \cdot 5)^{4/9} \right)^{-6/7} &= 3.141592653 \color{Tan}{169312}... &(\Delta=4.204806...\times 10^{-10}); &(17) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx {\Large 3 \cdot \Bigl(1+\frac{4}{9} \Bigr)^{5^{-8^{6 \cdot 7^{-2}}}}} & = 3.141592653 \color{Tan}{160095}... & (\Delta= 4.296978... \times 10^{-10}); & (18) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx 3+\left(8-1+4^{-2}\right)^{\Large{-7^{\Large{5\cdot 6^{-9}}}}} &= 3.141592653 \color{Tan}{130264}... &(\Delta=4.595292... \times 10^{-10}); &(19) \end{array}

\begin{array}{lrrr} \phantom{WWWWWWWWWWWWW} & & & \\ \pi\approx \dfrac{7}{5}\cdot \Biggl(\Large 1 + 4^{\LARGE 2^{\Large -\frac{8-9^{-6}}{3}}}\Biggr) &= 3.141592653 \color{Tan}{021507}... &(\Delta=5.682853... \times 10^{-10}). &(20) \end{array}

Nota : fórmulas $(3) - (6), (12), (13''), (14)$ contienen concatenación de dígitos. Probablemente este truco no está permitido en el concurso/tarea.


Y me gustaría decir unas palabras sobre la famosa aproximación $\pi \approx \dfrac{355}{113}$ .
$\pi \approx \dfrac{2485}{791} = 3.141592\color{Tan}{920353}...$ ( $7$ dígitos correctos). Contiene $1$ sólo la operación.

Y sobre la belleza de la fracción $\dfrac{355}{113}$ :
que bonito pandigital finito fracciones continuas generalizadas para $\pi$ : $$ \begin{array}{|ccc|} \hline & \Large\pi & \\ & \wr\wr & \\ 2+\cfrac{9}{5+\cfrac{4}{1+\cfrac{3}{7+\cfrac{6}{8\color{#DDDDDD}{\small +0}}}}} & = \dfrac{355}{113} = & 3+\cfrac{1}{6+\cfrac{9}{8+\cfrac{4}{5+\cfrac{7}{2\color{#DDDDDD}{\small +0}}}}} \\ \hline \end{array}$$

13voto

Marko Riedel Puntos 19255

Estas fórmulas parecían intrigantes, así que decidí intentar calcular algunas de ellas yo mismo con Maple, utilizando la aproximación $$\pi \approx \frac{355}{113} \approx 3.1415929.$$

El algoritmo utiliza una programación dinámica en la que los nodos son los subconjuntos de $\{1,2,3,\ldots,8,9\}$ y el valor correspondiente es una tabla de todos los valores enteros menores que algún máximo que puede ser expresado por una fórmula legal como se especifica en la definición del problema utilizando los dígitos del subconjunto. El paso recursivo divide el argumento en dos conjuntos y combina los valores obtenidos para ellos utilizando los cinco operadores que se dan. En este caso he utilizado $360$ como valor máximo porque $355<360.$ Finalmente para expresar una fracción iteramos sobre todas las 2 particiones de los nueve dígitos, buscando encontrar un par donde el primer subconjunto pueda expresar el numerador y el segundo el denominador. Las aproximaciones no se limitan a $\pi$ se puede intentar para cualquier fracción con numerador y denominador pequeños.

Estas son algunas de las fórmulas que he obtenido: $$\frac{1 \times \left(2 \times 6 + {7}^{3}\right)}{5 + 9 \times \left(4 + 8\right)}$$ $$\frac{1 + 5 + 6 + {7}^{3}}{{9}^{2} + 4 \times 8}$$ $$\frac{5 \times \left(8 + 9 \times \left(1 + 6\right)\right)}{{7}^{2} + {4}^{3}}$$ $$\frac{5 \times \left(\left(8 \times 9\right) - 1\right)}{7 - \left(\frac{4 - \left({6}^{3}\right)}{2}\right)}$$ $$\frac{4 + 8 + {7}^{3}}{1 - \left(9 - \left({\left(5 + 6\right)}^{2}\right)\right)}$$ $$\frac{\left(2 + 3\right) \times \left(\left(8 \times 9\right) - 1\right)}{\left(4 \times \left(5 \times 6\right)\right) - 7}$$ $$\frac{5 \times \left(\left(6 \times \left(3 + 9\right)\right) - 1\right)}{\left({\left(4 + 7\right)}^{2}\right) - 8}$$ $$\frac{\left(6 - 1\right) \times \left(8 + 7 \times 9\right)}{{2}^{5} + {3}^{4}}$$

He aquí algunos ejemplos obtenidos al activar la concatenación: $$ \frac{5 \times 71}{2 - \left(3 - \left(6 + 9 \times \left(4 + 8\right)\right)\right)}$$ $$ \frac{71 \times \left(2 + 3\right)}{4 + 5 + 6 + 98}$$ $$ \frac{5 \times \left(73 - 2\right)}{6 - \left(1 - \left(9 \times \left(4 + 8\right)\right)\right)}$$ $$ \frac{5 \times \left(9 + 62\right)}{1 + 8 \times \left(3 + 4 + 7\right)}$$ $$ \frac{5 \times \left(7 + {8}^{2}\right)}{1 + 3 \times 6 + 94}$$ $$ \frac{\left(7 \times 52\right) - 9}{1 - \left(8 \times \left(4 - \left(3 \times 6\right)\right)\right)}$$ $$ \frac{5 \times \left(7 + 64\right)}{1 - \left(9 - \left({\left(3 + 8\right)}^{2}\right)\right)}$$ $$ \frac{\left(51 \times \left(3 + 4\right)\right) - 2}{8 + 7 \times \left(6 + 9\right)}$$ $$ \frac{31 + 9 \times \left({6}^{2}\right)}{4 \times 7 + 85}$$ $$ \frac{\left(9 - 4\right) \times \left(72 - 1\right)}{83 + 5 \times 6}$$ $$ \frac{5 \times \left(8 + 64 - 1\right)}{92 + 3 \times 7}$$ $$ \frac{\left(9 \times 41\right) - \left(6 + 8\right)}{7 + 2 \times 53}$$ $$ \frac{4 + 8 + {7}^{\left(\frac{9}{3}\right)}}{51 + 62} $$ $$ \frac{5 + 7 \times \left(\left(6 \times 9\right) - 4\right)}{31 + 82}$$

Los siguientes ejemplos tienen una propiedad especial que se deja al lector que descubra. $$ \frac{71 \times \left(2 + 8\right)}{4 + 3 \times \left(9 + 65\right)}$$ $$ \frac{71 \times \left(4 + 6\right)}{2 \times \left(3 \times 5 + 98\right)}$$ $$ \frac{5 \times \left(61 + {3}^{4}\right)}{{2}^{7} + 98}$$ $$ \frac{\left(9 \times \left(84 - 5\right)\right) - 1}{\left(3 \times 76\right) - 2}$$ $$ \frac{6 - \left(8 \times \left(4 - 92\right)\right)}{1 + 3 \times 75}$$ $$ \frac{\left(4 + 6\right) \times \left(8 + 7 \times 9\right)}{1 + {\left(3 \times 5\right)}^{2}}$$

Por último, pero no menos importante, tenemos $$\frac{3 \times \left(5 \times 71\right)}{9 + \left(8 \times 42\right) - 6}$$ $$\frac{71 \times \left(6 + 9\right)}{2 + 5 + 4 \times 83}$$ $$\frac{41 + 8 \times \left({2}^{7}\right)}{{3}^{5} + 96}$$ $$\frac{\left(6 + 9\right) \times \left(72 - 1\right)}{\left(8 \times 43\right) - 5}$$ $$\frac{3 \times \left(5 \times \left(\left(8 \times 9\right) - 1\right)\right)}{\left({7}^{\left(\frac{6}{2}\right)}\right) - 4}$$ $$\frac{1 + \left(5 + 9\right) \times \left(82 - 6\right)}{\left({7}^{3}\right) - 4}.$$

Sería interesante saber si la siguiente mejor aproximación, que según Wikipedia es $$\frac{52163}{16604} \approx 3.141592387$$ puede representarse de esta manera, si existe otra fracción con un denominador menor que produzca más lugares correctos y si hay que añadir la concatenación al conjunto de operadores para que esto ocurra.

Este es el código del programa Maple. ¡Que lo disfrutes!

with(combinat,powerset);

maxval := 360;

repr :=
proc(s)
    local d, f, dstr, fstr, dtstr, ftstr, res, aprob, bprob, x, y,
    leftset, rightset, check, typeset;
    option remember;

    res := table();

    if nops(s) = 1 then
        d := op(1,s);
        res\[d\] := \[d, sprintf("%d", d), sprintf("%d", d)\];

        return op(res);
    fi;

    check :=
    proc(val)
        if type(res\[val\], list) then return false; fi;
        if type(val, integer) and abs(val)<maxval then return true fi;

        return false;
    end proc;

    typeset :=
    proc(dtstr, what, ftstr)
        local pard, parf;

        if length(dtstr)=1 then
            pard := dtstr;
        else
            pard := sprintf("\\\\left(%s\\\\right)", dtstr);
        fi;
        if length(ftstr)=1 then
            parf := ftstr;
        else
            parf := sprintf("\\\\left(%s\\\\right)", ftstr);
        fi;

        if evalb(what = "+") then
            return sprintf("%s + %s", dtstr, ftstr);
        elif evalb(what = "-") then
            return sprintf("%s - %s", pard, parf);
        elif evalb(what = "\*") then
            return sprintf("%s \\\\times %s", pard, parf);
        elif evalb(what = "/") then
            return
            sprintf("\\\\frac{%s}{%s}", dtstr, ftstr);
        fi;

        return sprintf("{%s}^{%s}", pard, parf);
    end proc;

    for leftset in powerset(s) do
        rightset := s minus leftset;

        if nops(leftset)=0 or nops(rightset)=0 then next fi;

        aprob := repr(leftset);
        bprob := repr(rightset);

        if nops(op(op(res))) = 2\*maxval-1 then next fi;

        for x in op(aprob) do for y in op(bprob) do
            d := x\[1\]; dstr:= x\[2\]; dtstr := x\[3\];
            f := y\[1\]; fstr:= y\[2\]; ftstr := y\[3\];

            if check(d+f) then
                res\[d+f\] := \[d+f, sprintf("(%s) + (%s)", dstr, fstr),
                            typeset(dtstr, "+", ftstr)\];
            fi;

            if check(d-f) then
                res\[d-f\] := \[d-f, sprintf("(%s) - (%s)", dstr, fstr),
                            typeset(dtstr, "-", ftstr)\];
            fi;

            if check(d\*f) then
                res\[d\*f\] := \[d\*f, sprintf("(%s) \* (%s)", dstr, fstr),
                            typeset(dtstr, "\*", ftstr)\];
            fi;

            if f <> 0 and check(d/f) then
                res\[d/f\] := \[d/f, sprintf("(%s) / (%s)", dstr, fstr),
                            typeset(dtstr, "/", ftstr)\];
            fi;

            if not(d=0 or f=0) and evalf(abs(f\*log(d))<10)
            and check(d^f) then
                res\[d^f\] := \[d^f, sprintf("(%s) ^ (%s)", dstr, fstr),
                            typeset(dtstr, "^", ftstr)\];
            fi;

        od od;
    od;

    return op(res);
end;

approx\_frac :=
proc(what)
    local allset, numerset, denomset, x, y,
    xt, yt, xpair, ypair;

    allset := {seq(k, k=1..9)};

    for numerset in powerset(allset) do
        denomset := allset minus numerset;

        if nops(numerset)>=1 and nops(denomset)>=1 then
            xt := repr(numerset);
            yt := repr(denomset);

            xpair := xt\[numer(what)\];
            ypair := yt\[denom(what)\];

            if type(xpair, list) and type(ypair, list) then
                printf("(%s) / (%s) %a %a\\n\\\\frac{%s}{%s}\\n\\n",
                       xpair\[2\], ypair\[2\],
                       xpair\[1\]/ypair\[1\], evalf(xpair\[1\]/ypair\[1\]),
                       xpair\[3\], ypair\[3\]);
            fi;
        fi;
    od;
end;

10voto

Marko Riedel Puntos 19255

He modificado mi programa para incluir racionales con denominadores pequeños como valores intermedios.

Utilizando la aproximación $$\pi\approx \sqrt[4]{\frac{2143}{22}} \approx 3.14159265$$ que también tiene nueve decimales y aparentemente se debe a Ramanujan ( Wikipedia ), obtenemos el resultado $$ \left(\left(\frac{{3}^{6}}{7 + \frac{8 - 5}{9}}\right) - 2\right)^{1/4}$$

Se trata de una variación de la expresión mostrada en el PO, pero calculada con una intervención humana limitada.

Si permitimos la concatenación de dígitos, obtenemos el siguiente bonito resultado: $$\left(97 + 3 \times \left(\frac{6}{52 - 8}\right)\right)^{1/4}.$$ Otra de este tipo es $$\left(3 + 96 - \left(\frac{5}{2 + \frac{8}{7}}\right)\right)^{1/4}.$$

Otras fórmulas de este tipo son $$\left(97 + \frac{\frac{3}{5 - \left(\frac{8}{6}\right)}}{2}\right)^{1/4} $$ $$\left(98 - \left(\frac{\frac{7}{2} + 3}{6 + 5}\right)\right)^{1/4} $$ $$\left(\left(\frac{{\left(8 - 5\right)}^{6}}{\frac{3}{9} + 7}\right) - 2\right)^{1/4}$$

El código del algoritmo modificado es el siguiente:

with(combinat,powerset);

maxnumer := 2200;
denomset := {1, 2, 3, 5, 11, 22};

maxv\_comp\_const :=
proc()
    local s, d;

    s:= {};

    for d in denomset do
        s := s union {seq(k/d, k=0..maxnumer)};
    od;

    nops(s);
end proc;

maxcount := maxv\_comp\_const();

repr :=
proc(s)
    local d, f, dstr, fstr, dtstr, ftstr, res, aprob, bprob, x, y,
    leftset, rightset, check, typeset;
    global maxcount;
    option remember;

    res := table();

    if nops(s) = 1 then
        d := op(1,s);
        res\[d\] := \[d, sprintf("%d", d), sprintf("%d", d)\];

        return op(res);
    fi;

    check :=
    proc(val)
        global maxnumer, denomset;

        if not(type(val, rational)) then return false; fi;

        if val<0 then return false; fi;
        if type(res\[val\], list) then return false; fi;

        if numer(val)<=maxnumer and denom(val) in denomset then
            return true
        fi;

        return false;
    end proc;

    typeset :=
    proc(dtstr, what, ftstr)
        local pard, parf;

        if length(dtstr)=1 then
            pard := dtstr;
        else
            pard := sprintf("\\\\left(%s\\\\right)", dtstr);
        fi;
        if length(ftstr)=1 then
            parf := ftstr;
        else
            parf := sprintf("\\\\left(%s\\\\right)", ftstr);
        fi;

        if evalb(what = "+") then
            return sprintf("%s + %s", dtstr, ftstr);
        elif evalb(what = "-") then
            return sprintf("%s - %s", pard, parf);
        elif evalb(what = "\*") then
            return sprintf("%s \\\\times %s", pard, parf);
        elif evalb(what = "/") then
            return
            sprintf("\\\\frac{%s}{%s}", dtstr, ftstr);
        fi;

        return sprintf("{%s}^{%s}", pard, parf);
    end proc;

    for leftset in powerset(s) do
        rightset := s minus leftset;

        if nops(leftset)=0 or nops(rightset)=0 then next fi;

        aprob := repr(leftset);
        bprob := repr(rightset);

        if nops(op(op(res))) >= maxcount then next fi;

        for x in op(aprob) do for y in op(bprob) do
            d := x\[1\]; dstr:= x\[2\]; dtstr := x\[3\];
            f := y\[1\]; fstr:= y\[2\]; ftstr := y\[3\];

            if check(d+f) then
                res\[d+f\] := \[d+f, sprintf("(%s) + (%s)", dstr, fstr),
                            typeset(dtstr, "+", ftstr)\];
            fi;

            if check(d-f) then
                res\[d-f\] := \[d-f, sprintf("(%s) - (%s)", dstr, fstr),
                            typeset(dtstr, "-", ftstr)\];
            fi;

            if check(d\*f) then
                res\[d\*f\] := \[d\*f, sprintf("(%s) \* (%s)", dstr, fstr),
                            typeset(dtstr, "\*", ftstr)\];
            fi;

            if f <> 0 and check(d/f) then
                res\[d/f\] := \[d/f, sprintf("(%s) / (%s)", dstr, fstr),
                            typeset(dtstr, "/", ftstr)\];
            fi;

            if not(d=0 or f=0) and evalf(abs(f\*log(d))<10)
            and check(d^f) then
                res\[d^f\] := \[d^f, sprintf("(%s) ^ (%s)", dstr, fstr),
                            typeset(dtstr, "^", ftstr)\];
            fi;

        od od;
    od;

    return op(res);
end;

approx\_pi :=
proc()
    local what, allset, allrepr, numerset, denomset, x, y,
    xt, yt, xpair, ypair;

    what := 2143/22;
    allset := {seq(k, k=1..9)} minus {1,4};
    allrepr := repr(allset);

    xpair := allrepr\[what\];
    if type(xpair, list) then
        printf("(%s)^(1/4) %a %a\\n", xpair\[2\],
               xpair\[1\]^(1/4), evalf(xpair\[1\]^(1/4)));
        printf("\\\\left(%s\\\\right)^{1/4}\\n\\n", xpair\[3\]);
    fi;
end;

6voto

Anthony Shaw Puntos 858

$$ \frac{71\times5}{63\times2-9-8+4}=\frac{355}{113}=3.141592\color{#A0A0A0}{92} $$

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X