📜  对数

📅  最后修改于: 2021-04-23 05:36:14             🧑  作者: Mango

对数函数是指数函数的逆函数。以b为底的对数是b的幂必须乘以b以产生给定的数字。例如, \log_2 8等于要产生8的2必须提高到的幂。显然,2 ^ 3 = 8因此\log_2 8 =3。通常,对于b> 0且b不等于1。

关于对数的事实:

  1. 由于各种有用的特性简化了冗长而繁琐的计算,对数很快被科学家采用。
  2. 以10为底的对数(即b = 10)被称为常用对数,在科学和工程学中有许多应用。
  3. 自然对数,是以e为底的对数。由于其更简单的导数,因此被用于数学和物理学。
  4. 二进制对数是一个以2为底的对数,通常用于计算机科学。

对数定律:

Laws Description
\log_a bc \log_a b + \log_a c
\log_a b/c \log_a b\log_a c
\log_a b^c c\log_a b
\log_a 1/b -\log_a b
\log_a 1 0
\log_a a 1
\log_a a^r r
\log_a b*\log_b c \log_a c
\log_b a 1/\log_a b

如何找到数字的对数?

天真的解决方案:
这个想法是创建一个函数来计算并返回\log_2 n 。例如,如果n = 64,则您的函数应返回6;如果n = 129,则您的函数应返回7。

C
// C program to find log(n) using Recursion
#include 
  
unsigned int Log2n(unsigned int n)
{
    return (n > 1) ? 1 + Log2n(n / 2) : 0;
}
  
int main()
{
    unsigned int n = 32;
    printf("%u", Log2n(n));
    getchar();
    return 0;
}


Java
// Java program to find log(n)
// using Recursion
class Gfg1 {
  
    static int Log2n(int n)
    {
        return (n > 1) ? 1 + Log2n(n / 2) : 0;
    }
  
    // Driver Code
    public static void main(String args[])
    {
        int n = 32;
        System.out.println(Log2n(n));
    }
}


Python3
# Python 3 program to
# find log(n) using Recursion
  
def Log2n(n):
  
    return 1 + Log2n(n / 2) if (n > 1) else 0
  
# Driver code
n = 32
print(Log2n(n))


C#
// C# program to find log(n)
// using Recursion
using System;
  
class GFG {
  
    static int Log2n(int n)
    {
        return (n > 1) ? 1 + Log2n(n / 2) : 0;
    }
  
    // Driver Code
    public static void Main()
    {
        int n = 32;
  
        Console.Write(Log2n(n));
    }
}


PHP
 1) ? 1 + Log2n($n / 2) : 0;
}
  
// Drive main
  
    $n = 32;
    echo Log2n($n);
?>


输出 :

5

时间复杂度: O(log n)
辅助空间:如果在递归过程中考虑堆栈大小,则为O(log n),否则为O(1)

高效的解决方案:

  • 使用内置日志函数

对数的练习题:

问题1:在给定8 x + 1 – 8 x-1 = 63的方程式中找到x的值
解决方案:从等式中取8 x-1的公共点。
减少到
8 x-1 (8 2 – 1)= 63
8 x-1 = 1
因此,x – 1 = 0
x = 1

问题2:找到等式的x值。给定日志0.25 x = 16
解决方案:日志0.25 x = 16
可以写成
x =(0.25) 16
x =(1/4) 16
x = 4 -16

问题3:求解方程式log 12 1728 x log 9 6561
解决方案:可以写成
日志12 (12 3 )x日志9 (9 4 )
= 3log 12 12 x 4log 9 9
= 3 x 4 = 12

问题4:解决x
日志x 3 +日志x 9 +日志x 27 +日志x 81 = 10

解决方案:可以写成
对数x (3 x 9 x 27 x 81)= 10
对数x (3 1 x 3 2 x 3 3 x 3 4 )= 10
对数x (3 10 )= 10
10日志x 3 = 10
然后,x = 3

问题5:如果log(a + 3)+ log(a – 3)= 1 ,则a =?
解决方案:日志10 ((a + 3)(a – 3))= 1
对数10 (a 2 – 9)= 1
(a 2 – 9)= 10
2 = 19
a =√19

问题6:解决1 / log ab (abcd)+ 1 / log bc (abcd)+ 1 / log CD (abcd)+ 1 / log da (abcd)
解决方案:
=日志abcd (ab)+日志abcd (bc)+日志abcd (cd)+日志abcd (da)
= log abcd (ab * bc * cd * da)
=日志abcd (abcd) 2
= 2日志abcd (abcd)
= 2

问题7:如果xyz = 10,则求解log(x n y n / z n )+ log(y n z n / x n )+ log(z n x n / y n )
解决方案:
log(x n y n / z n * y n z n / x n * z n x n / y n )
= log x n y n z n
= log(xyz) n
=日志10 10 n
= n

问题8:查找(121/10) x = 3
解决方案:在两边都应用对数
对数(121/10) (121/10) x =对数(121/10) 3
x =(log 3)/(log 121 – log 10)
x =(对数3)/(2对数11 – 1)

问题9:求解log(2x 2 + 17)= log(x – 3) 2
解决方案:
log(2x 2 + 17)=对数(x 2 – 6x + 9)
2x 2 + 17 = x 2 – 6x + 9
x 2 + 6x + 8 = 0
x 2 + 4x + 2x + 8 = 0
x(x + 4)+ 2(x + 4)= 0
(x + 4)(x + 2)= 0
x = -4,-2

问题10: log 2 (33 – 3 x )= 10 log(5 – x) 。解决x。
解决方案:放x = 0
对数2 (33 – 1)= 10对数(5)
对数2 32 = 5
5 log 2 2 = 5
5 = 5
LHS = RHS

与对数有关的更多问题:

  • 查找计算对数N所需的最小对数值
  • 在给出x和y的x ^(y ^ 2)或y ^(x ^ 2)中找到最大值
  • 打印数字的所有子字符串,无需任何转换
  • 程序比较m ^ n和n ^ m
  • 查找较大的x ^ y和y ^ x

关于对数的最新文章!