Kira fungsi eksponen dan logaritma dalam Python (exp, log, log10, log2)

Perniagaan

Menggunakan matematik, modul standard Python untuk fungsi matematik, anda boleh mengira fungsi eksponen dan logaritma (logaritma asli, logaritma biasa dan logaritma binari).

Perkara berikut diterangkan di sini, bersama dengan kod sampel.

  • Asas logaritma asli (nombor Napier):math.e
  • Kuasa::**pengendali,pow(),math.pow()
  • Akar kuasa dua (akar):math.sqrt()
  • Fungsi eksponen (fungsi eksponen semula jadi):math.exp()
  • fungsi logaritma:math.log(),math.log10(),math.log2()

Asas logaritma asli (nombor Napier):math.e

Asas logaritma asli (nombor Napier) disediakan sebagai pemalar dalam modul matematik, dilambangkan dengan matematik.e.

import math

print(math.e)
# 2.718281828459045

Kuasa: ** operator, pow(), math.pow():**pengendali,pow(),math.pow()

Untuk mengira kuasa, gunakan sama ada operator **, fungsi terbina dalam pow(), atau math.pow().

Kuasa dua-y bagi x diperoleh seperti berikut

  • x**y
  • pow(x, y)
  • math.pow(x, y)
print(2**4)
# 16

print(pow(2, 4))
# 16

print(math.pow(2, 4))
# 16.0

math.pow() menukar hujah kepada jenis titik terapung. Sebaliknya, fungsi terbina dalam Python pow() menggunakan __pow()__ yang ditakrifkan untuk setiap jenis.

Sebagai contoh, pow() membenarkan jenis kompleks untuk ditentukan sebagai argumen, tetapi math.pow() tidak boleh menukar jenis kompleks kepada jenis terapung, mengakibatkan ralat.

print(pow(1 + 1j, 2))
# 2j

# print(math.pow(1 + 1j, 2))
# TypeError: can't convert complex to float

Fungsi terbina dalam Python pow() juga membenarkan hujah ketiga, pow(x, y, z), yang mengembalikan baki (baki) z kepada kuasa-y bagi x. Ia adalah pengiraan yang sama seperti pow(x, y) % z, tetapi pow(x, y, z) adalah lebih cekap.

print(pow(2, 4, 5))
# 1

Akar kuasa dua (akar):math.sqrt()

Punca kuasa dua (akar) boleh ditetapkan kepada **0.5 menggunakan ** atau math.sqrt().

print(2**0.5)
# 1.4142135623730951

print(math.sqrt(2))
# 1.4142135623730951

print(2**0.5 == math.sqrt(2))
# True

Seperti math.pow(), math.sqrt() menukar argumen kepada jenis titik terapung untuk diproses, jadi menentukan jenis yang tidak boleh ditukar kepada jenis apungan akan menghasilkan TypeError.

print((-3 + 4j)**0.5)
# (1.0000000000000002+2j)

# print(math.sqrt(-3 + 4j))
# TypeError: can't convert complex to float

Selain itu, math.sqrt() tidak boleh memproses nilai negatif, mengakibatkan ValueError.

print((-1)**0.5)
# (6.123233995736766e-17+1j)

# print(math.sqrt(-1))
# ValueError: math domain error

Ambil perhatian bahawa apabila berurusan dengan nombor kompleks, contoh menggunakan operator ** menunjukkan ralat, tetapi modul cmath memberikan nilai yang lebih tepat. Nilai negatif juga boleh dikendalikan.

import cmath

print(cmath.sqrt(-3 + 4j))
# (1+2j)

print(cmath.sqrt(-1))
# 1j

Fungsi eksponen (fungsi eksponen semula jadi):math.exp()

Untuk mengira kuasa asas logaritma asli (nombor Napier) e, gunakan math.exp().

math.exp(x) mengembalikan x kuasa dua e.
math.exp(x) tidak bersamaan dengan “math.e ** x” dan math.exp(x) adalah lebih tepat.

print(math.exp(2))
# 7.38905609893065

print(math.exp(2) == math.e**2)
# False

fungsi logaritma:math.log(),math.log10(),math.log2()

Untuk mengira fungsi logaritma, gunakan math.log(),math.log10(),math.log2().

math.log(x, y) mengembalikan logaritma x dengan y sebagai asas.

print(math.log(25, 5))
# 2.0

Jika hujah kedua ditinggalkan, logaritma asli ditunjukkan di bawah.

logaritma

Dalam matematik, logaritma asli (logaritma dengan nombor Napier e sebagai asas), diwakili oleh log atau ln, boleh dikira dengan math.log(x).

print(math.log(math.e))
# 1.0

logaritma (asas 10)

Logaritma biasa (logaritma dengan asas 10) boleh dikira dengan math.log10(x), yang lebih tepat daripada math.log(x, 10).

print(math.log10(100000))
# 5.0

logaritma binari

Logaritma binari (logaritma dengan asas 2) boleh dikira dengan math.log2(x), yang lebih tepat daripada math.log(x, 2).

print(math.log2(1024))
# 10.0
Copied title and URL