حساب الدوال الأسية واللوغاريتمية في بايثون (exp ، log ، log10 ، log2)

اعمال

باستخدام الرياضيات ، وحدة Python القياسية للوظائف الرياضية ، يمكنك حساب الدوال الأسية واللوغاريتمية (اللوغاريتم الطبيعي واللوغاريتم العادي واللوغاريتم الثنائي).

يتم شرح ما يلي هنا ، جنبًا إلى جنب مع نموذج التعليمات البرمجية.

  • قاعدة اللوغاريتم الطبيعي (رقم نابيير):math.e
  • قوة::**المشغل أو العامل,pow(),math.pow()
  • الجذر التربيعي (الجذر):math.sqrt()
  • دالة أسية (دالة أسية طبيعية):math.exp()
  • دالة لوغاريتمية:math.log(),math.log10(),math.log2()

قاعدة اللوغاريتم الطبيعي (رقم نابيير):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 () لا يمكنه تحويل الأنواع المعقدة إلى أنواع عائمة ، مما يؤدي إلى حدوث خطأ.

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

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

تسمح وظيفة Python المضمنة pow () أيضًا بوسيطة ثالثة ، pow (x ، y ، z) ، والتي تُعيد باقي (الباقي) من z إلى y-power لـ x. إنه نفس الحساب مثل pow (x ، y)٪ z ، لكن pow (x ، y ، z) أكثر كفاءة.

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

الجذر التربيعي (الجذر):math.sqrt()

يمكن ضبط الجذر التربيعي (الجذر) على ** 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 () الوسيطات إلى أنواع الفاصلة العائمة للمعالجة ، لذا فإن تحديد نوع لا يمكن تحويله إلى نوع عائم سينتج عنه TypeError.

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

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

أيضًا ، لا يمكن لـ math.sqrt () معالجة القيم السالبة ، مما يؤدي إلى حدوث خطأ في القيمة.

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()

لحساب قوة أساس اللوغاريتم الطبيعي (رقم نابيير) 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

إذا تم حذف الوسيطة الثانية ، فسيتم عرض اللوغاريتم الطبيعي أدناه.

اللوغاريتم

في الرياضيات ، يمكن حساب اللوغاريتم الطبيعي (اللوغاريتم مع رقم نابير e كأساس) ، الذي يمثله اللوغاريتم أو 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