الفرق بين المراجعتين لصفحة: «Ruby/Complex»

من موسوعة حسوب
لا ملخص تعديل
طلا ملخص تعديل
 
(6 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: الصنف<code>Complex</code> في روبي}}</noinclude>
<noinclude>{{DISPLAYTITLE:الصنف <code>Complex</code> في روبي}}</noinclude>
[[تصنيف: Ruby]]
[[تصنيف: Ruby]]
[[تصنيف: Ruby Class]]
[[تصنيف: Ruby Complex]]
[[تصنيف: Ruby Complex]]
يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبة) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد <code>i</code>) ؛ وفق الشكل <code>a+bi</code>، حيث <code>a</code> هو الجزء الحقيقي، و <code>b</code> هو الجزء التخيلي و <code>i</code> هو الوحدة الخيالية.
يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبةً [complex number]) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد <code>i</code>) وفق الشكل <code>a+bi</code>، إذ <code>a</code> هو الجزء الحقيقي، و <code>b</code> هو الجزء التخيلي و <code>i</code> هو الوحدة الخيالية. العدد الحقيقي <code>a</code> يساوي العدد العقدي <code>a+0i</code> حسابيًا.


العدد الحقيقي <code>a</code> يساوي رياضياتيًا العدد العقدي <code>a+0i</code>. 
يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع <code>Kernel.Complex</code> أو  ‏‎<code>::rect</code> أو ‏‎:<code>:polar</code> أو <code>‎.to_c</code>. إليك الأمثلة التالية:<syntaxhighlight lang="ruby">
 
يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع <code>Kernel#Complex</code> أو  ‏‎<code>::rect</code> أو  ‏‎:<code>:polar</code> أو <code>‎#to_c.</code> إليك الأمثلة التالية: <syntaxhighlight lang="ruby">
2+1i                #=> (2+1i)
2+1i                #=> (2+1i)
Complex(1)          #=> (1+0i)
Complex(1)          #=> (1+0i)
سطر 12: سطر 11:
Complex.polar(2, 3)  #=> (-1.9799849932008908+0.2822400161197344i)
Complex.polar(2, 3)  #=> (-1.9799849932008908+0.2822400161197344i)
3.to_c              #=> (3+0i)
3.to_c              #=> (3+0i)
</syntaxhighlight>يمكنك أيضا إنشاء الكائنات العقدية من الأعداد من النوع  <code>float</code> أو من السلاسل النصية كما توضح الأمثلة التالية: <syntaxhighlight lang="ruby">
</syntaxhighlight>يمكنك أيضا إنشاء الكائنات العقدية من الأعداد العشرية أو من السلاسل النصية كما توضح الأمثلة التالية:<syntaxhighlight lang="ruby">
Complex(0.3)        #=> (0.3+0i)
Complex(0.3)        #=> (0.3+0i)
Complex('0.3-0.5i')  #=> (0.3-0.5i)
Complex('0.3-0.5i')  #=> (0.3-0.5i)
سطر 22: سطر 21:
'2/3+3/4i'.to_c      #=> ((2/3)+(3/4)*i)
'2/3+3/4i'.to_c      #=> ((2/3)+(3/4)*i)
'1@2'.to_c          #=> (-0.4161468365471424+0.9092974268256817i)
'1@2'.to_c          #=> (-0.4161468365471424+0.9092974268256817i)
</syntaxhighlight>تُصنّف الأعداد العقدية إلى مضبوطة (exact) أو غير مضبوطة: <syntaxhighlight lang="ruby">
</syntaxhighlight>تُصنّف الأعداد العقدية إلى أعداد مضبوطة (exact) و غير مضبوطة (inexact):<syntaxhighlight lang="ruby">
Complex(1, 1) / 2    #=> ((1/2)+(1/2)*i)
Complex(1, 1) / 2    #=> ((1/2)+(1/2)*i)
Complex(1, 1) / 2.0  #=> (0.5+0.5i)
Complex(1, 1) / 2.0  #=> (0.5+0.5i)
</syntaxhighlight>
</syntaxhighlight>
==الثوابت==
===الثابت التخيلي <code rel="mw:WikiLink" title="Ruby/Complex/I" href="./Ruby/Complex/I">[[Ruby/Complex/I|I]]</code>===
يمثل العدد التخيلي للأعداد العقدية.
==توابع الصنف العامة (Public Class Methods)==
===[[Ruby/Complex/polar|<code>polar</code>]]===
يعيد عددا عقديًّا وفق الشكل القطبي (polar form).
===[[Ruby/Complex/rect|<code>rect</code>]]===
يعيد عددًا عقديًا وفق الشكل الجبري أو المستطيلي (rectangular form).
==توابع الكائن العامة (Public Instance Methods)==
===[[Ruby/Complex/star|<code>*</code>]]===
يجري عملية الضرب على الأعداد العقدية.


