Approximations for the Logarithm Function
|
12-02-2022, 09:33 AM
Post: #1
|
|||
|
|||
Approximations for the Logarithm Function
Numerical Integration of the Reciprocal Function
We use several numerical methods to calculate the integral in this formula for the logarithm: \( \begin{aligned} \log(1+x) = \int_{1}^{1+x}\frac{1}{t}\,dt \end{aligned} \) These approximations are then compared to its Taylor series: \( \begin{aligned} \log(1+x) = x - \frac{x^2}{2} + \frac{x^3}{3} - \frac{x^4}{4} + \frac{x^5}{5} - \frac{x^6}{6} + \frac{x^7}{7} + \mathcal{O}(n^8) \\ \end{aligned} \) Anyone familiar with the HP-41C/HP-42S will recognise the LN1+X function. The difference in the coefficients of the first deviating term is calculated and can be used to compare the methods. Also for the example \( x = 0.2 \) the approximation is compared with the true value: Code: from math import log1p 0.18232155679395462 Furthermore, for each approximation, a program for the HP-42S is provided with the result of the calculation for the same value. Conclusions Adding intervals in the case of the trapezoidal or midpoint rule brings us closer to the true coefficients of the third-order term. However, Simpson's 1/3 rule reduces the error to a 5th order term, while its complexity is similar to the others. We can improve this a bit with Simpson's 3/8 rule, but we can't change the order of magnitude. Using Gaussian quadrature, the constants are not integers anymore, but for 2 points the formula is similar. Adding one more point reduces the error to a 7th order term. When integrating a function numerically, choose your sampling points carefully. References Trapezoidal Rule \( \begin{aligned} \int_{a}^{b}f(x)\,dx &\approx \sum_{k=1}^{N}\frac{f(x_{k-1})+f(x_{k})}{2}\Delta x_{k} \\ &= \frac{\Delta x}{2}\left(f(x_{0})+2f(x_{1})+2f(x_{2})+2f(x_{3})+2f(x_{4})+\cdots +2f(x_{N-1})+f(x_{N})\right) \\ \end{aligned} \) 1 Interval \( \int_{a}^{b}f(x)\,dx \approx (b-a)\cdot {\tfrac {1}{2}}(f(a)+f(b)) \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{2}\,\left[1 + \frac{1}{1+x}\right] \\ &= x - \frac{x^2}{2} + \frac{x^3}{2} + \mathcal{O}(x^4) \\ \end{aligned} \) Difference \( \begin{aligned} \frac{1}{2} - \frac{1}{3} = \frac{1}{6} \approx 0.166667 \end{aligned} \) Example Code: I = x/2*(1+1/(1+x)) (0.18333333333333335, 0.18232155679395462, 0.005549407086964257) Program Code: 00 { 13-Byte Prgm } 0.183333333333 0.182321556794 2 Intervals \( \begin{aligned} \int_{a}^{b}f(x)\,dx \approx \frac{1}{2}\frac{b-a}{2} \left[f(a) + 2f\left(\frac{a+b}{2}\right) + f(b)\right] \end{aligned} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{2 \cdot 2}\,\left[1 + 2 \cdot \frac{2}{1+1+x} + \frac{1}{1+x}\right] \\ &= \frac{x}{4}\,\left[1 + \frac{4}{2+x} + \frac{1}{1+x}\right] \\ &= x - \frac{x^2}{2} + \frac{3 x^3}{8} + \mathcal{O}(x^4) \\ \end{aligned} \) Difference \( \frac{3}{8} - \frac{1}{3} = \frac{1}{24} \approx 0.0416667 \) Example Code: I = x/4*(1+4/(2+x)+1/(1+x)) (0.1825757575757576, 0.18232155679395462, 0.0013942442477620518) Program Code: 00 { 22-Byte Prgm } 0.182575757576 0.182321556794 Midpoint Rule \( \begin{aligned} \int_{a}^{b}f(x)\,dx \approx \Delta x\left[f\left(a+{\tfrac {\Delta x}{2}}\right)+f\left(a+{\tfrac {3\Delta x}{2}}\right)+\ldots +f\left(b-{\tfrac {\Delta x}{2}}\right)\right] \end{aligned} \) 1 Interval \( \begin{aligned} \int_{a}^{b}f(x)\,dx\approx (b-a)\cdot f\left(\frac{a+b}{2}\right) \end{aligned} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx x \, \frac{2}{2+x} \\ &= \frac{2x}{2+x} \\ &= x - \frac{x^2}{2} + \frac{x^3}{4} + \mathcal{O}(x^4) \\ \end{aligned} \) Difference \( \frac{1}{4} - \frac{1}{3} = - \frac{1}{12} \approx -0.0833333 \) Example Code: I = 2*x/(2+x) (0.18181818181818182, 0.18232155679395462, -0.0027609185914404585) Program Code: 00 { 9-Byte Prgm } 0.181818181818 0.182321556794 2 Intervals \( \begin{aligned} \int_{a}^{b}f(x)\,dx\approx \frac{b-a}{2}\,\left[f\left(\frac{3a+b}{4}\right) + f\left(\frac{a+3b}{4}\right)\right] \end{aligned} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{2}\,\left[\frac{4}{3+1+x} + \frac{4}{1+3+3x}\right] \\ &= 2x\,\left[\frac{1}{4+x} + \frac{1}{4+3x}\right] \\ &= x - \frac{x^2}{2} + \frac{5 x^3}{16} + \mathcal{O}(x^4) \\ \end{aligned} \) Difference \( \begin{aligned} \frac{5}{16} - \frac{1}{3} = - \frac{1}{48} \approx -0.0208333 \end{aligned} \) Example Code: I = 2*x*(1/(4+x)+1/(4+3*x)) (0.1821946169772257, 0.18232155679395462, -0.0006962414042590937) Program Code: 00 { 20-Byte Prgm } 0.182194616977 0.182321556794 Simpson's Rule 1/3 rule \( \begin{aligned} \int_{a}^{b}f(x)\,dx &\approx \frac{1}{3} h \,\left[f(a)+4f\left(\frac {a+b}{2}\right)+f(b)\right]\\ &=\frac{b-a}{6}\,\left[f(a)+4f\left(\frac{a+b}{2}\right)+f(b)\right] \end{aligned} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{6}\,\left[1 + 4 \frac{2}{1+1+x} + \frac{1}{1+x}\right] \\ &= \frac{x}{6}\,\left[1 + \frac{8}{2+x} + \frac{1}{1+x}\right] \\ &= x - \frac{x^2}{2} + \frac{x^3}{3} - \frac{x^4}{4} + \frac{5 x^5}{24} + \mathcal{O}(x^6) \\ \end{aligned} \) Difference \( \begin{aligned} \frac{5}{24} - \frac{1}{5} = \frac{1}{120} \approx 0.00833333 \end{aligned} \) Example Code: I = x/6*(1+8/(2+x)+1/(1+x)) (0.18232323232323233, 0.18232155679395462, 9.189968027780061e-06) Program Code: 00 { 22-Byte Prgm } 0.182323232323 0.182321556794 3/8 rule \( \begin{aligned} \int _{a}^{b}f(x)\,dx &\approx \frac{3}{8}h\,\left[f(a)+3f\left(\frac{2a+b}{3}\right)+3f\left(\frac{a+2b}{3}\right)+f(b)\right]\\ &= \frac{b-a}{8}\,\left[f(a)+3f\left(\frac{2a+b}{3}\right)+3f\left(\frac{a+2b}{3}\right)+f(b)\right] \\ \end{aligned} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{8}\,\left[1 + 3 \frac{3}{2+1+x} + 3 \frac{3}{1+2+2x} + \frac{1}{1+x}\right] \\ &= \frac{x}{8}\,\left[1 + \frac{9}{3+x} + \frac{9}{3+2x} + \frac{1}{1+x}\right] \\ &= x - \frac{x^2}{2} + \frac{x^3}{3} - \frac{x^4}{4} + \frac{11 x^5}{54} + \mathcal{O}(x^6) \\ \end{aligned} \) Difference \( \frac{11}{54} - \frac{1}{5} = \frac{1}{270} \approx 0.00370370 \) Example Code: I = x/8*(1+9/(3+x)+9/(3+2*x)+1/(1+x)) (0.18232230392156862, 0.18232155679395462, 4.097856705131325e-06) Program Code: 00 { 33-Byte Prgm } 0.182322303922 0.182321556794 Gauss–Legendre Quadrature \( \begin{aligned} \int_{-1}^{1}f(x)\,dx\approx \sum _{i=1}^{n}w_{i}f(x_{i}) \end{aligned} \) 2 Point \( \begin{array}{|c|c|} \hline \text{Point} & \text{Weight} \\ \hline -\frac{1}{\sqrt{3}} & 1 \\ \hline +\frac{1}{\sqrt{3}} & 1 \\ \hline \end{array} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{2}\,\left[\frac{1}{1 + \left(\frac{1}{2} - \frac{1}{\sqrt{12}}\right)x} + \frac{1}{1 + \left(\frac{1}{2} + \frac{1}{\sqrt{12}}\right)x}\right] \\ &= x\,\left[\frac{1}{2 + \left(1 - \frac{1}{\sqrt{3}}\right)x} + \frac{1}{2 + \left(1 + \frac{1}{\sqrt{3}}\right)x}\right] \\ &= x - \frac{x^2}{2} + \frac{x^3}{3} - \frac{x^4}{4} + \frac{7 x^5}{36} + \mathcal{O}(x^6) \\ \end{aligned} \) Difference \( \begin{aligned} \frac{7}{36} - \frac{1}{5} = - \frac{1}{180} \approx -0.00555556 \end{aligned} \) Example Code: from math import sqrt (0.18232044198895028, 0.18232155679395462, -6.114499151613408e-06) Program Code: 00 { 29-Byte Prgm } 0.182320441989 0.182321556794 This variant uses registers: 1 ENTER 3 SQRT 1/X - STO 00 1 LASTX + STO 01 Code: 00 { 18-Byte Prgm } 0.182320441989 0.182321556794 3 Point \( \begin{array}{|c|c|} \hline \text{Point} & \text{Weight} \\ \hline -\sqrt{\frac{3}{5}} & \frac{5}{9} \\ \hline 0 & \frac{8}{9} \\ \hline \sqrt{\frac{3}{5}} & \frac{5}{9} \\ \hline \end{array} \) \( \begin{aligned} \int_{1}^{1+x}\frac{1}{t}\,dt &\approx \frac{x}{2 \cdot 9}\,\left[\frac{5}{1 + \left(\frac{1}{2} - \sqrt{\frac{3}{20}}\right)x} + \frac{8 \cdot 2}{1+1+x} + \frac{5}{1 + \left(\frac{1}{2} + \sqrt{\frac{3}{20}}\right)x}\right] \\ &= \frac{x}{9}\,\left[\frac{5}{2 + \left(1 - \sqrt{\frac{3}{5}}\right)x} + \frac{8}{2+x} + \frac{5}{2 + \left(1 + \sqrt{\frac{3}{5}}\right)x}\right] \\ &= x - \frac{x^2}{2} + \frac{x^3}{3} - \frac{x^4}{4} + \frac{x^5}{5} - \frac{x^6}{6} + \frac{57 x^7}{400} + \mathcal{O}(x^8) \\ \end{aligned} \) Difference \( \begin{aligned} \frac{57}{400} - \frac{1}{7} = - \frac{1}{2800} \approx -0.000357143 \end{aligned} \) Example Code: from math import sqrt (0.18232155441457765, 0.18232155679395462, -1.3050442389081796e-08) Program Code: 00 { 46-Byte Prgm } 0.182321554415 0.182321556794 This variant uses registers: 1 ENTER 0.6 SQRT - STO 00 1 LASTX + STO 01 Code: 00 { 34-Byte Prgm } 0.182321554415 0.182321556794 |
|||
« Next Oldest | Next Newest »
|
Messages In This Thread |
Approximations for the Logarithm Function - Thomas Klemm - 12-02-2022 09:33 AM
RE: Approximations for the Logarithm Function - Albert Chan - 12-02-2022, 07:42 PM
|
User(s) browsing this thread: 1 Guest(s)