PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : روش تنصیف



shirin71
08-05-2011, 12:26 AM
روش نصف کردن اولین و ساده ترین روش برای پیدا کردن صفرهای تابع است ، که البته معایب و محدودیتهایی دارد.این روش برای توابعی قابل اجراست که حول ریشه خود اکیدا یکنوا باشند. به عبارت دیگر این روش تنها برای پیدا کردن ریشه های ساده قابل استفاده است ، و قادر به یافتن ریشه های مضاعف نیست. در ضمن سرعت همگرایی آن بسیار کند است و به همبن دلیل اغلب برای محاسبه صفرهای توابع چند جمله ای (معادلات ساده) استفاده می شود.
الگوریتم روش نصف کردن برای تابعی به نام f به صورت زیر است ، که در آن [a,b] به عنوان بازه حاوی ریشه و عدد e به عنوان میزان دقت به کار رفته است.
۰ - شروع
۱ - اعداد a ، b و e را بگیر.
۲ - (a+b)/2 را در m قرار بده.
۳ - اگر قدرمطلق f(m) کمتر از e بود برو به ۷
۴ - اگر f(a) * f(m) منفی بود m را در b قرار بده
۵ - وگرنه m را در a قرار بده
۶ - برو به ۲
۷ - مقدار m را به عنوان صفر تابع چاپ کن.
۸ - پایان
اکیدا یکنوا بودن تابع حول ریشه اش برای شرط عبارت ۴ الزامی است. این شرط مشخص می کند که ریشه در کدام نصفه بازه قرار دارد.
کد الگوریتم بالا به چهار زبان بیسیک ، سی ، ++C و پاسکال از اینجا قابل دانلود است.
http://iranmath.googlepages.com/bisec.zip
برای نتیجه دادن این برنامه ها مقادیر a و b باید به درستی وارد شود. انتخاب بازه ای که شامل ریشه نیست ، حلقه بی نهایت ایجاد می کند. در این برنامه ها از تابع با ضابطه f(x) = x² - ۲ استفاده شده که شما می توانید هر تابع دلخواه دیگری را جایگزین کنید.

shirin71
08-05-2011, 12:26 AM
روش نیوتون

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

فرض کنیم بازه [a,b] حاوی ریشه مورد نظر باشه. شرایط استفاده از روش نیوتون به قراره زیره:

۱- مشتق اول تابع در هیچ نقطه ای از بازه صفر نباشه.

۲- مشتق دوم تابع در بازه تغییر علامت نده.

فرض کنید x0 یه تقریب اولیه از صفر تابع در بازه [a,b] باشه. دنباله {(x(n} رو بصورت زیر تعریف می کنیم:

( ( x( n ) = x( n - 1 ) - f( x( n - 1 ) ) / df( x( n - 1

که f و df به ترتیب ضابطه تابع و مشتق اولش رو مشخص می کنه. براحتی می شه ثابت کرد که اگه شرایط دو گانه فوق برقرار باشه و مقدار x0 هم درست انتخاب بشه، دنباله {(x(n} به صفر تابع همگراست. باید سعی کنید مقدار x0 رو تا حد امکان نزدیک به ریشه انتخاب کنید (برای اینکار می تونید از روش تنصیف استفاده کنید). انتخاب نادرست مقدار x0 ممکنه باعث ایجاد حلقه تکرار حول ریشه معادله بشه. این مورد از معایب روش نیوتن به حساب می یاد.پ

این روش دو ویژگی خیلی مهم داره:

۱- سرعت همگرایی بسیار بالا (اکثر دستگاههای محاسباتی برای محاسبه ریشه های معادلات، یا محاسبه توابعی نظیر رادیکال و . . . از این روش استفاده می کنن).

۲- قابلیت گسترش برای محاسبه ریشه های مضاعف و تکراری معادلات.

کدهای مربوط به این روش رو به زبانهای بیسیک ، ++C ، C و پاسکال می تونید از اینجا دانلود کنید.
http://www.riazilog.com/wp-content/u.../01/newton.zip (http://www.riazilog.com/wp-content/uploads/2007/01/newton.zip)
برای این کدها از تابع با ضابطه زیر استفاده شده:

f( x ) = x² + ۲x - 2

شما به دلخواه می تونید هر تابعی رو جایگزین کنید. البته باید به شروط دو گانه روش توجه داشته باشید.

امیدوارم از این مطلب ریاضی استفاده لازم را ببرید.

shirin71
08-05-2011, 12:26 AM
روش وتری

روش وتر رو می شه به نوعی ترکیبی از روش نصف کردن و نیوتن دونست. این روش مشابه روش نصف کردن از قطعه بندی بازه برای رسیدن به ریشه استفاده می کنه، و مثل روش نیوتن از محل تقاطع خطوط با محور طولها برای قطعه بندی بازه ها!

فرض کنید تابع (y = f(x در بازه [a , b] تعریف شده باشه و

۱- در این بازه پیوسته باشه.

۲- حاصلضرب (f(a و (f(b منفی باشه.

۳- بازای هیچ نقطه ای از بازه مشتق اول صفر نباشه.

در این صورت برای محاسبه ریشه معادله f(x)=0 با روش وتر به این ترتیب عمل می شه:

معادله خط واصل دو نقطه ((a,f(a) و ((b,f(b) رو می نویسیم و محل برخوردش با محور طولها رو c نامگذاری می کنیم. اگه f(c)=0 که به ریشه رسیدیم. وگرنه یکی از بازه های [a , c] یا [c , b] حاوی ریشه معادلست (فرض گرفتیم ریشه منحصربفرد در این بازه داریم). برای تشخیص بازه مورد نظر از شروط سه گانه فوق فقط شرط ۲ رو برای هر بازه بررسی می کنیم. دو شرط دیگه مطمئنا در هر زیر بازه ای از [a , b] صادق هستن.

عملیات بالا رو برای بدست آوردن زیر بازه های کوچکتر تا جایی ادامه می دیم که یا به خود ریشه برسیم و یا به تقریب مناسبی از اون.

با توجه به اطلاعات دوران شیرین راهنمایی مقدار c از رابطه زیر به دست می یاد:

(((c = a - (f(a)*(b-a)/(f(b)-f(a

با نتیجه به توضیحات فوق الگوریتم محاسبه تقریبی ریشه به روش وتر به این صورته:

۰- شروع

۱- مقدار a و b و e را بگیر.

۲- مقدار (((a - (f(a)* (b-a)/(f(b)-f(a را در c قرار بده.

۳- اگر مقدار قدرمطلق (f(a کوچکتر از e بود برو به ۷/

۴- اگر حاصلضرب (f(a و (f(c منفی بود مقدار c را در b قرار بده.

۵- وگرنه مقدار c را در a قرار بده.

۶- برو به ۲/

۷- مقدار c را به عنوان ریشه تقریبی چاپ کن.

۸- پایان.

مقدار e هم مقدار تقریبیه که برای محاسبه ریشه در نظر گرفته شده. این تقریب رو می شه به روشهای مختلفی اعمال کرد که ما اینجا به عنوان قدرمطلق مقدار تابع در نظر گرفتیم. توجه داشته باشید که هرچقدر مقادیر a و b دقیقتر و نزدیکتر به هم انتخاب بشن به جواب تقریبی زودتر می رسیم.
کدهای مربوط به این روش رو به زبانهای بیسیک، C، پاسکال و ++C می تونید از اینجا دریافت کنید.
http://www.riazilog.com/wp-content/u...7/03/vatar.zip (http://www.riazilog.com/wp-content/uploads/2007/03/vatar.zip)