Υπολογισμός εκθετικών και λογαριθμικών συναρτήσεων στην Python (exp, log, log10, log2)

Επιχείρηση

Χρησιμοποιώντας το math, την τυπική ενότητα της Python για μαθηματικές συναρτήσεις, μπορείτε να υπολογίζετε εκθετικές και λογαριθμικές συναρτήσεις (φυσικός λογάριθμος, συνηθισμένος λογάριθμος και δυαδικός λογάριθμος).

Τα παρακάτω εξηγούνται εδώ, μαζί με δείγμα κώδικα.

  • Βάση του φυσικού λογαρίθμου (αριθμός Napier):math.e
  • Ισχύς::**χειριστής,pow(),math.pow()
  • Τετραγωνική ρίζα (root):math.sqrt()
  • Εκθετική συνάρτηση (φυσική εκθετική συνάρτηση):math.exp()
  • μια λογαριθμική συνάρτηση:math.log(),math.log10(),math.log2()

Βάση του φυσικού λογαρίθμου (αριθμός Napier): math.e

Η βάση του φυσικού λογαρίθμου (αριθμός Napier) παρέχεται ως σταθερά στην ενότητα math, η οποία συμβολίζεται με math.e.

import math

print(math.e)
# 2.718281828459045

Ισχύς: ** pow(), math.pow(): **χειριστής, pow(), math.pow()

Για τον υπολογισμό δυνάμεων, χρησιμοποιήστε είτε τον τελεστή **, είτε την ενσωματωμένη συνάρτηση pow(), είτε την math.pow().

Το y-τετράγωνο του x προκύπτει ως εξής

  • 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() μετατρέπει το όρισμα σε τύπο κινητής υποδιαστολής. Από την άλλη πλευρά, η ενσωματωμένη συνάρτηση pow() της Python χρησιμοποιεί την __pow()__ που ορίζεται για κάθε τύπο.

Για παράδειγμα, η pow() επιτρέπει τον καθορισμό σύνθετων τύπων ως ορίσματα, αλλά η math.pow() δεν μπορεί να μετατρέψει σύνθετους τύπους σε τύπους float, με αποτέλεσμα την εμφάνιση σφάλματος.

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

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

Η ενσωματωμένη συνάρτηση pow() της Python επιτρέπει επίσης ένα τρίτο όρισμα, pow(x, y, z), το οποίο επιστρέφει το υπόλοιπο (υπόλοιπο) του z στη y-δύναμη του x. Πρόκειται για τον ίδιο υπολογισμό με την pow(x, y) % z, αλλά η pow(x, y, z) είναι πιο αποδοτική.

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

Τετραγωνική ρίζα (root): math.sqrt()

Η τετραγωνική ρίζα (root) μπορεί να οριστεί σε **0,5 χρησιμοποιώντας ** ή math.sqrt().

print(2**0.5)
# 1.4142135623730951

print(math.sqrt(2))
# 1.4142135623730951

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

Όπως και η math.pow(), η math.sqrt() μετατρέπει τα ορίσματα σε τύπους κινητής υποδιαστολής για επεξεργασία, οπότε ο προσδιορισμός ενός τύπου που δεν μπορεί να μετατραπεί σε τύπο float θα οδηγήσει σε TypeError.

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

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

Επίσης, η math.sqrt() δεν μπορεί να επεξεργαστεί αρνητικές τιμές, με αποτέλεσμα ένα ValueError.

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

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

Σημειώστε ότι όταν πρόκειται για μιγαδικούς αριθμούς, το παράδειγμα που χρησιμοποιεί τον τελεστή ** εμφανίζει σφάλμα, αλλά η ενότητα cmath παρέχει μια πιο ακριβή τιμή. Οι αρνητικές τιμές μπορούν επίσης να αντιμετωπιστούν.

import cmath

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

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

Εκθετική συνάρτηση (φυσική εκθετική συνάρτηση): math.exp()

Για να υπολογίσετε τη δύναμη της βάσης του φυσικού λογαρίθμου (αριθμός Napier) e, χρησιμοποιήστε την math.exp().

Η math.exp(x) επιστρέφει το x στο τετράγωνο του e.
Το math.exp(x) δεν είναι ισοδύναμο με το «math.e ** x» και το math.exp(x) είναι πιο ακριβές.

print(math.exp(2))
# 7.38905609893065

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

μια λογαριθμική συνάρτηση: math.log(), math.log10(), math.log2()

Για να υπολογίσετε τη λογαριθμική συνάρτηση, χρησιμοποιήστε math.log(),math.log10(),math.log2().

Η math.log(x, y) επιστρέφει τον λογάριθμο του x με βάση το y.

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

Εάν το δεύτερο όρισμα παραλειφθεί, ο φυσικός λογάριθμος εμφανίζεται παρακάτω.

λογάριθμος

Στα μαθηματικά, ο φυσικός λογάριθμος (λογάριθμος με βάση τον αριθμό Napier e), που αναπαρίσταται με log ή ln, μπορεί να υπολογιστεί με τη μέθοδο math.log(x).

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

λογάριθμος (βάση 10)

Ο συνήθης λογάριθμος (λογάριθμος με βάση το 10) μπορεί να υπολογιστεί με το math.log10(x), το οποίο είναι πιο ακριβές από το math.log(x, 10).

print(math.log10(100000))
# 5.0

δυαδικός λογάριθμος

Ο δυαδικός λογάριθμος (λογάριθμος με βάση το 2) μπορεί να υπολογιστεί με το math.log2(x), το οποίο είναι πιο ακριβές από το math.log(x, 2).

print(math.log2(1024))
# 10.0