X
تبلیغات
پیکوفایل
رایتل

(*blog_title*)

(*blog_short_description*)

Peducation

با هم بیاموزیم

جستجو
تقویم
مرداد 1395
شیدسچپج
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
بایگانی
نظرسنجی
چقدر از مطالب پورتال رضایت دارید؟

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

در نرم افزار متلب (Matlab)، میخواهیم برنامه ای نوشته شود تا با روش نیوتن، ریشه یک تابع را بیابد.

  

روش نیوتن با حدس اولیه ریشه تابع y، شروع به کار می کند و در هر بار عدد مورد آزمایش x را با عبارت x-y/y’ جایگزین می کند و این الگوریتم تا برآورده شدن دقت لازم ادامه می یابد. در اینجا می خواهیم ریشه یک معادله درجه دو را با روش نیوتن بیابیم:

clear;clc;

A=input('Enter Coefficients=');

x=input('Initial Guess of root=');

ierror=1;

ferror=1e-6;

while ierror>ferror

x1=x;

y=A(1)*x^2+A(2)*x+A(3);

yp=2*A(1)*x+A(2);

x=x-y/yp;

ierror=abs((x-x1)/x);

end

format

disp(['root=' num2str(x)]);

در خط اول تمام حافظه متلب (Matlab) با دستور clear و محیط خط فرمان با دستور clc پاک می شود. در خط دوم و سوم با دستور input به ترتیب ضرایب چندجمله ای درجه دو (باید به صورت [a b c] وارد شود) و حدس اولیه ریشه از کاربر درخواست می شود.

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

در خط دهم، متغیر x توسط فرمول نیوتن آپدیت می شود. در خط یازدهم، قدر مطلق (دستور abs) خطای نرمالیزه هر تکرار محاسبه شده و اگر از خطای تکرار قبل بزرگتر بود الگوریتم پایان می یابد. در خط سیزدهم دقت نمایش ریشه با دستور format تعیین شده و در خط آخر، مقدار ریشه محاسبه شده ابتدا توسط دستور num2str به رشته  تبدیل شده و با دستور disp نمایش داده می شود.

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

نظرات (0)


نام :
ایمیل :
وب/وبلاگ :
ایمیل شما بعد از ثبت نمایش داده نخواهد شد