في الرياضيات المسلية، الوَفْقُ[1][2] أو المربع السحري هي مصفوفة مربعة ذات حيز ، مكونة من أعداد صحيحة، بحيث أن حاصل جمع رقم في كلّ من الصفوف والأعمدة والأقطار الرئيسية يأدي لنفس الحاصل.[3] توجد مربعات سحرية مهما كان الحيز ، بإقصاء (أربع أعداد)، مع كون الحالة تعتبر أمرا بديهيا. يبين الشكل التالي مثالا لمربع سحري من

مربع سحري بالفارسية يرجع للقرن السادس عشر الميلادي - من دار الوثائق القومية المصرية.

لاحظ أن مجموع كل سطر وعمود وقطر رئيسي يساوي دائما 15. يسمى هذا المجموع ثابتا سحريا وقيمته بصفة عامة:

قيم الثوابت السحرية لمربعات سحرية عادية ذات حيز هي متتالية: (البقية[4]).

بناء المربعات السحرية عدل

هناك العديد من الطرق القديمة والحديثة لبناء مربعات سحرية.[5] يمكن تصنيف المربع السحري إلى ثلاثة أنواع رئيسية:

  • مربع سحري ذو رتبة فردية n.
  • مربع سحري ذو رتبة زوجية مفردة n (أي ان = n/2 عدد فردي).
  • مربع سحري ذو رتبة زوجية مضاعفة n (أي ان = n/2 عدد زوجي).

طرق إنشاء مربعات سحرية فردية الرتبة عدل

 
طريقة بناء مربع سحري فردي الرتبة.

تتميز المربعات السحرية فردية الرتبة في إمكانية تدوير المربع حتى تصبح الصفوف والأعمدة أقطارا بينما الأقطار صفوفا وأعمدة. يكون مركز المربع السحري دائما   تتم العملية بالشكل الاتي:

1- تعبئة المربع بالأرقام 1 حتى n2. سيتم تكرار المربع السحري من جميع جوانبه لتسهيل معرفة الأرقام المكملة خارجه عند الإزاحة.
2- قراءة أحد القطرين وليكن القطر الرئيسي ووضعه كعمود وسط المصفوفة الجديدة.
3- قراءة الخلايا الموازية فوق القطر الرئيسي مع إزاحتها خلية واحدة (من الصف والعمود) في كل مرة عن سابقتها نحو اليسار والأعلى. يتم التوقف بعد n-1)/2) خطا موازيا للقطر الرئيسي.
3- قراءة الخلايا الموازية تحت القطر الرئيسي مع إزاحتها خلية واحدة (من الصف والعمود) في كل مرة عن سابقتها نحو اليمين والأسفل. يتم التوقف بعد n-1)/2) خط موازيا للقطر الرئيسي.
4- يتم نقل العناصر الجديدة إلى مصفوفة جديدة مع تدويرها 45 درجة بحيث تصبح الصفوف والأعمدة الأصلية أقطارا والأقطار الأصلية صفوفا.

طرق إنشاء مربعات سحرية زوجية الرتبة (مضاعفة) عدل

 
طريقة بناء مربع سحري ذو رتبة زوجية مضاعفة.

تمتاز المربعات السحرية التي يقبل ثابتها السحري القسمة على 4 بدون باقي بإمكانية تطبيق قاعدة التبديل بين المرافقات بعد كل خليتين. يمكن تلخيص العملية كما يلي

1- تعبئة المربع بالأرقام 1 حتى n2.
2- التبديل بين جميع أركان المربع. مثلا في المربع 4×4 تكون أركانه هي 1، 4، 13، 16. عند التبديل بين الركن الأول والرابع أي 1، 16 والركن الثاني والثالث أي 4، 13.
3- يتم تكرار الإبدال لكل خليتين متتاليتين (مع ما يقابهما أي التبديل بين كل a(n-i+1)(n-j+1) وaji) وترك خليتين أخريين ابتداء من الخلية الثالثة في الصف الأول وحتى الوصول إلى مركز المربع مع عدم المساس بالأركان التي تم تغييرها في الخطوة السابقة.

طرق إنشاء مربعات سحرية زوجية الرتبة (مفردة) عدل

 
طريقة بناء مربع سحري ذو رتبة زوجية مفردة.

تعتبر عملية إنشاء المربعات السحرية التي لا تقبل القسمة على 4 بدون باقي صعبة نسبيا، كما أنها لا تتميز بالتماثل التام. أبسط الطرق تتمثل في إعادة تقسيم المربع إلى 4 مربعات صغيرة متكافئة كما يلي:

1- تقسيم المربع إلى 4 مربعات صغيرة متكافئة. لاحظ أن المربعات الناشئة عبارة عن مربعات فردية.
2- تعبئة المربع الأول بالأرقام 1 حتى n2/4.
3- تحويل المربع في الخطوة 2 إلى مربع سحري بالطريقة المستخدمة في المربعات السحرية الفردية.
4- نقل نسخة من هذا المربع في المربعات الثلاثة الباقية مع إضافة n2/4 لكل عنصر في المربع الثاني، n2/2 لكل عنصر في المربع الثالث، و3n2/4 لكل عنصر في المربع الرابع.
5- أصبح المربع السحري جاهزا تقريبا ولكن ينقصه شرط تحقق مجموع عناصر كل قطر. في هذه الحالة يتم التبديل بين بعض عناصر مربعين متجاورين حتى يكتمل الشرط.

مشاكل رياضية ذات صلة عدل