== الثوابت ==
===[[Ruby/Complex/exp|<code>**</code>]]===
 
يرفع عددًا عقديًّا إلى قوة عددٍ محدَّدٍ.
===[[Ruby/Complex/I|الثابت التخيلي <code>I</code>]] ===
===[[Ruby/Complex/plus|<code>+</code>]]===
يمثل الثابت <code>i</code> العدد التخيلي للأعداد العقدية.
يجري عملية الجمع على الأعداد العقدية.
 
===[[Ruby/Complex/-|<code>-</code>]]===
== توابع الصنف العامة (Public Class Methods) ==
يجري عملية الطرح بين عددين عقديين.
 
===[[Ruby/Complex/negation|<code>-</code>]]===
===[[Ruby/Complex/polar|التابع <code>polar</code>]] ===
يُستعمَل لنفي العدد العقدي (القيمة السالبة منه أن كان موجبًا). 
يعيد التابع ‎<code>polar</code> عددا عقديا وفق الشكل القطبي (polar form).
===[[Ruby/Complex/div|<code>/</code>]]===
 
يجري عملية القسمة على الأعداد العقدية.
===[[Ruby/Complex/rect|التابع <code>rect</code>]] ===
===[[Ruby/Complex/equality operator|<code>==</code>]]===
يعيد التابع ‎<code>rect</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
يتحقق من تساوي عددين عقديين.
 
===[[Ruby/Complex/abs|<code>abs</code>]]===
===[[Ruby/Complex/rectangular|التابع <code>rectangular </code>]] ===
يحسب الطويلة (r) للعدد العقدي بشكله القطبي الذي استدعي معه ثم يعيدها.
يعيد التابع ‎<code>rectangular</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
===[[Ruby/Complex/abs2|<code>abs2</code>]]===
 
يعيد مربع الطويلة (r2) للعدد العقدي الذي استدعي معه.
== توابع الكائن العامة (Public Instance Methods) ==
===[[Ruby/Complex/angle|‎<code>angle</code>]]===
 
يحسب الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استدعي معه.
===[[Ruby/Complex/star|المعامل <code>*</code>]] ===
===[[Ruby/Complex/arg|<code>arg</code>]]===
يؤدي المعامل ‎<code>*</code>عملية الضرب على الأعداد العقدية.
يعيد التابع ‎arg الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استدعي معه.
 
===<code rel="mw:WikiLink" title="Ruby/Complex/arg" href="./Ruby/Complex/arg">[[Ruby/Complex/conj|conj]]</code>===
===[[Ruby/Complex/exp|المعامل <code>**</code>]] ===
يعيد مرافق العدد العقدي الذي استدعي معه.
يؤدي المعامل ‎<code>**</code>عملية الأسّ (exponentiation) على الأعداد العقدية.
===<code rel="mw:WikiLink" title="Ruby/Complex/arg" href="./Ruby/Complex/arg">[[Ruby/Complex/conjugate|conjugate]]</code>===
 
يعيد مرافق العدد العقدي الذي استدعي معه.
===[[Ruby/Complex/plus|المعامل <code>+</code>]] ===
===[[Ruby/Complex/denominator|<code>denominator</code>]]===
يؤدي المعامل ‎<code>+</code>عملية الجمع على الأعداد العقدية.
يعيد قاسم (denominator) العدد العقدي، أي القاسم المشترك الأصغر (LCM، اختصارٌ للعبارة lowest common multiple) للجزأين الحقيقي والتخيلي.
 
===[[Ruby/Complex/fdiv|<code>fdiv</code>]]===
===[[Ruby/Complex/-|المعامل <code>-</code>]] ===
يجري عملية القسمة على العدد العقدي.
يؤدي المعامل ‎<code>-</code>عملية الطرح على الأعداد العقدية.
===[[Ruby/Complex/finite|<code>finite?‎</code>]]===
 
يتحقق مما إذا كانت قيمة الطويلة (r) للشكل القطبي من العدد العقدي الذي استُدعي معه منتهية (finite).
===[[Ruby/Complex/negation|معامل النفي <code>-</code>]] ===
===[[Ruby/Complex/imag|<code>imag</code>]]===
يعيد معامل النفي ‎<code>-</code> نفي (مقابل) العدد العقدي. 
يعيد الجزء التخيلي <nowiki/>[[Ruby/Complex|للعدد العقدي]] الذي استدعي معه.
 
