روش وتری – به زبان ساده (+ دانلود فیلم آموزش گام به گام)
روش وتری (Secant Method) بسیار شبیه به روش دو بخشی است، با این تفاوت که به جای تقسیم هر بازه با انتخاب نقطه میانی، هر بازه با وتر متصل کننده نقطه ابتدا و انتهای بازه تقسیم میشود. روش وتری همیشه به ریشه همگرا میشود که در بازه پیوسته بوده و .
فرمول خط وتر
فرض کنید یک تابع پیوسته در بازه بسته باشد، به گونهای که . یک جواب معادله برای با قضیه مقدار میانی تضمین میشود. مشخصات ابتدا و انتهای بازه، یعنی و خط زیر را تشکیل میدهند:
نقطهای که خط وتر محور را قطع میکند، در رابطه زیر صدق میکند:
با حل این معادله، به دست میآید:
الگوریتم روش وتری
مراحل روش وتری اغلب شبیه روش دو بخشی است. تنها تفاوت در تقسیم هر زیربازه است.
- بازه شروع را در نظر بگیرید، به گونهای که .
- مقدار را محاسبه کنید که با خط وتر داده میشود.
- زیربازه بعدیِ را تعیین کنید:
- اگر ، آنگاه به عنوان بازه بعدی در نظر گرفته میشود که در آن، و .
- اگر ، آنگاه به عنوان بازه بعدی در نظر گرفته میشود که در آن، و .
- مراحل ۲ و ۳ را تا زمانی که طول بازه به یک مقدار از پیش تعیین شده برسد، تکرار کنید.
- مقدار را در اُمین تکرار است محاسبه کنید.
طبق قضیه مقدار میانی، یک جواب برای معادله در بازه تضمین شده است که در بازه پیوسته بوده و . به عبارت دیگر، علامت تابع در بازه مذکور تغییر کرده و در نتیجه، باید در نقطه (یا نقاطی) درون بازه برابر با صفر شود.
پیادهسازی در پایتون
تابعی مینویسیم و نام آن را "secant" قرار میدهیم. این تابع چهار ورودی "b" ،"a" ،"f" و "N" دارد و خروجی آن، حل معادله با بار تکرار روش وتری است. اگر در هر نقطه از تکرار داشته باشیم: (به دلیل بازه اولیه نامناسب یا گرد کردن خطا در محاسبات)، آنگاه در خروجی برنامه، عبارت "Secant method fails." چاپ میشود و خروجی "None" خواهد بود.
به عنوان مثال، تابع مورد نظر را با مقادیری که خروجی صحیح آنها را میدانیم، بررسی میکنیم. میخواهیم نسبت فوق طلایی را تقریب بزنیم که تنها ریشه حقیقی چندجملهای است.
-1 3
از آنجایی که علامت چندجملهای در بازه تغییر میکند، میتوانیم از روش وتری با شروع از بازه زیر استفاده کنیم:
1.4655712311394433
مقدار دقیق نسبت فوق طلایی به صورت زیر است:
1.4655712318767682
تقریب به دست آمده را با جواب دقیق آن مقایسه میکنیم:
7.373248678277378e-10
پیادهسازی در متلب
روش وتری را میتوان به سادگی در متلب نیز پیادهسازی کرد. برای مثال، کد متلب روش وتری برای یافتن ریشه همان چندجملهای در متلب به صورت زیر است:
خروجی حاصل از اجرای کد بالا به صورت زیر خواهد بود:
n = 1, x = 1.25, f(xr) = -0.60938 n = 2, x = 1.3766, f(xr) = -0.28626 n = 3, x = 1.4309, f(xr) = -0.11766 n = 4, x = 1.4524, f(xr) = -0.045671 n = 5, x = 1.4606, f(xr) = -0.017331 n = 6, x = 1.4637, f(xr) = -0.0065203 n = 7, x = 1.4649, f(xr) = -0.0024451 n = 8, x = 1.4653, f(xr) = -0.00091577 n = 9, x = 1.4655, f(xr) = -0.00034283 n = 10, x = 1.4655, f(xr) = -0.00012832 n = 11, x = 1.4656, f(xr) = -4.8029e-05 n = 12, x = 1.4656, f(xr) = -1.7976e-05 n = 13, x = 1.4656, f(xr) = -6.7276e-06 n = 14, x = 1.4656, f(xr) = -2.5179e-06 n = 15, x = 1.4656, f(xr) = -9.4236e-07 n = 16, x = 1.4656, f(xr) = -3.5269e-07 n = 17, x = 1.4656, f(xr) = -1.32e-07 n = 18, x = 1.4656, f(xr) = -4.9403e-08 n = 19, x = 1.4656, f(xr) = -1.849e-08 n = 20, x = 1.4656, f(xr) = -6.92e-09
اگر این مطلب برایتان مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- آموزش ریاضی پایه دانشگاهی
- روش نیوتن — به زبان ساده
- دستگاه معادلات خطی — به زبان ساده
- جذر یا محاسبه ریشه دوم عدد — به زبان ساده
^^
با سلام و احترام
در حالت کلی در روش سکانت، بازه اولیه لزوما شامل ریشه نیست. به همین دلیل در برخی مواقع این روش واگرا می شود که از ایرادات این روش است. بهتر است در ابتدای مطلب عنوان کنید که شما حالت خاصی از این روش را توضیح داده اید تا خواننده دید بهتری به مسئله داشته باشد.
با تشکر