سه‌تایی فیثاغورثی

(تغییرمسیر از اعداد فیثاغورسی)

یک سه تایی فیثاغورثی شامل سه عدد صحیح مثبت و است چنان که . چنین سه تایی را اغلب به صورت می نویسند. مثال معروفی از آن است. اگر یک سه تایی فیثاغورثی باشد، آنگاه نیز برای هر عدد صحیح مثبت مجدداً یک سه تایی فیثاغورسی است. یک سه تایی فیثاغورثی اولیه سه تایی است که در آن و متباین باشند (یعنی، هیچ مقسوم علیه مشترکی بزرگتر از ۱ نداشته باشند).[۱] مثلثی که اضلاع آن تشکیل سه تایی فیثاغورسی دهند را مثلث فیثاغورسی نامند که لزوماً قائم الزاویه خواهد بود.

انیمیشنی که نشانگر نحوه ساخت ساده ترین سه تایی فیثاغورثی است.

این نام (سه تایی فیثاغورسی) نشأت گرفته از قضیه فیثاغورس است که بیان می دارد، طول اضلاع هر مثلث قائم الزاویه ای در فرمول صدق می کند؛ لذا، سه تایی های فیثاغورسی توصیف گر سه ضلع صحیح یک مثلث قائم الزاویه می باشد. با این حال، مثلث های قائم الزاویه ای که اضلاع صحیح ندارند تشکیل سه تایی فیثاغورثی نمی دهند. به عنوان مثال، مثلثی که اضلاعش به صورت و است یک مثلث قائم الزاویه است، اما تشکیل یک سه تایی فیثاغورثی نمی دهد چرا که عدد صحیح نیست.

سه تایی های فیثاغورسی از زمان های باستان شناخته شده بودند. قدیمی ترین سند ثبت شده آن مربوط به پلیمپتون ۳۲۲ است، که یک لوح بابلی از زمان ۱۸۰۰ قبل از میلاد است که در دستگاه اعداد شصت تایی نوشته شده است. این لوح توسط ادگار جیمز بنکس، کمی بعد از ۱۹۰۰ میلادی کشف شد و به جورج آرتور پلیمپتون در ۱۹۲۲ به قیمت ۱۰ دلار فروخته شده.[۲]

زمانی که به دنبال جواب های صحیح معادله هستیم، به معادله اخیر معادله سیاله ای می گوییم. لذا سه تایی های فیثاغورثی یکی از قدیمی ترین حل های غیر خطی معادلات سیاله‌ای (یا معادلات دیوفانتاین، یا معادله دیوفانتینی) هستند.

فهرست اعداد ویرایش

۱۶ سه تایی فیثاغورثی اولیه (یعنی سه تایی هایی که نسبت به هم متباین باشند) کوچکتر از ۱۰۰ وجود دارند:

(3, 4, 5) (6 ,8 , 10) (5, 12, 13) (8, 15, 17) (7, 24, 25)
(20, 21, 29) (12, 35, 37) (9, 40, 41) (28, 45, 53)
(11, 60, 61) (12 ,16 , 20) (16, 63, 65) (33, 56, 65) (48, 55, 73)
(13, 84, 85) (36, 77, 85) (39, 80, 89) (65, 72, 97)

روش به دست آوردن ویرایش

محاسبه ذهنی ویرایش

به دست آوردن نمونه‌ای از اعداد فیثاغورسیِ کوچک به صورت ذهنی می‌تواند بسیار آسان باشد؛ به‌گونه‌ای که تمام مضارب اعداد ۳٬۴٬۵ جزء اعداد فیثاغورسی‌اند. به عنوان نمونه   که ۱۰و۸و۶ هستند. این موضوع با تمام مضارب دیگر نیز برقرار خواهد بود.

میتوان از تساوی های جبری نیز برای به‌دست آوردن اعداد فیثاغورس استفاده کرد. برای مثال برای n که عددی طبیعی و بزرگتر از یک است داریم تمام اعداد به شکل   اعداد فیثاغورسی‌اند.(از این فرمول میتوان نتیجه گرفت تمام اعداد فرد بزرگتر از یک میتوانند در سه تایی فیثاغورسی شرکت کنند و کوچکترین عضو باشند)

همچنین اگر x و y دو عدد نسبت به هم اول باشند و x بزرگتر از y باشد اعداد   نیز اعداد فیثاغورسی‌اند.

در برنامه‌نویسی رایانه‌ای ویرایش

 
خروجی برنامهٔ یافتن اعداد فیثاغورثی با S=۱۰۰۰۰۰۰۰۰۰۰

برای به دست آوردن اعداد فیثاغورسی می‌توان از کدی شبیه به کد زیر استفاده کرد:

for(int i=1;i<max;i++)
    for(int j=i;j<max;j++)
        for(int k=j;k<max;k++)
            if(((i*i) + (j*j)) == (k*k) )
                cout<<i*i<<" + "<<j*j<<" = "<<k*k;

که البته کدی بهینه نشده‌است و در صورتی که محدودیت max عددی بزرگ باشد بسیار کند خواهد بود.

در صورت استفاده از کدهای بهینه شده، نتیجهٔ برنامه بسیار سریع‌تر خواهد بود و برای محدودیت کوچکتر از ۱۰۱۰ در کسری از ثانیه به جواب خواهد رسید. محدودیت‌های دیگری که برای این کد می‌توان در نظر گرفت این است که مجموع اعدادی که به توان می‌رسند برابر با محدودیت کلی باشد. برای مثال تنها سه عدد فیثاغورثی ۲۰۰، ۳۷۵ و ۴۲۵ وجود دارند که مجموع آن‌ها دقیقاً ۱۰۰۰ است.

نمونه‌ای از کد به زبان سی‌پلاس‌پلاس که به صورت بهینه ( و نه کاملاً بهینه) با استفاده از بزرگ‌ترین مقسوم‌علیه مشترک چنین اعدادی را می‌یابد:

// تابع findPythTriplet

vector<long long int> findPythTriplet(long long int until)
{
    long long int s=until,s2=s/2,m,sm,k,d,n,a,b,c;
    long long int mLimit=(long long int)sqrt((double)s2);
    vector<long long int> results;
    for(m=2;m<=mLimit;m++)
    {
        if(s2%m==0)
        {
            sm=s2/m;
            while(sm%2==0)
            {
                sm = sm/2;
            }
            if(m%2==1)
            {
                k=m+2;
            }
            else
            {
                k=m+1;
            }
            while (k<(2*m) && k<=sm)
            {
                if(sm%k==0 && gcd(k,m)==1)
                {
                    d=s2/(k*m);
                    n=k-m;
                    a=d*(m*m-n*n);
                    b=2*d*m*n;
                    c=d*(m*m+n*n);
                    results.push_back(a);
                    results.push_back(b);
                    results.push_back(c);
                }
                k+=2;
            }
        }
    }
    return results;
}

جستارهای وابسته ویرایش

پانویس ویرایش

  1. (Long 1972، ص. 48)
  2. Robson, Eleanor (2002), "Words and Pictures: New Light on Plimpton 322" (PDF), Mathematical Association of America Monthly, 109: 105–120

منابع ویرایش