نيوتن رافسون


(system) #1

السلام عليكم
ارجو المساعده بخصوص نيوتن رافسون باستخدام الماتلاب
طلب منا الدكتور ياسين عمل برنامج بأستخدام الماتلاب لحل طريقة نيوتن رافسون وقمت بعمل البرنامج التالي ( مرفق )

ادخلت
الدالة التاليه
cos(2*x)-x
والقيمه التقريبيه للجذر = 0.6
فكان الحل ( مرفق )
.
.
سؤالي … هذه الداله موجود بالكتاب كمثال محلول وكانت عدد التكرارات 3
وانا رمزت للتكرارات بالرمز u وقد ظهرت قيمتها باستخدام برنامجي 4 تكرارات
والسؤال الثاني كيف استطيع اظهار العمليه الحسابيه interative formula في المخرجات

ولكم جزيل الشكر


(eng.alborky) #2

الله اعلم


(نور الله) #3

بارك الله فيك اخي الكريم


(Ahmed) #4

[CENTER]وعليكم السلام

اعذرني اخي الكريم
لكني لم استطع فهم الكود الذي طرحته، فهو غير مفهوم تماما "اسف"
وحتى نتيجة 0.6 ليست صحيحة

جرب بالالة الحاسبة

لذلك كتبت لك هذا الكود ليساعدك

اولا يجب ان تعرف ان طريقة نيوتن، في شكلها البسيط، تؤثر عليها 3 عوامل:
القيمة الاولية للحل
الدقة المطلوبه
عدد مرات التكرار

ننشئ ملف لنكتب فيه كود الطريقة

function [Sol,Nbr]=newto(x,n,e,f,ff)
iterations=n;
while (n>0)
    xk=x-f(x)/ff(x);
    if abs(f(xk))<e
        Sol=xk;
        Nbr=iterations-n;
        return
    end
    n=n-1;
    x=xk;
end
disp('Pas de convergence')
Sol=xk;
Nbr=iterations-n;

طبعا يجب ان نسميه newto ليوافق اسم الدالة
ونحتفظ به في مستند الماتلاب

الدالة

[Sol,Nbr]=newto(x,n,e,f,ff)

هي التي سنستخدمها للحل
حيث
x هي القيمة الاولية للحل
n هو عدد المحاولات المسموح به، اي اكبر عدد
e هي دقة الحساب
f هي الدالة
ff هي الدالة المشتقة

ننشئ ملف اخر لنطبق الطريقة على دالتنا

clear all
clc
close all

f = inline('cos(2*x)-x','x');
ff = inline('-2*sin(2*x)-1','x');

x = (-1:0.01:3)';
y=f(x);
figure(1)
plot(x,y);xlabel('x');ylabel('f(x)');
grid on

x=0;
n=100;
e=1.e-6;
[Sol,Nbr]=newto(x,n,e,f,ff)

شرح الكود

اولا استخدمنا inline لحساب الدالة ومشتقتها

بعدها رسمنا هذه الدالة لتكون عندنا رؤية واضحة

ونلاحظ ان الحل قريب من 0.5

بعدها قمنا باختيار
القيمة الاولية للحل 0
والدقة e، وعدد 1000 كحد اقصى للحساب

x=0;
n=100;
e=1.e-6;

النتيجة

Sol =

    0.5149


Nbr =

     3

يعني الحل هو 0.5149 بعد 3 محاولات

[/center]