- #1

hkBattousai

- 64

- 0

I'm aiming to calculate ln(x) numerically. I'm using the following procedure for this:

1) If x is greater or equal to 1, use Newton's method.

2) If x is smaller between 0 and 1, use Taylor series expansion.

Newton's method works good, but I have problems with Taylor series expansion method.

[itex]\ln(1+x)=\sum_{n=1}^\infty \frac{(-1)^{n+1}}{n} x^n = x - \frac{x^2}{2} + \frac{x^3}{3} - \cdots \quad{\rm for}\quad \left|x\right| \leq 1\quad[/itex]

Sum of this series is [itex]\small -\infty\normalsize[/itex] for [itex]\small x=-1\normalsize[/itex], but when you try to take sum of it using a computer, it doesn't converge because of computing limitations (like using truncated series). I can't either use Newton's method for this interval, because it has a bad performance for small x values (neither it converges for small x).

For x=0.000001;

ln(x) = -13.8155... (actual)

ln(x) = -1.71828... (calculated)

(The summation goes on until absolute value of any element of the series is below a user defined [itex]\epsilon[/itex] value, which is equal to [itex]1.0 \times 10^{-14}[/itex] for this particular example.)

I need a third method to calculate ln(x) for small x argument.

Can you please suggest me one?

1) If x is greater or equal to 1, use Newton's method.

2) If x is smaller between 0 and 1, use Taylor series expansion.

Newton's method works good, but I have problems with Taylor series expansion method.

[itex]\ln(1+x)=\sum_{n=1}^\infty \frac{(-1)^{n+1}}{n} x^n = x - \frac{x^2}{2} + \frac{x^3}{3} - \cdots \quad{\rm for}\quad \left|x\right| \leq 1\quad[/itex]

Sum of this series is [itex]\small -\infty\normalsize[/itex] for [itex]\small x=-1\normalsize[/itex], but when you try to take sum of it using a computer, it doesn't converge because of computing limitations (like using truncated series). I can't either use Newton's method for this interval, because it has a bad performance for small x values (neither it converges for small x).

For x=0.000001;

ln(x) = -13.8155... (actual)

ln(x) = -1.71828... (calculated)

(The summation goes on until absolute value of any element of the series is below a user defined [itex]\epsilon[/itex] value, which is equal to [itex]1.0 \times 10^{-14}[/itex] for this particular example.)

I need a third method to calculate ln(x) for small x argument.

Can you please suggest me one?

Last edited: