مشاهدة النسخة كاملة : التحليل العددي: طريقة نيوتن


عمر التومي
18-12-2004, 07:05 PM
هذا الدرس نستعرض سويا احد الطرق المتبعة في التحليل العددي بعد أن تكلمنا عن مفهوم التحليل العددي و أهميته و الطريقة الثانية المتبعة في التحليلي العددي هي طريقة نيوتن newten method)) و لا أود أن أتطرق إلى الاستنتاج الرياضي لهذه الطريقة بالقدر الذي ارغب فيه في التركيز على البرامج الرياضية لها, تعتبر هذه الطريقة من الطرق السهلة في إيجاد القيم التقريبية للمعدلات الرياضية و الاختلاف الأساسي بيناه و بين الطريقة السابقة ( طريقة المقاطع) (bisection method) هو سهولة استخدام طريقة نيوتن و سرعتها في إيجاد الحل التقريبي للمعادلة.
المفهوم الرياضي لنيوتن
اذا كانت لدينا دالة حقيقية f(x) و كان x0 هو الجدر للمعادلة المطلوب الحصول عليه ( الحل التقريبي للمعادلة) فيمكن إيجاده عن طريق الآتي:
X2=x1*f(x)/f '(x)
حيث :
X2 هي القيمة التي نبحث عنها أي نفس قيمة الجدر ( قيمة x0 )
X1 هي القيمة المدخلة عند القراء
F(x) هي قيمة المعادلة بعد تعويض بي قيمة x1 في المعادلة
F ' (x) هي قيمة المشتقة الأولى للمعادلة بعد.
و تكتب خوارزمية البرنامج كالأتي:
1. Read x1
2. f(x1)=x1^3+4*x1^2-10
3. f ' (x1) = 3*x1^2 +8*x1
4. if f(x1) > 0.00001 write x2,f(x1)
5. x2=x1-( f(x1)/ f ' (x1) ,x1=x2 goto step (2)
6. write x2 ,p
7. stop

شرح الخوارزمية
يبدأ البرنامج بقراءة قيمة الدالة عند النقطة (x1 ) ثم تتم عملية تعويض من اجل إيجاد القيمة الفعلية للدالة عند نفس النقطة، تعوض قيمة x1) ) في مشتقة الدالة و كأننا أوجدنا الميل في هذه الحالة، تتم اختبار قيمة الدالة f (x1) فإذا كانت أصغر من 0.00001 فتتم طباعة القيمة مباشرة و إلا ننتج قيمة جديدة هي x2 من طرح قيمة x1 من مقسوم الدالتين f ( x) , f ' ( x) و هي قيمة أو نقطة تقاطع المماس مع محور السينات و عندما نجعل قيمة x1=x2 فإننا نقترب من الحل أكتر أي من النقطة الصفرية التي تحقق الحل.
و هذا هو البرنامج بلغة FORTRAN :-
----------------------------------------------
Read(*,*) x1
f(x1)=x1^3+4*x1^2-10 10
f ' (x1) = 3*x1^2 +8*x1
if f(x1) > 0.00001) goto 20
x2=x1-(f(x)/f ' (x))
x1=x2
goto 10
Write(*,*) x2 ,p 20
stop
end
-----------------------------------------------
و يمكن استخدام جملة DO بدلا من جملة GOTO لأداء نفس المهمة على النحو الآتي:

Read(*,*) x1
DO 500,I=1,N
f(x1)=x1^3+4*x1^2-10
f ' (x1) = 3*x1^2 +8*x1
if f(x1) > 0.00001) GOTO 20
x2=x1-(f(x)/f ' (x))
x1=x2
GOTO 500
continue 5000
Write(*,*) x2 ,p 20
stop
end

م.نايف
19-12-2004, 12:16 AM
جزاك الله كل خير
مواضيعك جدا مميزه

تحياتي لك
impulse