استخدام عملية الطرح في مكعب من الاعداد من 1 إلى 9

الخوارزمية عدل

برمجة المربعات السحرية عدل

حساب المربعات السحرية يصبح سهلا بعد معرفة خوارزمياتها ومن الممكن برمجتها بأي لغة برمجة. مثلا باستعمال متصفح الويب ولغة جافا سكربت يمكن إنشاء دالة المربع السحري لأي عدد طبيعي كما يلي[6]

<html>
<script>
function magic(n)
{
   var i=0, j=(n-1)/2, p, k, m=[],  m1=[], m2=[];
    if(n<=0 || n-Math.ceil(n)!=0) return 'Error: n must be a positive integer..';
    if(n==2) return 'Error: there is no magic square of 2x2 !';
    if(n%4==0){//Double Even
        for (i=0; i<n/2; i++){
            for (j=0; j<n; j++){
                if((((i%4==0)||(i%4==3))&&((j%4==1)||(j%4==2)))||(((j%4==0)||(j%4==3))&&((i%4==1)||(i%4==2)))){
                    m1[j]= i*n+j+1;
                    m2[n-j-1]= n*(n-i)-j;
                }
                else{
                    m1[j]= n*(n-i)-j;
                    m2[n-j-1]=i*n+j+1;
                }            }
            m[i]=m1;
            m[n-i-1]=m2;
            m1=[];
            m2=[];
        }
    }
    else if(n%2==0){//Single Even
        p = n/2;
        m1 = magic(p);
        for (i=0; i<2*p; i++)m[i]=[];
        for (i=0; i<p; i++)for(j=0; j<p; j++){
            m[i][j] = m1[i][j]*1;
            m[i][j+p] = m1[i][j]*1+2*p*p;
            m[i+p][j] = m1[i][j]*1+3*p*p;
            m[i+p][j+p] = m1[i][j]*1+p*p;
         }
        for(i=0; i<p; i++){
            k = (n-2)/4;
            for(j=0; j<k; j++){
                k2=m[i][j];
                m[i][j]=m[i+p][j];
                m[i+p][j]=k2;
            }
        }
        for(i=0; i<p; i++){
            for(j=n-k+1; j<n; j++){
                k2=m[i][j];
                m[i][j]=m[i+p][j];
                m[i+p][j]=k2;
            }
        }
        k2=m[k][0]; m[k][0]=m[k+p][0]; m[k+p][0]=k2;
        k2=m[k][k]; m[k][k]=m[k+p][k]; m[k+p][k]=k2;
    }
    else{// Odd
        for (k=1; k<=n*n; k++)
        {
            m2[i*n +j] = k;
            i--;
            j++;
            if (k%n == 0){
                i += 2;
                j--;
            }
            if (j==n)j = 0;
            if (i==-1) i = n-1;
        }
        for(i=0;i<n;i++){for(j=0;j<n;j++)m1[j]=m2[i*n+j];m[i]=m1;m1=[];}
    }
    m[0][0]=' '+m[0][0];
    for (k=0; k<n; k ++) m[k][n-1] += '\n';
    return m;
}
</script>
<noscript> Java script must be enabled..<br /> </noscript>
<body>
Magic square of <input id=ent value="6">
<input type="button" value = " = " onclick ="disp.value=magic(ent.value*1)">
<br /><textarea id="disp" style="width: 780px; height: 300px">
</textarea>
</body>
</html>

تطبيقات عدل

للمربع السحري بعض التطبيقات المسلية والعلمية أحيانا. يمكن بواسطته مثلا تحليل المساحات بشكل منتظم. مثال ذلك المسألة التالية:

لو كان لدينا 81 قطعة ذهبية بحيث أن كتلة كل قطعة تساوي ترتيبها. أي أن كتلة الأولى 1 غرام والثانية 2 غرام وهكذا وتطلب الأمر توزيعها بشكل عادل بين 9 أفراد. نلاحظ أن إعادة توزيع هذه القطع في مربع سحري 9×9 يعطي الحل الأمثل بحيث يصبح نصيب كل فرد أحد صفوف المربع. يمكن أيضا توزيعها بطريقة الأعمدة بحيث يكون نصيب كل فرد أحد أعمدة المربع السحري.

مراجع عدل

  1. ^ كتاب ديوان العدد الوفق، لمؤلف مجهول. (مخطوطة على موقع مكتبة قطر الوطنية) (تاريخ الاطلاع: 11 ديسمبر 2021) نسخة محفوظة 12 ديسمبر 2021 على موقع واي باك مشين.
  2. ^ (بالإنجليزية) تعريف Magic square على موقع فهرس مخطوطات الطب الإسلامي في المكتبة الوطنية لعلم الطب، حيث تظهر كلمة wafq وَفْق كترجمة للكلمة. (تاريخ الاطلاع: 11 ديسمبر 2021)
  3. ^ Magic Square" by Onkar Singh Wolfram MathWorld. نسخة محفوظة 28 يونيو 2017 على موقع واي باك مشين.
  4. ^ The On-Line Encyclopedia of Integer Sequences نسخة محفوظة 11 أكتوبر 2010 على موقع واي باك مشين.
  5. ^ Magic Squares by Del Hawley NRICH نسخة محفوظة 03 يوليو 2012 على موقع واي باك مشين.
  6. ^ صفحة المعالج الرياضي مصممة كليا بلغة HTML وجافا سكربت نسخة محفوظة 29 يونيو 2012 على موقع واي باك مشين.