امتیاز موضوع:
  • 5 رأی - میانگین امتیازات: 1.6
  • 1
  • 2
  • 3
  • 4
  • 5
حل معادلات درجه سوم آسان شد!
#1
حل معادلات درجه سوم آسان شد!

Cubic Formula versus Quadratic Formula


آنچه در زیر میخوانید خلاصه ی تحقیقی است که من در حدود دو سال پیش بر روی معادلات درجه سوم انجام دادم و نتیجه ی آنرا در یک مقاله ی تقریبا" بیست صفحه ای در اکتبر گذشته در یک کنفرانس ریاضی در شمال غرب کانادا عرضه نمودم.



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



من در سخنرانی خود با عنوان "حل معادلات درجه سوم آسان شد"، نخست مروری داشتم بر تاریخچه حل معادله درجه سوم از آغاز تا امروز. برای من باعث مباهات بود که به شرکت کنندگان در این کنفرانس ، از عمر خیام به عنوان یکی از پیشروان حل معادلات درجه سوم بگویم و به تشریح روش هندسی این ریاضیدان بزرگ که تقریبا" هزار سال پیش ریشه ی مثبت یکدسته از معادلات درجه سوم را از طریق برخورد یک دایره و یک سهمی پیدا نمود، بپردازم. نیز از همکاری خیام در ایجاد تقویم جلالی و مقایسه دقت آن با تقویم گره گوری یاد نمودم. همچنین از تلاشهای موفقیت آمیز ریاضیدانان قرن شانزدهم ایتالیا در حل معادلات درجه سوم ذکری به میان آوردم. پس از آن به تشریح جزئیات تحقیقات ویافته های خود پرداختم. (در نظر داشتم و از قبل هم آماده کرده بودم که در پایان سخنرانی ام چند رباعی از خیام، از آن رباعی هایی که بیشتر مورد پسند ملل مغرب زمین است، برای حضار با آواز بخوانم، به همان شکل که در بوستان شعر و آواز خوانده ام ولی متاسفانه وقت اجازه نداد.)



اصل مقاله قرار است که در سال 2007 در یکی از ژورنال های ریاضی کانادا منتشر شود، در آنوقت آنرا ترجمه خواهم کرد و در این وبلاگ به نظر گرامی شما خواهم رساند. عجالتا" خلاصه مقاله را در زیر ملاحظه بفرمایید. همین خلاصه هم، خود برای حل هر نوع معادله درجه سوم یک مجهولی کافی است و اصل مقاله در واقع به تشریح استخراج این فرمولها میپردازد و دانستن آن برای حل معادله درجه سوم ضروری نیست.


از مجموع آرایی که از مستمعین خود پس از پایان سخنرانی ام دریافت کردم چنین بنظر میرسد که روش زیر ساده ترین و کوتاهترین و در عین حال دقیقترین روش برای حل هر نوع معادله درجه سوم میباشد. خودم نیز که در
مدت تحقیقم بر روی این مطلب نزدیک بیست مقاله را در روی شبکه خوانده ام فکر میکنم که این روش کوتاه ترین روشی است که هر سه ریشه گویای معادلات درجه سوم را بطور دقیق تعیین میکند ولی اگر ریشه ها گنگ باشند و یا مختلط، در آنصورت مقدار اعشاری آنها را به دست میدهد. سادگی این روش به حدی است که من تصور میکنم میتوان آنرا به سهولت در سالهای پایانی دبیرستان آموزش داد. من اینکار را در کلاسهای درس خودم کرده ام و نتیجه اش مطلوب بوده است.


متاسفانه در جستجوهایم در روی شبکه به گزارشی از محققین و ریاضیدانهای ایرانی در مورد معادلات درجه سوم برخورد نکردم. اگر شما خبر دارید که در این مورد در ایران مطالعه ای شده و از منبع آن اطلاع دارید تقاضا دارم که نشانی منبع را در اختیار من بگذارید. باعث کمال سپاسگزاری است.


همچنین خواهشمندم از روش زیر استفاده کنید و آنرا در حل معادلاتی که به آنها برخورد میکنید بکار گیرید و اگر نظری در اینمورد دارید مرا از آن بی نصیب نگذارید. این نیز باعث سپاسگزاری است.

[تصویر:  13662908981.jpg]

آنچه در بالا آمد ترجمه ی کوتاه و فشرده ی مطلب زیر است که در آن فرمولهایی هم برای دو ریشه ی دیگر معادله داده شده است:

چه شباهت جالب و شگفت آوری!

من فرمولهای (۱) و (۲) و (۳) بالا را قبلا" در جایی ندیده ام. امکان دارد جدید باشند.

اینک چند مثال:


مطالب زیر در پاسخ به سوال آقای محمد مهان پور (نگاه کنید به نظر شماره ۵ ) به مقاله اضافه شده است.

