|
|
سطر 2: |
سطر 2: |
| [[تصنيف: Ruby]] | | [[تصنيف: Ruby]] |
| [[تصنيف: Ruby ConditionVariable]] | | [[تصنيف: Ruby ConditionVariable]] |
| يمكن تمثيل الأعداد العقدية (تُسمّى أيضًا أعدادًا مركبة) كزوج مكون من عدد حقيقي ووحدة تخلية (العدد <code>i</code>) ؛ وفق الشكل <code>a+bi</code>، حيث <code>a</code> هو الجزء الحقيقي، و <code>b</code> هو الجزء التخيلي و <code>i</code> هو الوحدة الخيالية.
| | ترفع كائنات الصنفِ <code>ConditionVariable</code> الصنفَ <code>[[Ruby/Mutex|Mutex]]</code>. فباستخدام المتغيرات الشرطية، من الممكن إيقاف مهمة حرجة (critical section) في أثناء تنفيذها إلى حين إتاحة مورد ما. |
|
| |
|
| العدد الحقيقي <code>a</code> يساوي رياضياتيًا العدد العقدي <code>a+0i</code>.
| | إليك الأمثلة التالية:<syntaxhighlight lang="ruby"> |
| | mutex = Mutex.new |
| | resource = ConditionVariable.new |
|
| |
|
| يمكن إنشاء الأعداد العقدية بطريقة حرفية، وأيضا باستخدام التوابع <code>Kernel#Complex</code> أو <code>::rect</code> أو :<code>:polar</code> أو <code>#to_c.</code> إليك الأمثلة التالية:<syntaxhighlight lang="ruby">
| | a = Thread.new { |
| 2+1i #=> (2+1i)
| | mutex.synchronize { |
| Complex(1) #=> (1+0i)
| | # Thread 'a' now needs the resource |
| Complex(2, 3) #=> (2+3i)
| | resource.wait(mutex) |
| Complex.polar(2, 3) #=> (-1.9799849932008908+0.2822400161197344i)
| | # 'a' can now have the resource |
| 3.to_c #=> (3+0i)
| | } |
| </syntaxhighlight>يمكنك أيضا إنشاء الكائنات العقدية من الأعداد من النوع <code>float</code> أو من السلاسل النصية كما توضح الأمثلة التالية:<syntaxhighlight lang="ruby">
| | } |
| Complex(0.3) #=> (0.3+0i)
| | |
| Complex('0.3-0.5i') #=> (0.3-0.5i)
| | b = Thread.new { |
| Complex('2/3+3/4i') #=> ((2/3)+(3/4)*i)
| | mutex.synchronize { |
| Complex('1@2') #=> (-0.4161468365471424+0.9092974268256817i)
| | # Thread 'b' has finished using the resource |
| | resource.signal |
| | } |
| | } |
|
| |
|
| 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)
| |
| </syntaxhighlight>تُصنّف الأعداد العقدية إلى مضبوطة (exact) و غير مضبوطة:<syntaxhighlight lang="ruby">
| |
| Complex(1, 1) / 2 #=> ((1/2)+(1/2)*i)
| |
| Complex(1, 1) / 2.0 #=> (0.5+0.5i)
| |
| </syntaxhighlight> | | </syntaxhighlight> |
| ==الثوابت==
| | |
| ===[[Ruby/Complex/I|الثابت التخيلي <code>I</code>]]===
| |
| يمثل الثابت <code>i</code> العدد التخيلي للأعداد العقدية.
| |
| ==توابع الصنف العامة (Public Class Methods)== | | ==توابع الصنف العامة (Public Class Methods)== |
| ===[[Ruby/Complex/polar|التابع <code>polar</code>]]=== | | ===[[Ruby/Complex/polar|التابع <code>polar</code>]]=== |
| يعيد التابع <code>polar</code> عددا عقديا وفق الشكل القطبي (polar form).
| | |
| ===[[Ruby/Complex/rect|التابع <code>rect</code>]]=== | | ===[[Ruby/Complex/rect|التابع <code>rect</code>]]=== |
| يعيد التابع <code>rect</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
| | |
| ===[[Ruby/Complex/rectangular|التابع <code>rectangular </code>]]=== | | ===[[Ruby/Complex/rectangular|التابع <code>rectangular </code>]]=== |
| يعيد التابع <code>rectangular</code> عددا عقديا وفق الشكل الجبري أو المستطيلي (rectangular form).
| |
| ==توابع الكائن العامة (Public Instance Methods)==
| |
| ===[[Ruby/Complex/star|المعامل <code>*</code>]]===
| |
| يؤدي المعامل <code>*</code>عملية الضرب على الأعداد العقدية.
| |
| ===[[Ruby/Complex/exp|المعامل <code>**</code>]]===
| |
| يؤدي المعامل <code>**</code>عملية الأسّ (exponentiation) على الأعداد العقدية.
| |
| ===[[Ruby/Complex/plus|المعامل <code>+</code>]]===
| |
| يؤدي المعامل <code>+</code>عملية الجمع على الأعداد العقدية.
| |
| ===[[Ruby/Complex/-|المعامل <code>-</code>]]===
| |
| يؤدي المعامل <code>-</code>عملية الطرح على الأعداد العقدية.
| |
| ===[[Ruby/Complex/negation|معامل النفي <code>-</code>]]===
| |
| يعيد معامل النفي <code>-</code> نفي (مقابل) العدد العقدي.
| |
| ===[[Ruby/Complex/div|المعامل <code>/</code>]]===
| |
| يؤدي المعامل <code>/</code>عملية القسمة على الأعداد العقدية.
| |
| ===[[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>]]===
| |
| يعيد التابع <code>angle</code> الجزء الزاوري (angle part) للشكل القطبي للعدد العقدي الذي استدعي معه.
| |
| ===[[Ruby/Complex/arg|التابع <code>arg</code>]]===
| |
| يعيد التابع <code>arg</code> منظم (arg part) العدد العقدي الذي استدعي معه وفق الشكل القطبي.
| |
| ===[[Ruby/Complex/arg|التابع <code>arg</code>]]===
| |
| يعيد التابع <code>conj</code> مرافق العدد العقدي.
| |
| ===[[Ruby/Complex/arg|التابع <code>conjugate</code>]]===
| |
| يعيد التابع <code>conjugate</code> مرافق العدد العقدي.
| |
| ===[[Ruby/Complex/denominator|التابع <code>denominator</code>]]===
| |
| يعيد التابع <code>denominator</code> قاسم (denominator) العدد العقدي، أي المضاعف المشترك الأصغر (lcm) للجزءين الحقيقي والتخيلي.
| |
| ===[[Ruby/Complex/fdiv|التابع <code>fdiv</code>]]===
| |
| يقوم التابع <code>fdiv</code> بعملية القسمة على العدد العقدي.
| |
| ===[[Ruby/Complex/finite|التابع <code>finite?</code>]]===
| |
| يتحقق التابع <code>finite?</code> مما إذا كانت القيمة المطلقة (absolute part) للشكل القطبي للعدد العقدي الذي استُدعي معه منتهيًا (finite).
| |
| ===[[Ruby/Complex/imag|التابع <code>imag</code>]]===
| |
| يعيد التابع <code>imag</code> الجزء التخيلي للعدد العقدي.
| |
| ===[[Ruby/Complex/imaginary|التابع <code>imaginary</code>]]===
| |
| يعيد التابع <code>imaginary</code> الجزء التخيلي (imaginary part) للعدد العقدي.
| |
| ===[[Ruby/Complex/infinite|التابع <code>infinite?</code>]]===
| |
| يعيد التابع <code>infinite?</code> قيمة بحسب ما إذا كانت القيمة المطلقة (absolute part) للشكل القطبي للعدد العقدي منتهية أو غير منتهية (infinite).
| |
|
| |
| [[Ruby/Complex/inspect|التابع <code>inspect</code>]]
| |
|
| |
| يعيد التابع <code>inspect</code> العدد العقدي على شكل سلسلة نصية لأجل التفتيش (inspection).
| |
|
| |
| [[Ruby/Complex/magnitude|التابع <code>magnitude</code>]]
| |
|
| |
| يعيد التابع <code>magnitude</code> الجزء المطلق (absolute part) للشكل القطبي للعدد العقدي.
| |
| ===[[Ruby/Complex/numerator|التابع <code>numerator</code>]]===
| |
| يعيد التابع <code>numerator</code> مقام (numerator) العدد العقدي.
| |
| ===[[Ruby/Complex/phase|التابع <code>phase</code>]]===
| |
| يعيد التابع <code>phase</code> الجزء الزاوي (angle part) للشكل القطبي للعدد العقدي الذي استُدعي معه.
| |
| ===[[Ruby/Complex/quo|التابع <code>quo</code>]]===
| |
| يؤدي التابع <code>quo</code>عملية القسمة على الأعداد العقدية.
| |
| ===[[Ruby/Complex/rationalize|التابع <code>rationalize</code>]]===
| |
| يعيد التابع <code>rationalize</code> القيمة الجذرية (rational ) المقابلة للعدد العقدي. ينبغي أن يكون الجزء التخيلي معدوما.
| |
|
| |
| [[Ruby/Complex/real|التابع <code>real</code>]]
| |
|
| |
| يعيد التابع <code>real</code> الجزء الحقيقي (real part) للعدد العقدي.
| |
|
| |
| === [[Ruby/Complex/real-3F|التابع <code>real? </code>]] ===
| |
| يعيد التابع <code>real?</code> القيمة <code>false</code> دائمًا.
| |
|
| |
| === [[Ruby/Complex/to c|التابع <code>to_c</code>]] ===
| |
| يعيد التابع <code>to_c</code> العدد العقدي نفسه.
| |
|
| |
| === [[Ruby/Complex/to f|التابع <code>to_f</code>]] ===
| |
| يعيد التابع <code>to_f</code> العدد العقدي الذي استدعي معه على شكل عدد من النوع <code>float</code> إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي العدد 0 تمامًا، وإلا فسيطلق الخطأ <code>RangeError</code>).
| |
|
| |
| === [[Ruby/Complex/to i|التابع <code>to_i</code>]] ===
| |
| يعيد التابع <code>to_i</code> العدد العقدي الذي استدعي معه على شكل عدد صحيح من النوع <code>integer</code> إن كان ذلك ممكنًا (ينبغي أن يساوي الجزء التخيلي العدد 0 تمامًا، وإلا فسيطلق الخطأ <code>RangeError</code>).
| |
|
| |
|
| === [[Ruby/Complex/to s|التابع <code>to_s</code>]] ===
| |
| يعيد التابع <code>to_s</code> العدد العقدي الذي استدعي معه على شكل سلسلة نصية.
| |
| ===[[Ruby/Complex/to r|التابع <code>to_r</code>]]===
| |
| يعيد التابع <code>to_r</code> القيمة الجذرية (rational ) المقابلة للعدد العقدي. ينبغي أن يكون الجزء التخيلي معدوما.
| |
| ==مصادر== | | ==مصادر== |
| <span> </span>
| |
| *[http://ruby-doc.org/core-2.5.1/Complex.html قسم الصنف Complex في توثيق روبي الرسمي.] | | *[http://ruby-doc.org/core-2.5.1/Complex.html قسم الصنف Complex في توثيق روبي الرسمي.] |