أشرف القباطي عضو نشــط
الجنس : عدد المساهمات : 26 نقاط : 52 السٌّمعَة : 0 تاريخ التسجيل : 07/01/2010
| موضوع: طريقة نيوتن في التحليل العددي الثلاثاء فبراير 16, 2010 11:42 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
| |
|