حساب الدوال المثلثية في بايثون (الخطيئة ، كوس ، تان ، أركسين ، أركوس ، أركتان)

اعمال

باستخدام الرياضيات ، وحدة Python القياسية للوظائف الرياضية ، يمكنك حساب الدوال المثلثية (sin ، cos ، tan) والدوال المثلثية العكسية (arcsin ، arccos ، arctan).

يتم شرح المحتويات التالية هنا مع نماذج من الرموز.

  • باي (3.1415926 ..):math.pi
  • تحويل الزاوية (راديان ، درجات):math.degrees(),math.radians()
  • الجيب ، الجيب المعكوس:math.sin(),math.asin()
  • جيب التمام ، معكوس جيب التمام:math.cos(),math.acos()
  • الظل ، الظل المعكوس:math.tan(),math.atan(),math.atan2()
  • الاختلافات أدناه:math.atan(),math.atan2()

باي (3.1415926 ..):math.pi

يتم توفير Pi باعتباره ثابتًا في وحدة الرياضيات. يتم التعبير عنها على النحو التالي.
math.pi

import math

print(math.pi)
# 3.141592653589793

تحويل الزاوية (راديان ، درجات):math.degrees(),math.radians()

تستخدم الدوال المثلثية العكسية والمثلثية في وحدة الرياضيات الراديان كوحدة للزاوية.

استخدم الدرجات () و math.radians () للتحويل بين الراديان (طريقة الدرجة القوسية) والدرجات (طريقة الدرجة).

يتم تحويل Math.degrees () من الراديان إلى الدرجات ، و math.radians () يتم التحويل من الدرجات إلى الراديان.

print(math.degrees(math.pi))
# 180.0

print(math.radians(180))
# 3.141592653589793

الجيب ، الجيب المعكوس:math.sin(),math.asin()

وظيفة إيجاد الجيب (الخطيئة) هي math.sin () والدالة لإيجاد الجيب العكسي (arcsin) هي math.asin ().

فيما يلي مثال لإيجاد جيب الزاوية 30 درجة ، باستخدام math.radians () لتحويل الدرجات إلى راديان.

sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994

جيب 30 درجة يساوي 0.5 ، لكن يوجد خطأ لأن pi ، وهو رقم غير نسبي ، لا يمكن حسابه بدقة.

إذا كنت ترغب في التقريب إلى العدد المناسب من الأرقام ، فاستخدم الدالة round () أو طريقة format () أو دالة format ().

لاحظ أن القيمة المرجعة لـ round () هي رقم (int أو float) ، لكن القيمة المرجعة لـ format () هي سلسلة. إذا كنت تريد استخدامه في الحسابات اللاحقة ، فاستخدم round ().

print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>

print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>

print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>

تحدد الدالة round () عدد المنازل العشرية كوسيطة ثانية. لاحظ أن هذا لا يتم التقريب بشكل صارم. راجع المقالة التالية للحصول على التفاصيل.

دالة format () والوظيفة format () تحدد عدد المنازل العشرية في سلسلة مواصفات التنسيق. راجع المقالة التالية للحصول على التفاصيل.

إذا كنت تريد المقارنة ، يمكنك أيضًا استخدام math.isclose ().

print(math.isclose(sin30, 0.5))
# True

وبالمثل ، هذا مثال لإيجاد معكوس جيب الزاوية 0.5. تُرجع الدالة math.asin () الراديان ، والتي يتم تحويلها إلى درجات باستخدام math.degrees ().

asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996

print(round(asin05, 3))
# 30.0

جيب التمام ، معكوس جيب التمام:math.cos(),math.acos()

دالة العثور على جيب التمام هي math.cos () ، والدالة لإيجاد جيب التمام العكسي (قوس جيب التمام ، arccos) هي math.acos ().

هذا مثال لإيجاد جيب التمام 60 درجة وجيب التمام العكسي 0.5.

print(math.cos(math.radians(60)))
# 0.5000000000000001

print(math.degrees(math.acos(0.5)))
# 59.99999999999999

إذا كنت ترغب في التقريب إلى الرقم المناسب ، يمكنك استخدام round () أو تنسيق () كما هو الحال مع الجيب.

الظل ، الظل المعكوس:math.tan(),math.atan(),math.atan2()

