الگوریتم‌های پیداکردن ریشه



مقدمه 
اساساً الگوریتم پیدا کردن ریشه یا ریشه‌یابی، یک الگوریتم برای پیدا کردن ریشه‌های توابع پیوسته‌است.

یک ریشه از تابع  هنگامی پیدا می‌شود که  در معادلهٔ  صدق کند و به آن x ریشهٔ تابع می‌گوییم یا در معادلهٔ زیر هنگامی ریشهٔ را پیدا می‌کنیم که حاصل تفریق دو تابع دیگر برابر ۰ شود.

به‌طور کلی ریشه‌های بسیاری از توابع را نمی‌توان به صورت دقیق محاسبه کرد و الگوریتم پیدا کردن ریشه (Root-finding algorithm)به ما کمک می‌کند که به صورت تقریبی آنها را محاسبه کنیم.

اکثر الگوریتم‌های ریشه‌یابی با استفاده از انتخاب دنباله‌ای از اعداد امیدوارند که این دنباله به عنوان یک حد به سمت ریشه همگرایی داشته باشد. آنها با استفاده از یک یا چند حدس اولیه از ریشه، به عنوان مقادیر شروع می‌کنند سپس هر تکرار الگوریتم تقریب بهتری از ریشه را برای ما به ارمغان می‌آورد.

روش‌های براکتی (Bracketing methods) 
در این گونه روش‌ها با تعیین بازه‌های کوچک و استفاده از آنها در برخی فرمول‌ها سعی می‌کنیم که به ریشه دست پیدا کنیم.

روش تنصیف یا دو بخشی
این روش از ساده‌ترین و قابل اعتمادترین روش‌های تکراری برای حل معادلهٔ غیر خطی است. این روش همچنین به عنوان روش تقسیم باینری(binary chopping) یا نیمه بازه(half-interval method)نیز شناخته می‌شود.

در این روش تابع را به بازهٔ مختلف تقسیم می‌کنیم تا ریشه‌ای مانند را پیدا کنیم بدین صورت که:در غیر این صورت:برای فهم بهتر به تصویر زیر توجه کنید:

روش نابجایی 

در این روش مانند روش قبل تابع مورد نظر را بازه بازه می‌کنیم ولی در این روش سریع تر به این مسئله و رسیدن به ریشه اهمیت می‌دهیم. بدین صورت که:در غیر این صورتبرای درک بهتر به تصویر زیر توجه کنید:

روش تعامل (Interpolation) 
بسیاری از روش‌های پیدا کردن ریشه از این روش استفاده می‌کنند. این روش شامل استفاده از آخرین مقادیر تقریبی محاسبات ریشه برای تقریب تابع توسط یک چندجمله‌ای از درجه پایین است که مقادیر مشابهی را در این ریشه‌های تقریبی می‌گیرد.

سپس ریشهٔ چند جمله ای محاسبه می‌شود و به عنوان یک مقدار تقریبی جدید از ریشه تابع استفاده می‌شود و روند آن تکرار می‌شود.

دو مقدار به ما این امکان را می‌دهد که تابع را با یک چند جمله‌ای درجه یک تطبیق دهیم و سه مقدار یک چند جمله ای درجه دوم را درست می‌کند که گراف تابع را به وسیلهٔ یک سهمی تقریب می‌زند.

و این روش، روش مولر است.

روش‌های Iterative 
با وجود اینکه تمام الگوریتم‌های ریشه‌یابی، به وسیلهٔ تکرار ادامه می‌یابند، یک روش Iterative، معمولاً از تکرار خاصی استفاده می‌کند که شامل تعریف یک تابع کمکی است که برای تقریب جدیدی به آخرین تقریب محاسبات یک ریشه اعمال می‌شود.

روش نیوتن 
این روش مبتنی بر مشتقات تکراری است؛ بدین منظور که روش نیوتن فرض می‌کند که تابع f یک مشتق مداوم داشته باشد. اگر با استفاده از روش نیوتن مشتقات شروع به دور شدن از ریشه کند روش نیوتن همگرا نیست و این بدین معناست که از ریشه در حال دور شدن هستیم ولی هنگامی که همگرا می‌شود یعنی در حال نزدیک شدن به ریشه هستیم، این روش معمولاً از روش تنصیف بهتر و سریع تر است. روش نیوتن نیز مهم است زیرا به راحتی به مشکلات بزرگتر پاسخ می‌دهد. روش‌های نیوتن مانند با دستورات بالاتر از همگرایی روش‌های خانه‌دار(Householder's methods) است.

به عبارت دیگر در این روش ابتدا مشتق تابع را برای نقطه‌ای مانند می‌گیریم. سپس برای تابع ریشه را به دست می‌آوریم. ریشه نقطه‌ای مانند می‌شود سپس برای نقطهٔ از تابع مشتق می‌گیریم و ریشهٔ این معادلهٔ به دست آمده به عنوان ما انتخاب می‌شود و همین روال به صورت تکراری ادامه خواهد داشت.

برای درک بهتر به تصویر زیر توجه کنید:

روش وتری 
از آنجائیکه روش‌های دو بخشی و نابجایی با سرعت کمی به سمت ریشه میل می‌کنند، لذا شیوه ای سریعتر برای یافتن ریشه نیاز است. یک چنین شیوه ای، روش وتری نام دارد. مشابه شیوهٔ نابجایی ، اساس این روش نیز بر تقریب زدن ریشه تابع از طریق یک خط مستقیم قرار دارد که دو نقطه از نمودار تابع را به یکدیگر وصل می‌کند، اما نیازی نیست که نقاط حدس اولیه حتماً دارای عالمت مخالف باشند.
 گام اول:
 گام دوم:
 گام سوم: اگر شرط فوق برقرار باشد، به مرحله چهار برو، در غیراینصورت داریم:
 گام چهارم :نمایش  به عنوان ریشه و پایان الگوریتم.

یک شبه کد برای این الگوریتم:

منابع 

الگوریتم‌های پیدا کردن ریشه
ویکی‌سازی رباتیک