[تصویر:  13662909791.jpg]
[تصویر:  13662909792.jpg]
اگر چه در محاسبه ی (sin(20 درجه در بالا D و q هر دو منفی شدند ولی این توضیح لازم بود که تتا هم لاجرم منفی خواهد شد. در این صورت حتما" باید (پی) به آن افزوده شود تا مثبت گردد. این مطلب را بواسطه ی اشکالی که آقای مهان پور دوباره به آن برخوردند باز در یک مثال دیگر در زیر می آورم:

[تصویر:  13662911321.jpg]
ببخشید! مخرج کسر آخری در بالا باید ۹ باشد اشتباها" ۳ نوشتم.

البته این روش رو که من توی اینترنت پیدا کردم ، ولی دوستان اگه کسی روش مناسبی برای حل معادله درجه 3 میشناسه که می شه توی برنامه نویسی ازش استفاده کرد ، خیلی استقبال میکنم . الان شدیدا نیاز دارم به یه ماشین حساب بفهمونم که یه معادله رو حل کنه البته بدون توابع پیشفرض خودش !

منبع : وبلاگ اندیشه ریاضی

می گویند تقوا از تخصص لازم تر است
آنرا می پذیرم، اما می گویم:
آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست.
- شهید دکتر چمران
پاسخ
 سپاس شده توسط Hamid Jafary Pooya ، hat chiken ، M@h$A
#2
چندتا از دوستام هستن که هم آنالیز عددی پاس کردن هم جبرخطی عددی دارن پاس میکنن....
فک کنم اونا بتونن کمک کنن.
ازشون میپرسم.
تا کی میخواین؟
پاسخ
 سپاس شده توسط مسعود وحید
#3
(19-04-2013، 06:06 PM)Farzaneh RoshanZamir نوشته است:  چندتا از دوستام هستن که هم آنالیز عددی پاس کردن هم جبرخطی عددی دارن پاس میکنن....
فک کنم اونا بتونن کمک کنن.
ازشون میپرسم.
تا کی میخواین؟
ممنون . مشکل رفع شد .
مسئله ای که درگیر حلش بودم یک مساله فیزیکی بود یعنی معادله اش همیشه سه تا ریشه ی حقیقی رو داشت . پس یه مشکل بزرگ به اسم اعداد مجازی رو نداشتیم !
بعد از دو روز گشتن ، بالاخره یه الگوریتم برای حل معادله درجه 3 پیدا کردم که البته فقط قسمتی از اون که مربوط به معادلات با ریشه های حقیقی بود رو روی مشاین حساب اجرا کردم و خیلی عالی هم جواب داد.

این روند کلی حل مساله توسط این الگوریتمه که در کل نوع کارکردش با متغییرها نشون میده که خوراک برنامه های کامپیوتریه .

[تصویر:  13663810071.png]
البته این یکمم ریزه کاری داره که توی کدهای برنامه اش هست ولی توی فرمولی که نوشته نیست ! واسه همین من کدهای برنامه اشون رو هم استخراج کردم و اینجا میذارم تا عبرتی بشه واسه آیندگاشون . Blush
کد:
function cubicsolve(dataForm)
{
    var a = parseFloat(dataForm.aIn.value);
    var b = parseFloat(dataForm.bIn.value);
    var c = parseFloat(dataForm.cIn.value);
    var d = parseFloat(dataForm.dIn.value);
    if (a == 0)
    {
        alert("The coefficient of the cube of x is 0. Please use the utility for a SECOND degree quadratic. No further action taken.");
        return;
    } //End if a == 0

    if (d == 0)
    {
        alert("One root is 0. Now divide through by x and use the utility for a SECOND degree quadratic to solve the resulting equation for the other two roots. No further action taken.");
        return;
    } //End if d == 0
    b /= a;
    c /= a;
    d /= a;
    var disc, q, r, dum1, s, t, term1, r13;
    q = (3.0*c - (b*b))/9.0;
    r = -(27.0*d) + b*(9.0*c - 2.0*(b*b));
    r /= 54.0;
    disc = q*q*q + r*r;
    dataForm.x1Im.value = 0; //The first root is always real.
    term1 = (b/3.0);
    if (disc > 0) { // one root real, two are complex
        s = r + Math.sqrt(disc);
        s = ((s < 0) ? -Math.pow(-s, (1.0/3.0)) : Math.pow(s, (1.0/3.0)));
        t = r - Math.sqrt(disc);
        t = ((t < 0) ? -Math.pow(-t, (1.0/3.0)) : Math.pow(t, (1.0/3.0)));
        dataForm.x1Re.value = -term1 + s + t;
        term1 += (s + t)/2.0;
        dataForm.x3Re.value = dataForm.x2Re.value = -term1;
        term1 = Math.sqrt(3.0)*(-t + s)/2;
        dataForm.x2Im.value = term1;
        dataForm.x3Im.value = -term1;
        return;
    }
    // End if (disc > 0)
    // The remaining options are all real
    dataForm.x3Im.value = dataForm.x2Im.value = 0;
    if (disc == 0){ // All roots real, at least two are equal.
        r13 = ((r < 0) ? -Math.pow(-r,(1.0/3.0)) : Math.pow(r,(1.0/3.0)));
        dataForm.x1Re.value = -term1 + 2.0*r13;
        dataForm.x3Re.value = dataForm.x2Re.value = -(r13 + term1);
        return;
    } // End if (disc == 0)
    // Only option left is that all roots are real and unequal (to get here, q < 0)
    q = -q;
    dum1 = q*q*q;
    dum1 = Math.acos(r/Math.sqrt(dum1));
    r13 = 2.0*Math.sqrt(q);
    dataForm.x1Re.value = -term1 + r13*Math.cos(dum1/3.0);
    dataForm.x2Re.value = -term1 + r13*Math.cos((dum1 + 2.0*Math.PI)/3.0);
    dataForm.x3Re.value = -term1 + r13*Math.cos((dum1 + 4.0*Math.PI)/3.0);
    return;
}  //End of cubicSolve
// end of JavaScript-->

و این هم کد بومی سازی شده کدهای جاوا اسکریپت ، در PHP به منظور تست برنامه ! البته کد پایین فقط برای معادلاتی جواب میده که هر سه ریشه اشون حقیقی باشه .
کد php:
<?php
$b 
"xxx";
$c "yyy";
$d "zzz";

$q = (3*$c - ($b*$b))/9;

echo 
"Q = ".$q."<br/>";

$r = -(27*$d) + $b*(9*$c 2*($b*$b));
$r $r/54;
echo 
"R = ".$r."<br/>";
echo 
"Q^3 = ".pow($q,3)."<br/>R^2 = ".pow($r,2)."<br/>";
$disc $q*$q*$q $r*$r;
if (
$disc 0){
$term1 = ($b/3);
$q = -$q."<br/>";
    
$dum1 $q*$q*$q;
    
$dum1 acos($r/sqrt($dum1));
    echo 
$dum1."<br/>";
    
$r13 2.0*sqrt($q);
    echo 
$r13."<br/>";
    
$x1 = -$term1 $r13*cos($dum1/3.0);
    
$x2 = -$term1 $r13*cos(($dum1 2.0*3.14)/3.0);
    
$x3 = -$term1 $r13*cos(($dum1 4.0*3.14)/3.0);
echo 
"<P/>".$x1."<br/>";
echo 
"<P/>".$x2."<br/>";
echo 
"<P/>".$x3."<br/>";
}
else{ echo
"Oh Sorry";
}
?>
منبع : http://easycalculation.com/algebra/cubic-equation.php
می گویند تقوا از تخصص لازم تر است
آنرا می پذیرم، اما می گویم:
آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست.
- شهید دکتر چمران
پاسخ
#4
ممنون.
ترم دیگه باید آنالیز عددی بگیرم و مطمئنا بدردم میخوره...
پاسخ
#5
(19-04-2013، 07:01 PM)Farzaneh RoshanZamir نوشته است:  ممنون.
ترم دیگه باید آنالیز عددی بگیرم و مطمئنا بدردم میخوره...
خواهش می کنم
راستی بچه هایی که از این کدها استفاده می کنند حتما یادشون باشه که ماشین حساب در حالت Rad باشه . یعنی از سیستم رادیان استفاده کنه نه درجه .
البته توی PHP به طور پیش فرض محاسبات بر مبنای Rad هست .

اینم یه لینک جالب از ویکی پدیا ، که الگوریتم های معروف حل معادلات درجه 3 رو معرفی کرده . واقعا مطلب جالبیست . این معادلاتی که به راحتی در ماشین حساب حل می شوند ، چه پیشینه ای دارند !
در ضمن توی این مقاله دو تا ایرانی هم هستند که بعنوان پیشگامان حل این معادله معرفی شدند . نمی گم اسمشون چیه تا خودتون برید بخونید Wink

می گویند تقوا از تخصص لازم تر است
آنرا می پذیرم، اما می گویم:
آنکس که تخصص ندارد و کاری را می پذیرد، بی تقواست.
- شهید دکتر چمران
پاسخ
#6
من این ترم فلسفه علم ریاضی دارم،بعد استادمون می گفت در مورد خیام تو تاریخ بحث زیاده!
احتمالا اینا چندتا خیام بودن نه یکی...
مثه فیثاغورسیان که هرکاری می کردن به نام فیثاغورس ثبت می کردن...
ولی بهرحال این خیام هرکی که بوده،کارای جالبی کرده واقعا...
پاسخ
 سپاس شده توسط مسعود وحید


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان