[LEFT]بسم الله الرحم الرحيم
ساشرح الكوود
اولا يجب عليك وضع المعادلة في هذه الصورة
f(x)=0
مثلا لو المعادلة
X3-X=1
نضعها في هذه الصورة
f(x)=X3-X-1
وبعد ذلك نكتب الكود
انا قمت بكتابته الان
طبعا اكيد عارفين نيوتن رابسون ميثود
والي مش عارف حيعرف في الكود
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Matlab Code %
% Programer: Ahmed Sayed %
% Cairo Univercity F.of.Eng %
% Contact info %
% engineer.egypt (At) yahoo (Dot) com %
% Mob:+2 0111699996 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear all
close all
%--------
هنا حنعرف متغير اكس لاننا حنفاضل
syms x
هنا حنكتب المعادلة
f=‘x-2*sin(x)’;
هنا حنشتق المعادلة علشان دة مطلوب في الحل
df=char(diff(f,x));
هنا حنبسط الحل لاننا مش محتاجين النتايج فحنحل في ذاكرة البرنامج المؤقته
علشان احنا محتاجين القيم عند نقط
ff=inline(f,‘x’);
dff=inline(df,‘x’);
هنا حنفرض اول قيمة الي حنبتدي بيها نيوتن رابسون
xr(1)=1;
هنا لازم نحدد عدد مرات الحساب نبتدي من رقم صغير لغاية لما نلائي الخطا يقل اوي للقيمة الي تريحنا
n=20; %% N.O iteration try to change this value to give a min err
حنبتدي اللوب
for i=2:n
xx=xr(i-1);
هيا دي بقى نيوتن رابسون
xr(i)=xx-(ff(xx)/dff(xx));
وهنا حنحسب الخطا
er=abs(xr(i-1)-xr(i));
err=er/xr(i-1);% err=(old-new)/old value
end
في الاخر حنطبع قيمة الدالة الي هو الحل
xr(end)
ودة الخطا
err
اتمنى ان الكوود يكون سهل وهو مكتوب بطريقة قوية نوعا ما واستخدام اوامر جديدة
المهم لوفي اي استفسارات حتلائي بياناتي في اول الكوود شكراا
متنسوش تدعولي
اتمنى الشرح يكون تمام
ولو اقتبس الكود يترك بياناتي
الكود في المرفقات[/left]