Python ، أنواع معقدة للعمل مع الأعداد المركبة (القيم المطلقة ، الانحراف ، التحولات القطبية ، إلخ.)

اعمال

لغة Python لديها نوع قياسي للتعامل مع الأعداد المركبة ، نوع COMPLEX. إذا كنت تريد فقط إجراء حسابات بسيطة ، فلن تحتاج إلى استيراد أي وحدات نمطية ، ولكن إذا قمت باستيراد cmath للمكتبة القياسية ، فيمكنك أيضًا استخدام الدوال الرياضية (الأسية ، واللوغاريتمية ، والمثلثية ، وما إلى ذلك) المقابلة للأرقام المركبة.

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

  • توليد المتغيرات المعقدة
  • احصل على أجزاء حقيقية وخيالية:real,imagينسب
  • احصل على الأعداد المركبة المرافقة:conjugate()طريقة
  • الحصول على القيمة المطلقة (المقدار):abs()الوظيفة (مثل الرياضيات ، البرمجة ، البرمجة)
  • الحصول على الانحراف (المرحلة):math,cmathوحدة
  • تحويل الإحداثيات القطبية (تمثيل الشكل القطبي):math,cmathوحدة
  • حساب الأعداد المركبة (التربيع ، القوى ، الجذور التربيعية)

توليد المتغيرات المعقدة

قم بالإشارة إلى الوحدة التخيلية بواسطة j واكتب ما يلي ، لاحظ أنها ليست i.

c = 3 + 4j

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

إذا كان الجزء التخيلي 1 ، فإن حذفه ينتج عنه خطأ في الاسم. إذا تم تعريف متغير اسمه j أولاً ، فإنه يعتبر ذلك المتغير.

1j
يجب أن يذكر صراحة بهذه الطريقة.

# c = 3 + j
# NameError: name 'j' is not defined

c = 3 + 1j

print(c)
# (3+1j)

إذا كان الجزء الحقيقي يساوي 0 ، فيمكن حذفه.

c = 3j

print(c)
# 3j

إذا كنت تريد تحديد قيمة بجزء وهمي من 0 كنوع معقد معقد ، فاكتب 0 بشكل صريح. كما هو موضح أدناه ، يمكن إجراء العمليات بين النوع المعقد ونوع العدد الصحيح أو نوع النقطة العائمة.

c = 3 + 0j

print(c)
# (3+0j)

يمكن تحديد الأجزاء الحقيقية والخيالية كنوع عائم النقطة العائمة. التدوين الأسي مقبول أيضًا.

c = 1.2e3 + 3j

print(c)
# (1200+3j)

يمكن أيضًا إنشاؤها بواسطة مُنشئ من النوع “معقد” ، كما هو الحال في “معقد (جزء حقيقي ، جزء تخيلي)”.

c = complex(3, 4)

print(c)
print(type(c))
# (3+4j)
# <class 'complex'>

احصل على أجزاء حقيقية ومتخيلة من الأعداد المركبة:real,imagينسب

يمكن الحصول على الأجزاء الحقيقية والخيالية لنوع معقد مع السمات الحقيقية والصورة ، على التوالي. كلاهما من أنواع عائمة الفاصلة العائمة.

c = 3 + 4j

print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>

print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>

إنه للقراءة فقط ولا يمكن تغييره.

# c.real = 5.5
# AttributeError: readonly attribute

احصل على الأعداد المركبة المرافقة:conjugate()

للحصول على الأعداد المركبة المقترنة ، استخدم الطريقة المترافقة ().

c = 3 + 4j

print(c.conjugate())
# (3-4j)

احصل على القيمة المطلقة (المقدار) لعدد مركب:abs()

للحصول على القيمة المطلقة (المقدار) لعدد مركب ، استخدم الدالة المضمنة abs ().

c = 3 + 4j

print(abs(c))
# 5.0

c = 1 + 1j

print(abs(c))
# 1.4142135623730951

الحصول على الانحراف (الطور) لعدد مركب:math,cmathوحدة

للحصول على الانحراف (الطور) لرقم مركب ، استخدم وحدة الرياضيات أو cmath.

وحدة cmath هي وحدة دالة رياضية للأرقام المركبة.

يمكن حسابها باستخدام دالة الظل العكسية math.atan2 () كما هو محدد ، أو استخدام cmath.phase () ، التي ترجع الانحراف (المرحلة).

import cmath
import math

c = 1 + 1j

print(math.atan2(c.imag, c.real))
# 0.7853981633974483

print(cmath.phase(c))
# 0.7853981633974483

print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True

في كلتا الحالتين ، وحدة الزاوية التي يمكن الحصول عليها هي الراديان. للتحويل إلى درجات ، استخدم math.degrees ().

print(math.degrees(cmath.phase(c)))
# 45.0

تحويل الإحداثيات القطبية للأعداد المركبة (التمثيل الرسمي القطبي):math,cmathوحدة

كما هو مذكور أعلاه ، يمكن الحصول على القيمة المطلقة (المقدار) والانحدار (الطور) لرقم مركب ، ولكن باستخدام cmath.polar () ، يمكن الحصول عليها معًا كصف (قيمة مطلقة ، ميل).

c = 1 + 1j

print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>

print(cmath.polar(c)[0] == abs(c))
# True

print(cmath.polar(c)[1] == cmath.phase(c))
# True

التحويل من الإحداثيات القطبية إلى الإحداثيات الديكارتية يتم باستخدام cmath.rect (). يمكن استخدام cmath.rect (القيمة المطلقة ، الانحراف) والوسيطات المماثلة للحصول على قيم من النوع المعقد المعقد المكافئ.

print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)

print(cmath.rect(1, 0))
# (1+0j)

print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)

الأجزاء الحقيقية والخيالية مكافئة للنتائج المحسوبة بواسطة cosine math.cos () و sine math.sin () من القيم المطلقة وزوايا الانحراف.

r = 2
ph = math.pi

print(cmath.rect(r, ph).real == r * math.cos(ph))
# True

print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True

حساب الأعداد المركبة (التربيع ، القوى ، الجذور التربيعية)

يمكن إجراء أربع عمليات حسابية وحسابات القوة باستخدام عوامل التشغيل الحسابية المعتادة.

c1 = 3 + 4j
c2 = 2 - 1j

print(c1 + c2)
# (5+3j)

print(c1 - c2)
# (1+5j)

print(c1 * c2)
# (10+5j)

print(c1 / c2)
# (0.4+2.2j)

print(c1 ** 3)
# (-117+44j)

يمكن حساب الجذر التربيعي باستخدام ** 0.5 ، ولكنه يؤدي إلى حدوث خطأ. يمكن استخدام cmath.sqrt () لحساب القيمة الدقيقة.

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

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

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

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

يمكنه أيضًا إجراء عمليات حسابية بأنواع معقدة وأنواع int وأنواع عائمة.

print(c1 + 3)
# (6+4j)

print(c1 * 0.5)
# (1.5+2j)
Copied title and URL