Given a positive number x, the task is to find the natural log (ln) and log to the base 10 (log10) of this number with the help of expansion.
Example:
Input: x = 5 Output: ln 5.000 = 1.609 log10 5.000 = 0.699 Input: x = 10 Output: ln 10.000 = 2.303 log10 10.000 = 1.000
Approach:
- The expansion of natural logarithm of x (ln x) is:
- Therefore this series can be summed up as:
- Hence a function can be made to evaluate the nth term of the sequence for 1 ? x ? n
- Now to calculate log10 x, below formula can be used:
Below is the implementation of the above approach:
C++
// CPP code to Find the ln x and // log<sub>10</sub> x with the help of expansion #include <cmath> #include <iomanip> #include <iostream> using namespace std;
// Function to calculate ln x using expansion double calculateLnx( double n)
{ double num, mul, cal, sum = 0;
num = (n - 1) / (n + 1);
// terminating value of the loop
// can be increased to improve the precision
for ( int i = 1; i <= 1000; i++) {
mul = (2 * i) - 1;
cal = pow (num, mul);
cal = cal / mul;
sum = sum + cal;
}
sum = 2 * sum;
return sum;
} // Function to calculate log10 x double calculateLogx( double lnx)
{ return (lnx / 2.303);
} // Driver Code int main()
{ double lnx, logx, n = 5;
lnx = calculateLnx(n);
logx = calculateLogx(lnx);
// setprecision(3) is used to display
// the output up to 3 decimal places
cout << fixed << setprecision(3)
<< "ln " << n << " = "
<< lnx << endl;
cout << fixed << setprecision(3)
<< "log10 " << n << " = "
<< logx << endl;
} |
Java
// Java code to Find the ln x and // log<sub>10</sub> x with the help of expansion import java.io.*;
class GFG
{ // Function to calculate ln x using expansion static double calculateLnx( double n)
{ double num, mul, cal, sum = 0 ;
num = (n - 1 ) / (n + 1 );
// terminating value of the loop
// can be increased to improve the precision
for ( int i = 1 ; i <= 1000 ; i++)
{
mul = ( 2 * i) - 1 ;
cal = Math.pow(num, mul);
cal = cal / mul;
sum = sum + cal;
}
sum = 2 * sum;
return sum;
} // Function to calculate log10 x static double calculateLogx( double lnx)
{ return (lnx / 2.303 );
} // Driver Code public static void main (String[] args)
{ double lnx, logx, n = 5 ;
lnx = calculateLnx(n);
logx = calculateLogx(lnx);
// setprecision(3) is used to display
// the output up to 3 decimal places
System.out.println ( "ln " + n + " = " + lnx );
System.out.println ( "log10 " + n + " = " + logx );
} } // This code is contributed by ajit |
Python3
# Python 3 code to Find the ln x and # log<sub>10</sub> x with the help of expansion # Function to calculate ln x using expansion from math import pow
def calculateLnx(n):
sum = 0
num = (n - 1 ) / (n + 1 )
# terminating value of the loop
# can be increased to improve the precision
for i in range ( 1 , 1001 , 1 ):
mul = ( 2 * i) - 1
cal = pow (num, mul)
cal = cal / mul
sum = sum + cal
sum = 2 * sum
return sum
# Function to calculate log10 x def calculateLogx(lnx):
return (lnx / 2.303 )
# Driver Code if __name__ = = '__main__' :
n = 5
lnx = calculateLnx(n)
logx = calculateLogx(lnx)
# setprecision(3) is used to display
# the output up to 3 decimal places
print ( "ln" , "{0:.3f}" . format (n),
"=" , "{0:.3f}" . format (lnx))
print ( "log10" , "{0:.3f}" . format (n),
"=" , "{0:.3f}" . format (logx))
# This code is contributed by # Surendra_Gangwar |
C#
// C# code to Find the ln x and // log<sub>10</sub> x with the help of expansion using System;
class GFG
{ // Function to calculate ln x using expansion static double calculateLnx( double n)
{ double num, mul, cal, sum = 0;
num = (n - 1) / (n + 1);
// terminating value of the loop
// can be increased to improve the precision
for ( int i = 1; i <= 1000; i++)
{
mul = (2 * i) - 1;
cal = Math.Pow(num, mul);
cal = cal / mul;
sum = sum + cal;
}
sum = 2 * sum;
return sum;
} // Function to calculate log10 x static double calculateLogx( double lnx)
{ return (lnx / 2.303);
} // Driver Code public static void Main (String[] args)
{ double lnx, logx, n = 5;
lnx = calculateLnx(n);
logx = calculateLogx(lnx);
// setprecision(3) is used to display
// the output up to 3 decimal places
Console.WriteLine( "ln " + n + " = " + lnx );
Console.WriteLine( "log10 " + n + " = " + logx );
} } // This code is contributed by Princi Singh |
Javascript
<script> // Javascript code to Find the ln x and // log<sub>10</sub> x with the help of expansion // Function to calculate ln x using expansion function calculateLnx(n)
{ let num, mul, cal, sum = 0;
num = (n - 1) / (n + 1);
// Terminating value of the loop
// can be increased to improve the precision
for (let i = 1; i <= 1000; i++)
{
mul = (2 * i) - 1;
cal = Math.pow(num, mul);
cal = cal / mul;
sum = sum + cal;
}
sum = 2 * sum;
return sum;
} // Function to calculate log10 x function calculateLogx(lnx)
{ return (lnx / 2.303);
} // Driver Code let lnx, logx, n = 5; lnx = calculateLnx(n); logx = calculateLogx(lnx); // setprecision(3) is used to display // the output up to 3 decimal places document.write( "ln " + n + " = " + lnx + "<br>" );
document.write( "log10 " + n + " = " + logx + "<br>" );
// This code is contributed by souravmahato348 </script> |
Output
ln 5.000 = 1.609 log10 5.000 = 0.699
Time complexity: O(1000), as the loop iterates 1000 times.
Auxiliary Space: O(1),