دالة العثور على الظل (tan) هي math.tan () ، والدالة لإيجاد المماس العكسي (arctan) هي math.atan () أو math.atan2 ().
تم وصف Math.atan2 () لاحقًا.

يظهر أدناه مثال لإيجاد المماس 45 درجة ومعكوس الظل لـ 1 درجة.

print(math.tan(math.radians(45)))
# 0.9999999999999999

print(math.degrees(math.atan(1)))
# 45.0

الفرق بين math.atan () و math.atan2 ()

تعد كل من math.atan () و math.atan2 () دالات تقوم بإرجاع الظل المعكوس ، لكنهما يختلفان في عدد الوسائط ونطاق قيم الإرجاع.

يحتوي math.atan (x) على وسيطة واحدة ويعيد قيمة arctan (x) بالتقدير الدائري. ستكون القيمة المرجعة بين -pi \ 2 و pi \ 2 (-90 إلى 90 درجة).

print(math.degrees(math.atan(0)))
# 0.0

print(math.degrees(math.atan(1)))
# 45.0

print(math.degrees(math.atan(-1)))
# -45.0

print(math.degrees(math.atan(math.inf)))
# 90.0

print(math.degrees(math.atan(-math.inf)))
# -90.0

في المثال أعلاه ، يمثل math.inf اللانهاية.

يحتوي math.atan2 (y، x) على وسيطتين ويعيد قيمة arctan (y \ x) بالتقدير الدائري. هذه الزاوية هي الزاوية (الانحراف) التي يصنعها المتجه من الأصل إلى الإحداثيات (x ، y) بالاتجاه الإيجابي للمحور x في مستوى الإحداثيات القطبية ، وتكون القيمة المعادة بين -pi و pi (-180) إلى 180 درجة).

نظرًا لأنه يمكن أيضًا الحصول على الزوايا في الربعين الثاني والثالث بشكل صحيح ، فإن math.atan2 () أكثر ملاءمة من math.atan () عند التفكير في مستوى الإحداثيات القطبية.

لاحظ أن ترتيب الوسيطات هو y و x وليس x و y.

print(math.degrees(math.atan2(0, 1)))
# 0.0

print(math.degrees(math.atan2(1, 1)))
# 45.0

print(math.degrees(math.atan2(1, 0)))
# 90.0

print(math.degrees(math.atan2(1, -1)))
# 135.0

print(math.degrees(math.atan2(0, -1)))
# 180.0

print(math.degrees(math.atan2(-1, -1)))
# -135.0

print(math.degrees(math.atan2(-1, 0)))
# -90.0

print(math.degrees(math.atan2(-1, 1)))
# -45.0

كما في المثال أعلاه ، فإن الاتجاه السالب للمحور x (y يساوي صفرًا و x سلبيًا) هو pi (180 درجة) ، ولكن عندما تكون y سالب صفر ، تكون -pi (-180 درجة). كن حذرًا إذا كنت تريد التعامل مع العلامة بدقة.

print(math.degrees(math.atan2(-0.0, -1)))
# -180.0

الأصفار السالبة هي نتيجة العمليات التالية

print(-1 / math.inf)
# -0.0

print(-1.0 * 0.0)
# -0.0

لا يتم التعامل مع الأعداد الصحيحة على أنها أصفار سالبة.

print(-0.0)
# -0.0

print(-0)
# 0

حتى عندما يكون كل من x و y صفرًا ، فإن النتيجة تعتمد على الإشارة.

print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0

print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0

print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0

print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0

هناك أمثلة أخرى حيث تتغير علامة النتيجة اعتمادًا على الأصفار السالبة ، مثل math.atan2 () وكذلك math.sin () و math.asin () و math.tan () و math.atan () .

print(math.sin(0.0))
# 0.0

print(math.sin(-0.0))
# -0.0

print(math.asin(0.0))
# 0.0

print(math.asin(-0.0))
# -0.0

print(math.tan(0.0))
# 0.0

print(math.tan(-0.0))
# -0.0

print(math.atan(0.0))
# 0.0

print(math.atan(-0.0))
# -0.0

print(math.atan2(0.0, 1.0))
# 0.0

print(math.atan2(-0.0, 1.0))
# -0.0

لاحظ أن الأمثلة حتى الآن هي نتائج تشغيل البرنامج في CPython. لاحظ أن التطبيقات أو البيئات الأخرى قد تتعامل مع الأصفار السالبة بشكل مختلف.