14 votos

Mejor aproximación de registro 3?

Para $0 \lt x \leq 2$, puedo aproximado de $\log{x}$ usando series de Taylor. Cómo hacerlo cuando $2\lt x$?

Mi intento es que:

  1. aproximado de $\log{c}$ donde $1\lt c\lt 2$.
  2. encontrar $n \in \mathbb{N}$ tal que $c^{n} \leq x \lt c^{n+1}$.
  3. a continuación, $n\log{c} \leq \log{x}\lt (n+1)\log{c}$ !!!

Sin embargo, para la exactitud en la 3, $c$ debe ser pequeña, pero si $c$ es pequeña, $n$ es grande y no se puede calcular sin necesidad de un ordenador.

42voto

runeh Puntos 1304

Una forma de utilizar la serie que tiene es de observar que los $\log x =-\log \frac 1x$

25voto

Benjamin Puntos 101

Dado cualquier número positivo $x$ podemos definir

$u=(x-1)/(x+1)$

de modo que $x=(1+u)/(1-u)$. Entonces

$\log x = \log (1+u)-\log(1-u)$

donde la serie de Taylor converge para ambos términos en el lado derecho debido a $-1<u<+1$.

Una ventaja de este método es que para un valor dado de a $x$ la serie converge más rápido que el uso de $\log x =-\log(1/x)$, debido a que el argumento de la serie es de menor tamaño.. Por ejemplo, con $\log3$ tenemos $u=1/2$, mientras que para $\log(1/3)$ habría que utilizar la serie para calcular $\log(1-2/3)$.

1voto

Eric Towers Puntos 8212

Si la expansión de una serie de Taylor para cubrir $(0,2)$, que se expanden por todo $1$ y de la mano de los cálculos dará mejores resultados para las entradas cerca de $1$. ("Mejor" significa aquí requiere un menor número de términos de la serie para obtener un determinado error.) Toma de registros a la base de $b$, \begin{align*} \log_b 3 &= \log_b \left( b \cdot \frac{3}{b} \right) \\ &= 1 + \log_b \frac{3}{b} \text{.} \end{align*} Este último puede ser torpe a mano, especialmente para $b = \mathrm{e}$, por lo que el uso de la Marca Bennet respuesta a continuar \begin{align*} \log_b 3 &= 1 - \log_b \frac{b}{3} \end{align*} (Esta idea, la división por números enteros es fácil y dividiendo por no enteros es duro, es por eso que tenemos el proceso de racionalización de denominadores.)

Vamos a ver cómo esto va para $b = \mathrm{e}$. $\ln 3 = 1 - \ln \mathrm{e}/3$. Si tenemos $\mathrm{e} = 2.718281828 \dots$, que es relativamente fácil de recordar, dividiendo por $3$ es rápido. Sólo manteniendo un par de dígitos, $\mathrm{e}/3 = 0.906094\dots$, que es cerca de $1$. (En posteriores cálculos, sólo he mantenido esta $6$-dígitos de precisión; ningún guardia dígitos, no de precisión arbitraria nada). La serie de Taylor de $\ln$ expandido alrededor de $1$ es $$(x-1) - \frac{1}{2}(x-1)^2 + \frac{1}{3}(x-1)^3 - \frac{1}{4}(x-1)^4 + \cdots \text{.} $$ Putting $x = 0.906094$ en, la secuencia de sumas parciales es $$ 1.09391, 1.09832, 1.09859, 1.09861 $$ El valor de destino es $\ln 3 = 1.098612289 \dots$, con lo cual estamos de acuerdo a la precisión que se muestra después de sólo cuatro términos de la serie, y sólo computing $x$ a los seis lugares.

De manera más general, dice que sabe $c \approx b^p$. A continuación, $c/b^p$ está cerca de a $1$ y por lo tanto el poder de la serie de paso se está acercando rápidamente el valor que usted necesita. Luego usamos \begin{align*} \log_b c &= \log_b \left( b^p \cdot \frac{c}{b^p} \right) \\ &= p + \log_b \frac{c}{b^p} \text{ or } \\ &= p - \log_b \frac{b^p}{c} \text{.} \end{align*} De las dos últimas líneas nos escoja cualquier división es más fácil.

Una forma de encontrar una $p$ que es mejor que un entero es tener una tabla de alimentación-de-$2$ poderes de $b$, $$ \dots, b^{1/8}, b^{1/4}, b^{1/2}, b^1, b^2, b^4, b^8, \dots$$ (You can't have an infinite concrete list. Either use a finite list, or generate these powers on the fly.) If $c$ is on the list, great, done. Otherwise, $c$ will be between two members of this list, $b^{2^a} < c < b^{2^{+1}}$ and closer to one or the other. (For maximum goodness, we don't want linearly closer, we want logarithmically closer. But if you could calculate this logarithm, you wouldn't need this method, so use linearly closer.) Divide $c$ by that list member and call the quotient $c_1$. Repeat for successive quotients. We find $$c = b^{2^{a_1}} \cdot b^{2^{a_2}} \cdot \cdots \cdot b^{2^{a_k}} \cdot c_k$$ for some decreasing sequence of $a_i$s and some eventual quotient $c_k$. The $a_i$ are the binary decomposition of the power of $b$ to use above. That is, the $a_i$ are the positions of the "$1$" bits in the binary expansion of $p$ in the above. (If the $a_i$ are $3, 1, -2$, then $p = 1010.01_2 = 10.25_{10}$.) And $c_k$, which we have arranged to be as close to $1$ as your table of powers of $b$ and the precision of our calculations will permit, is $c/b^p$, lo que le cae en su serie de Taylor.

1voto

Eul Can Puntos 1353

Ampliando la respuesta por @Mark_Bennet, tenemos la serie de Maclaurin para $\ln(x)$ como sigue: $$-\ln(1-x)=\sum_{n=1}^\infty\frac{x^n}{n},\quad |x|<1$$

And since $\ln(3)=-\ln(1-\frac{2}{3})$, we get

$$\ln(3)=\sum_{n=1}^\infty\frac{(2/3)^n}{n}$$

Accelerating Convergence

But, as @J... points out, this is a pretty slowly converging series. In fact, it takes $17$ terms for only $3$ decimal places. So we'd want to accelerate the convergence of the series. One thing we can do is group together pairs of terms as follows:

$$\begin{aligned}\ln(3)&=\left(\frac{2}{3}+\frac{2^2}{2\cdot3^2}\right)+\left(\frac{2^3}{3\cdot3^3}+\frac{2^4}{4\cdot3^4}\right)+\ldots\\ &=\frac{2}{3}\left(\frac{5-1}{3(2-1)}\right)+\frac{2^3}{3^3}\left(\frac{5\cdot2-1}{3\cdot2(2\cdot2-1)}\right)+\frac{2^5}{3^5}\left(\frac{5\cdot3-1}{3\cdot3(2\cdot3-1)}\right)+\ldots\\ &=\sum_{n=1}^\infty\left(\frac{2}{3}\right)^{2n-1}\frac{5n-1}{3n(2n-1)}\\ &=\frac{1}{2}\sum_{n=1}^\infty\left(\frac{2}{3}\right)^{2n}\frac{5n-1}{n(2n-1)} \end{aligned}$$

This series gives us $3$ decimal places in only $9$ terms, so it's a bit quicker than before. But we can go further: let's label each partial sum up to $N$ as $S_N$ and examine the ratio-of-differences between $S_N$.

$$\begin{array}{|c|c|c|} \hline N & S_N & \frac{S_N-S_{N-1}}{S_{N-1}-S_{N-2}}\\ \hline 1 & 0.888\,889& - \\ \hline 2 & 1.037\,037& 0.167\\ \hline 3 & 1.078\,006& 0.277\\ \hline 4 & 1.091\,245& 0.323\\ \hline 5 & 1.095\,869& 0.349\\ \hline 6 & 1.097\,562& 0.366\\ \hline \end{array}$$

Looking at the column on the right, the ratio of differences is approaching a value about $0.4$. In fact, this trend continues for at least the next $40$ terms (but we wouldn't know that if we were really doing this by hand so shhh!). The ratio-of-differences in first series I gave is also fairly constant, at around $0.6$.

So, let's say $\frac{S_N-S_{N-1}}{S_{N-1}-S_{N-2}}\approx0.4$. With a bit of algebra, we can see: $$\lim_{N\to\infty}S_N\approx S_N+\frac{0.4}{1-0.4}(S_N-S_{N-1})$$

Conclusion

This extrapolation gives us about $1$ more decimal place. So we have the approximation: $$\ln(3)\approx\left[\frac{1}{2}\sum_{n=1}^N\left(\frac{2}{3}\right)^{2n}\frac{5n-1}{n(2n-1)}\right]+\frac{1}{3}\left(\frac{2}{3}\right)^{2N}\frac{5N-1}{N(2N-1)}$$

When we compute this for each $N$ and simplify, we get the sequence of approximations:

$$\begin{array}{|c|c|l|} \hline N & \text{Approximation}, X & \text{Error}= \ln(3)-X\\ \hline 1 & ^{40}/_{27}& -0.383 \\ \hline 2 & ^{92}/_{81} & -0.037\\ \hline 3 & ^{7\,252}/_{6\,561} & -0.006\,707\\ \hline 4 & ^{757\,844}/_{688\,905} & -0.001\,458\\ \hline 5 & ^{20\,440\,988}/_{18\,600\,435} & -0.000\,340\\ \hline \end{array}$$

We can see we're down to needing just $5$ terms to get $3$ decimal places, which is quite an improvement from $17$.

Some of the fractions are way too complicated before simplification. E.g. for $N=2$, each of the numerator has $8$ digits, then at $N=5$, it has $26$ digits. It would be pretty trivial to find the $\gcd$ para cada caso y simplificar, pero no puedo imaginar lo aburrido que sería.

Para resumir, creo que esta es una aproximación decente y bien dentro de las atribuciones de alguien haciendo con la mano (siempre y cuando estén lo suficientemente paciente!). Si alguien ve un error que he hecho o tiene mejores técnicas para la convergencia de aceleración, por favor siéntase libre de dejar un comentario.


Aquí está el python3 código que he usado para calcular los términos.

def a(n):        #numerator in series
    if n==1: return 16
    else: return 2**(2*n)*(5*n-1)

def b(n):        #denominator in series
    if n==1: return 9
    else: return 3**(2*n)*n*(2*n-1)

def X(N):        #partial sum and extrapolation (for N>1)
A=a(1)
B=b(1)
for n in range(2,N+1):        #partial sum up to N (ignores 1/2 term)
    A=b(n)*A+a(n)*B
    B=B*b(n)
C=A*3*b(N)+2*B*a(N)        #extrapolation and incorporation of 1/2 and 1/3 terms
D=2*B*3*b(N)
return (C,D)

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