عاملي

من موسوعة العلوم العربية
اذهب إلى التنقل اذهب إلى البحث

في الرياضيات، المضروب أو العاملي لعدد صحيح طبيعي n، والذي يكتب n!، والذي يقرأ "عاملي n"، هو جذاء الأعداد الصحيحة الموجبة قطعا والأصغر أو تساوي n. و يكتب :

أمثلة :

  • 1! = 1
  • 2! = 1 x 2 = 2
  • 3! = 1 x 2 x 3 = 6
  • 10! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = 3628800

و تعريف العاملي على شكل جذاء يترتب عنه كون 0! = 1 ذلك أن 0! جذاء مفرغ، وبمعنى آخر مقتصر على العنصر المحايد في عملية الضرب.

و يلعب العاملي دورا أساسيا في علم الإحتمالات والتراتيب بما أنه يوجد n! طريقة مختلفة لتوزيع n شيئا. و يظهر العاملي في عدة معادلات رياضية، مثل سيغة الثنائي لنيوتن وصيغة تايلور.

و تعطينا صيغة ستيرلينغ مقاربا لـ n! عندما تكون n كبيرة :

عاملي عدد غير صحيح

لكل عدد صحيح n، لدينا حيث Γ هي دالة أولير (دالة غاما) وضعها ليونارد أولير. وتمكننا دالة أولير من تعميم العاملي على مجموعة الأعداد المركّبة باستثناء الأعداد السالبة قطعا. وفي النهاية نجد :

البرمجة

يمكن حساب عاملي عدد ما باستعمال خوارزميات الاستقراء. فلنكتب باستعمال لغة Scheme، القريبة من لغة Lisp، برنامجا استقرائيا يعطينا عاملي عدد صحيح :

(define fact
  (lambda (x)
    (if (= x 0) 1
      (* x (fact (- x 1))))))

و هذا البرنامج السابق غير مفيد في حالة الاعداد الكبيرة.

و بنفس الطريقة في Caml :

let rec fact n = 
  match n with
    | 0 -> 1
    | _ -> n * fact(n-1)
;;

و بطريقة أخرى:

let fact n =
  let rec aux n r =
    match n with
      | 0 -> r
      | _ -> aux (n-1) (n*r)
  in
  aux n 1
;;

و في لغة سي:

 int factorielle_recursive(int n)
 {
   if (n == 0)
     return 1;
   else
     return n * factorielle_recursive(n-1);
 }

و بطريقة أخرى:

 int factorielle_iterative(int n)
 {
   int res;
    
   for (res = 1; n > 1; n--)
     res *= n;
    
   return res;
 }

و في لغة Python:

 fact = lambda x : x>0 and x*fact(x-1) or 1
 
 ----------------------------------------------------
 
 الاستعمال :
 for i in range(10):
     print "fact %d = %d" %(i, fact(i))
 
 ويظهر على الشاشة :
 fact 0 = 1
 fact 1 = 1
 fact 2 = 2
 fact 3 = 6
 fact 4 = 24
 fact 5 = 120
 fact 6 = 720
 fact 7 = 5040
 fact 8 = 40320
 fact 9 = 362880

هذه الدوال (البرامج) لا تمكننا من حساب عملي أعداد أكبر من 12 إذا كانت الاعداد الصحيحة محدودة بـ 32 بت، لأن النتيجة تتعدى المساحة المتوفرة.