===[[Ruby/Complex/imaginary|<code>imaginary</code>]]===
===[[Ruby/Complex/div|المعامل <code>/</code>]] ===
يعيد الجزء التخيلي <nowiki/>[[Ruby/Complex|للعدد العقدي]] الذي استدعي معه.
يؤدي المعامل ‎<code>/</code>عملية القسمة على الأعداد العقدية.
===[[Ruby/Complex/infinite|<code>‎infinite?‎</code>]]===
 
يعيد قيمةً تشير إذا كانت قيمة الطويلة (r) للشكل القطبي من العدد العقدي منتهية أو غير منتهية (infinite).
===[[Ruby/Complex/equality operator|المعامل <code>==</code>]] ===
يتحقق المعامل ‎<code>==</code>من تساوي عددين عقديين.
 
=== [[Ruby/Complex/abs|التابع <code>abs</code>]] ===
يعيد التابع ‎<code>abs</code> منظم (القيمة المطلقة) للعدد العقدي الذي استدعي معه.
 
===[[Ruby/Complex/abs2|التابع <code>abs2</code>]] ===
يعيد التابع ‎<code>abs2</code> مربع القيمة المطلقة للعدد العقدي الذي استدعي معه.


=== [[Ruby/Complex/angle|التابع ‎<code>angle</code>]] ===
=== [[Ruby/Complex/inspect|<code>inspect</code>]] ===
يعيد التابع ‎<code>angle</code> الجزء الزاوري (angle part) للشكل القطبي للعدد العقدي الذي استدعي معه.
يعيد العدد العقدي على شكل سلسلة نصية لأجل فحصها (inspection).


=== [[Ruby/Complex/arg|التابع <code>arg</code>]] ===
=== [[Ruby/Complex/magnitude|<code>magnitude</code>]] ===
يعيد التابع ‎<code>arg</code> منظم (arg  part) العدد العقدي الذي استدعي معه وفق الشكل القطبي.
يعيد التابع ‎<code>magnitude</code> الجزء المطلق (absolute part) للشكل القطبي للعدد العقدي.
===[[Ruby/Complex/numerator|<code>‎'''numerator‎'''</code>]]===
يعيد التابع ‎<code>numerator</code> بسط (numerator) العدد العقدي الكسري.
===[[Ruby/Complex/phase|<code>phase</code>]]===
يعيد الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استُدعي معه.
===[[Ruby/Complex/quo|<code>quo</code>]]===
يجري عملية القسمة على الأعداد العقدية.
===[[Ruby/Complex/rationalize|<code>rationalize</code>]]===
يعيد القيمة الجذرية (rational) المقابلة للعدد العقدي (ينبغي أن يكون الجزء التخيلي معدومًا).


== مصادر ==
=== [[Ruby/Complex/real|<code>real</code>]] ===
* [http://ruby-doc.org/core-2.5.1/Complex.html قسم الصنف Complex في توثيق روبي الرسمي.]
يعيد الجزء الحقيقي (real part) للعدد العقدي الذي استدعي معه.
===[[Ruby/Complex/real-3F|<code>real?‎</code>]]===
يعيد القيمة <code>false</code> دائمًا مع العدد العقدي.
===[[Ruby/Complex/to c|<code>to_c</code>]]===
يعيد العدد العقدي المعطى نفسه.
===[[Ruby/Complex/to f|<code>to_f</code>]]===
يحول العدد العقدي الذي استدعي معه إلى عدد عشري إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ <code>RangeError</code>).
===[[Ruby/Complex/to i|<code>to_i</code>]]===
يحول العدد العقدي الذي استدعي معه إلى عدد صحيح إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ <code>RangeError</code>). 
===[[Ruby/Complex/to s|<code>to_s</code>]]===
يحول العدد العقدي الذي استدعي معه إلى سلسلة نصية إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ <code>RangeError</code>).  
===[[Ruby/Complex/to r|<code>to_r</code>]]===
يحول العدد العقدي الذي استدعي معه إلى عدد من النوع <code>rational</code> إن كان ذلك ممكنًا  (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيطلق الخطأ <code>RangeError</code> ). 
==مصادر==
*[http://ruby-doc.org/core-2.5.1/Complex.html قسم الصنف Complex في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 12:27، 21 نوفمبر 2018

يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبةً [complex number]) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد i) وفق الشكل a+bi، إذ a هو الجزء الحقيقي، و b هو الجزء التخيلي و i هو الوحدة الخيالية. العدد الحقيقي a يساوي العدد العقدي a+0i حسابيًا.

يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع Kernel.Complex أو  ‏‎::rect أو ‏‎::polar أو ‎.to_c. إليك الأمثلة التالية:

2+1i                 #=> (2+1i)
Complex(1)           #=> (1+0i)
Complex(2, 3)        #=> (2+3i)
Complex.polar(2, 3)  #=> (-1.9799849932008908+0.2822400161197344i)
3.to_c               #=> (3+0i)

