[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]