يمكنك أيضا إنشاء الكائنات العقدية من الأعداد العشرية أو من السلاسل النصية كما توضح الأمثلة التالية:

Complex(0.3)         #=> (0.3+0i)
Complex('0.3-0.5i')  #=> (0.3-0.5i)
Complex('2/3+3/4i')  #=> ((2/3)+(3/4)*i)
Complex('1@2')       #=> (-0.4161468365471424+0.9092974268256817i)

0.3.to_c             #=> (0.3+0i)
'0.3-0.5i'.to_c      #=> (0.3-0.5i)
'2/3+3/4i'.to_c      #=> ((2/3)+(3/4)*i)
'1@2'.to_c           #=> (-0.4161468365471424+0.9092974268256817i)

تُصنّف الأعداد العقدية إلى أعداد مضبوطة (exact) و غير مضبوطة (inexact):

Complex(1, 1) / 2    #=> ((1/2)+(1/2)*i)
Complex(1, 1) / 2.0  #=> (0.5+0.5i)

الثوابت

الثابت التخيلي I

يمثل العدد التخيلي للأعداد العقدية.

توابع الصنف العامة (Public Class Methods)

polar

يعيد عددا عقديًّا وفق الشكل القطبي (polar form).

rect

يعيد عددًا عقديًا وفق الشكل الجبري أو المستطيلي (rectangular form).

توابع الكائن العامة (Public Instance Methods)

*

يجري عملية الضرب على الأعداد العقدية.

**

يرفع عددًا عقديًّا إلى قوة عددٍ محدَّدٍ.

+

يجري عملية الجمع على الأعداد العقدية.

-

يجري عملية الطرح بين عددين عقديين.

-

يُستعمَل لنفي العدد العقدي (القيمة السالبة منه أن كان موجبًا). 

/

يجري عملية القسمة على الأعداد العقدية.

==

يتحقق من تساوي عددين عقديين.

abs

يحسب الطويلة (r) للعدد العقدي بشكله القطبي الذي استدعي معه ثم يعيدها.

abs2

يعيد مربع الطويلة (r2) للعدد العقدي الذي استدعي معه.

angle

يحسب الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استدعي معه.

arg

يعيد التابع ‎arg الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استدعي معه.

conj

يعيد مرافق العدد العقدي الذي استدعي معه.

conjugate

يعيد مرافق العدد العقدي الذي استدعي معه.

denominator

يعيد قاسم (denominator) العدد العقدي، أي القاسم المشترك الأصغر (LCM، اختصارٌ للعبارة lowest common multiple) للجزأين الحقيقي والتخيلي.

fdiv

يجري عملية القسمة على العدد العقدي.

finite?‎

يتحقق مما إذا كانت قيمة الطويلة (r) للشكل القطبي من العدد العقدي الذي استُدعي معه منتهية (finite).

imag

يعيد الجزء التخيلي للعدد العقدي الذي استدعي معه.

imaginary

يعيد الجزء التخيلي للعدد العقدي الذي استدعي معه.

‎infinite?‎

يعيد قيمةً تشير إذا كانت قيمة الطويلة (r) للشكل القطبي من العدد العقدي منتهية أو غير منتهية (infinite).

inspect

يعيد العدد العقدي على شكل سلسلة نصية لأجل فحصها (inspection).

magnitude

يعيد التابع ‎magnitude الجزء المطلق (absolute part) للشكل القطبي للعدد العقدي.

numerator‎

يعيد التابع ‎numerator بسط (numerator) العدد العقدي الكسري.

phase

يعيد الجزء الزاوي (الزاوية θ) للشكل القطبي من العدد العقدي الذي استُدعي معه.

quo

يجري عملية القسمة على الأعداد العقدية.

rationalize

يعيد القيمة الجذرية (rational) المقابلة للعدد العقدي (ينبغي أن يكون الجزء التخيلي معدومًا).

real

يعيد الجزء الحقيقي (real part) للعدد العقدي الذي استدعي معه.

real?‎

يعيد القيمة false دائمًا مع العدد العقدي.

to_c

يعيد العدد العقدي المعطى نفسه.

to_f

يحول العدد العقدي الذي استدعي معه إلى عدد عشري إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ RangeError).

to_i

يحول العدد العقدي الذي استدعي معه إلى عدد صحيح إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ RangeError). 

to_s

يحول العدد العقدي الذي استدعي معه إلى سلسلة نصية إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيُطلَق الخطأ RangeError).  

to_r

يحول العدد العقدي الذي استدعي معه إلى عدد من النوع rational إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي القيمة 0 تمامًا، وإلا فسيطلق الخطأ RangeError ). 

مصادر