مشاهدة النسخة كاملة : رياضيات الحاسب الالي: مقدمة :المواضيع
عمر التومي 19-12-2004, 05:08 PM --------------------------------------------------------------------------------
المقدمة
بسم الله الرحمن الرحيم
ربما لا يبدو هذا الموضوع للبعض من الذين اعتادوا شروح التطبيقات البرمجية فقط، ذات أهمية تذكر، و ربما من وجهة نظره كمستخدم محق، لان الأمور الأساسية التي تهم الشخص ، تتوقف على نوع المجال الذي يحبه، و المسلك الذي يسلمه، الشائع عندنا في كل المنتديات الرغبة الجامحة إلى فهم كيفية التعامل مع التطبيقات المختلفة للبرامج software , و هذا لا يعني التقليل من أهمية هذا الميل، لكن ما أحاول طرحه في هذا الكتاب هو أساسيات الرياضيات , التي يعلم الجميع انه من غير الممكن التعامل المفاهيم الفيزيائية من غيرها, أو بتعبير آخر تدخل في تصميم كل التطبيقات الميكانيكية و الكهربائية و الأهم الحاسوبية – إن صح هذا التعبير – و لندلل على صحة ما نقول, فان أراد مهندس او متخصص تصميم دائرة كهربائية معينة تحتوي على مكثف , ملف و مقاومة، وا راد حساب الجهد الذي يجب ان يستهلكه كل واحد من هذه العناصر, يصبح من البديهي تعامله مع معدلات الدرجة الثانية, و بالأخص المعادلات التفاضيلة , ويصبح من المستحيل إجراء أي تصميم دقيق من غير فهم هذه المعدلات, و نفس الأمر يتعلق بمبرمج النظم، الأمثلة تتعدد و لا أريد ان أطيل الشرح أكتر.
لمن هذه الصفحات ؟
كما قلت سابقا, قد يبدو من المرهق على غير المتخصص التعامل مع هذه الصفحات, لكن المكتبات العربية الالكترونية تفتقر إلى هذا النوع من الكتب الذي يحتاجه طالب الكومبيوتر و بقية التطبيقات, و لا يخفى على الجميع أن كسب رهان الرفع من مستوى الطلاب , بتزويدهم بالمراجع السهلة و الواضحة يشكل عاملا مهمة في تنمية قدراتهم, و لا يضير أن يستفيد غير الطلاب من هذه الوريقات التي أتمنى أن تجد القبول و الاستحسان لدى الجميع.
محتويات الدروس content
1. المعادلات التفاضلية الاعتياديةordering differential equation
2. المعادلات التفاضلية ذات المرتبة الأولى ( المتجانسة)
Homogeneous
3. المعادلات التفاضلية ذات المرتبة الأولى ( الخطية)
Linear differential equation
4. المعادلات التفاضلية ذات المرتبة الأولى ( التامة)
Exact differential equations
5. المعادلات التفاضلية يمكن تحويلها إلى الصيغ المفصولة
Equations reducible separable form
6. المعادلات التفاضلية يمكن تحويلها إلى الصيغ المتجانسة
Equations reducible homogeneous form
7. المعادلات التفاضلية يمكن تحويلها إلى الصيغ التامة
Equations reducible exact form
8. الحل العام و الحل الخاص
General and particular solution
9. المعادلات التفاضلية ذات الحد المفقود
Differential equations with one variable missing
10. المعادلات التفاضلية ذات المعاملات الثابتة
Linear differential equations with constant coefficients
11. المعادلات التفاضلية من المرتبة الثانية الخطية غير المتجانسة
Non homogeneous second order linear differential equation
12. تحويل لبلاس
Laplace transform
13. معكوس تحويل لبلاس
Inverse laplace transform
14. حل المعادلات التفاضلية باستخدام تحويل لبلاس
Solution of deferential equation using laplace transforms
15. حل المعدلات باستخدام المتسلسلات ( الحل التقريبي )
Solution of deferential equation using by series (approximate solution)
16. دالة بسيل
Bessel's function
17. تطبيقات المعدلات التفاضلية
Application of deferential equation
فهذه أهم المعدلات التفاضلية و التي يمكن اعتبارها المدخل , و الملاحظ أننا ابتدأ بأبسط أنواعها ثم التدرج فيها , وصولا إلى بعض تطبيقاتها العملية و المتعلقة بالكومبيوتر من اجل توضيح أهمية المادة التي تدرس حاليا.
و انتظروا الدرس الأول
***********************
alphamessenger 19-12-2004, 06:05 PM أخي ************ ،
معك حق في كل ما قلته، و هذا الجانب العلمي تم إهماله كثيرا من جانب الدارسين و المشتغلين العرب في مجال الحاسب. علما أنه للتوصل لتطبيقات و برامج صناعية و علمية كالتحكم في الجودة و المحاكاة الميكانيكية و الكهربائية فالسبيل الوحيد هو تعلم رياضيات الحاسوب.
و هذا الموضوع إن شاء الله سيكون مقدمة لتحقيق هذا الهدف و الإرتفاع إلى مستوى جديد في البرمجة و استغلال حواسيبنا للأفضل. فبارك الله فيك و أعانك على هذا الهدف النبيل.
و نحن هنا نحاول فتح الباب و إتاحة الفرص لتجميع أكبر عدد من المهندسين و المبرمجين لتبادل الأفكار و طرح مشاريع نوعية حقيقية تخدم الأمة و ترفع من المستوى الإحترافي للفنيين و المهندسين العرب.
إلى الأمام
alphamessenger 19-12-2004, 07:21 PM و عليكم السلام و رحمة الله و بركاته،
أريد هنا أن أشدد على أهمية هذه الدروس التي يضعها الأخ الرائع عمر التومي و تطبيقاتها العملية.
لأن التحليل العددي درس أساسي و مهم للغاية.
لماذا ؟ لن أدخل هنا في فوائد التحليل العددي لدراسة العلوم كافة و دعمها و لكن فقط أشير إلى أن هذا الجانب هو ما ينقص مناهجنا التعليمية.
عندما يحصل فني أو مهندس على وظيفة معينة، مثلا في الصيانة أو الإنتاج أو الجودة أو تدبير المواد الأولية، يتوقع أنه سيفتح جهاز الحاسوب ليجد أمامه أحد برامج SAP أو Baan أو PeopleSoft أو Oracle أو JDEdwards و كل ما عليه هو الضغط على بضعة أزرار هنا و هناك ليعرف حالة المخزون و الطلبيات و موعد تسليمها و نتائج اختبارات الجودة و كمية المواد الأولية التي يجب شراؤها و عدد الـ lots في خطوط الإنتاج و أسماء العمال الذين عملوا في تجميع منتج معين و عدد ساعات غياب عامل ما و الإقتراحات التي قدمها العمال و عدد توقفات آلة ما ...
لكن هذا غير موجود على أرض الواقع، واقعنا العربي...
و حتى الشركات الغنية كشركات البترول و الصلب، التي استثمرت في هذه الحلول و ركبتها، لا تستفيد منها كاملا و أغلب الموظفين يعتبرونها عبئا إضافيا على و اجباتهم اليومية و قد يستعملونها فقط عند قدوم زوار خارجيين.
أما في الشركات المتوسطة و الصغيرة، فمن الصعب على الفني أو المهندس إقناع المدراء بالفائدة الملموسة لمثل هذه الأدوات خصوصا أن ثمن تملكها السنوي Total Cost of Ownership مرتفع مقارنة بميزانية الشركة السنوية، لذلك فالحل الوحيد الذي يجده المهندس لتدبير أموره اليومية هو ابتكار حلول برمجية على مقاس الشركة .
و لن يتأتى له ذلك إلا بمعرفة مسبقة بطرق التحليل العددي و استعمال الحاسوب في حل معادلات رياضية. و هذا يدرس في الجامعات و مراكز التكوين (و منتدانا الحبيب) و ليس في مكان العمل. لأن وقت العمل ضيق و محسوب.
كما أنه لا مجال لاستعمال برامج مقرصنة تحت طائلة تعريض الشركة لغرامات مالية في حال قيام مايكروسوفت و أخواتها بالتحقق من برمجيات الشركة (إثر مكالمة هاتفية من عامل لم يستفد من العلاوة السنوية :) ).
قد تكون الصورة التي رسمتها قاتمة لكنها واقعية و تبين أن البرمجيات التي تستعملها في حاسوب المنزل لا تستطيع تثبيتها كلها في حاسوب العمل دون رخص.
في النهاية، أقول اني لا أقصد أن يكون المهندس مبرمجا محترفا زيادة على التخصص الذي درسه، لكن وضع برنامج صغير لتتبع مؤشر ما او ورقة excel ببعض المعادلات الرياضية أسرع و أنجع من تعلم برامج من العيار الكبير في حالات كثيرة.
و الله أعلم
عمر التومي 19-12-2004, 07:48 PM بسم الله الرحمن الرحيم
ما قصدت من طرح هذا الموضوع الا اثارة الجدل( كظاهرة حضارية من اجل النهوض بالامم _ الجاد طبعا_ في الطريق الصحيح ) و في حقيقة الامر ان ضعف الاداء الرياضي ( اي من جانب الرياضيات التطبيقية ) هو السبب الاساسي في الضعف العام لاداء لجميع التخصصات المختلفة , و اذا اردنا ان ننتقل من مجرد مستهلكين للبرامج ( المقرصة ) لا يمكن ان تتم بداية هذه الخطوة الا من خلال البدايات العلمية الصحيحة
فبارك الله فيك أخي العزيز على التشجيع الطيب الذي كنت احتاجه من اجل البداية في هذا العمل, وهذه دعوة مفتوحة للجميع من أجل تناول هذه المواضيع و التوكل على الله في هذا العمل
و اود ان ابدا طرح هذه المواضيع و لا زلت محتارا هل اجعلها على هيئة دروس ام فصولا في كتاب و اطرح كل فصل من اجل مناقشته كما فعلت في كتاب تحليل الاشارات و الذي ارجو ان ينال الحد الادني من اهتمامكم ( اي التعليق سواء سلبي ام ايجابي الكل على حد سواء ) و لا يتوقع الشخص ان يدرك التطبيقات العملية بين ليلة وضحاها لهذه المعدلات , فالفائدة لا تكمن من مجرد القراءة فقط بل الحوار البناء و الجاد
و من اجل التدليل على اهميتها تعمدت طرح موضوع تحليل الاشارات ، الذي يعتمد على المعادلات التفاضلية و بالاخص تحليل (فوريير ) و متسلسلات( تايلير) وغيرها
و في انتضار ردودكم
عمر التومي
عمر التومي 08-01-2005, 05:52 PM Numerical solution of linear system equations
الحل العددي للمعدلات لنظام المعدلات الخطية
كنا قد تناولنا في المقالات السابقة، طرق حل معادلة واحدة ذات مجهول واحد فقط،، سواء أن كان من المرتبة الأولى أو الثانية فما فوق، و طرحت أهم الطرق المستخدمة في الحل، و في هذا الدرس نطرح طريقة حل أكثر من معادلة تحتوي على أكثر من مجهول، و لهذه الطريقة أهمية بالغة في التحليلات المختلفة, و تتميز بكثرة الاستعمال, و بالأخص في تطبيقات الحاسوب.
حذف جاوس
قبل الدخول في التطبيق البرمجي ، أرى من الأهمية بمكان طرح المفهوم النظري لطريقة جاوس أو طريقة ( التعويض الخلفي) .
الأساسيات النظرية
تقوم طريقة جاوس على تحويل المعدلات إلى نظام المصفوفات و التعامل معها على هذا الأساس كما الآتي :
A1x1 + a2x2 + a3x3 + …….anxn = c1
B1x1 + b2x2 + b3x3 + ......... bnxn= c2
D1x1 +d2x2 +d3x3+ ……..dnxn=cn
نلاحظ ان لدينا عدد كبير من المعدلات يصل إلى ما قيمته n و عدد المجاهيل x1 x2… xn و هي المراد إيجاد قيمتها ، بينما القيم a1 a2 an , b1 b2 bn وكذلك d1 d2 d3 ….dn
المرافقات للمجاهل، فإذا رتبنا هذه في المصفوفة التالية:
a1,1 a1,2 ….. a1n
b2,1 b2,2 …… b2n
dn1 dn2 .. …. dnn
فهذه تسمى مصفوفة المرافق و تبدأ بالقيمة المرافقة للمتغيرات و تتكون من صفوف و أعمدة كما هو معروف, بينما المصفوفة التالية:
X1
X2
.
.
xn
فهذه تسمى مصفوفة المجاهيل, و المراد إيجاد قيمها ؟، بينما المصفوفة التالية :
C1
C2
.
.
cn
تسمى مصفوفة القيم المطلقة، و بتعبير أخر حولنا المعادلات غلى ثلاث مصفوفات كي يمكن التعامل معها , الخطوة التالية هي إيجاد المصفوفة الموسعة (augmented matrix ) عن طريق إدخال مصفوفة القيم المطلقة مع مصفوفة المرافقات و الملاحظ عليها أن عدد الأعمدة أكثر من عد الصفوف بمقدار واحد , لتصبح كالآتي :
a1,1 a1,2 ….. a1n c1
b2,1 b2,2 …… b2n c2
cn dn1 dn2 .. …. Dnn
(لاحظ أن الرقم a1,1 يعني العنصر الأول في الصف الأول من العمود الأول و الرقم a1,2 يعني العنصر الثاني من الصف الثاني في العمود الثاني و هكذا بقية العناصر)
الخطوة التالية هي جعل جميع العناصر التي تسبق عناصر القطر الرئيسي صفرا، و ذلك بإتباع الآتي:
F2,1=b2,1/a1,1
b2,1= b2,1 – f2,1*a1,1
b2,2 =b2,2 - f21*a1,2
b2,3=b3,2 – f1,2*a1,3
الذي قمنا به هو الآتي :
1. أوجدنا المعامل الذي يقوم بتحويل جميع العناصر التي تسبق عنصر القطر الرئيسي في الصف الثاني و ذلك بقسمة العنصر الذي رتبته (2,1) أي العنصر الأول في الصف الثاني على (1,1) أي العنصر الأول في الصف الأول
2. حولنا العنصر الذي رتبته (2,1) إلى صفر عن طريق الآتي : b21= b21 – f21*a11
3. طبقنا المعادلة السابقة على بقية عناصر الصف الثاني كي لا تتغير القيمة الفعلية للمصفوفة
4. نتبع بقية الخطوات بالنسبة لبقية الصفوف و نحول جميع العناصر التي تسبق القطر الرئيسي بنفس الطريقة
بعد أن اكتملت ملامح المصفوفة الموسعة نبدأ بالتعويض الخلفي و نبدأ بالصف الذي رتبته n (اىالصف الأخير ) و تكون معادلته كالآتي:
0 0 …… dnn = x
و باعتبار أن قيمة آخر قيمة مجهولة قد علمت نجد القيمة التي تقل عنها بمقدار واحد هكذا نستمر حتى نصل إلى x1 .
خوارزمية البرنامج
لكتابة خوارزمية البرنامج يلزم تعريف أربعة مصفوفات أولا
1. البداية
2. عرف المصفوفات a(50,50) b (50, 50) f(50) x (50)
3. read n
4. do
from I = 1 to n read elements of matrix a
5. do
m=n*(n-1)
6. do
from I=2 to m
from k=1 to i-1
if (a (k,k) ≠0 yes f(I,k)=a(I,k) / a(k,k)
7. do
from j = 1 to n +1
a(I,j)=a(I,j) – f(I,k)*a(k,j)
no
8. do
from l =I – 1 to I – 1
from j=1 to n+1
b(l ,j )= a(l , j )
a ( l , j ) = a (l + 1 , j )
a (l + 1 , j )= b (l , j )
9. do
from I = n to 1 step – 1
from j = I + 1 to n
s1= a(I, n +1 )
x(i) = (s1 – s2)/ a( I , I )
s2 = 0
10. do
from I = 1 to n
write x(i)
11. stop
هذه هي خوارزمية البرنامج و يمكن تقسيمها إلى حلقات من اجل المزيد من الاستيعاب لها كالآتي :
1. حلقة قراءة قيم المصفوفة مضاف إليها عناصر مصفوفة القيم المطلقة أي (n + 1 )
2. حلقة تكوين المصفوفة الموسعة و التي بها اختبار إذا كان العنصر المقابل للمعامل لا يساوي صفر فيتم ضرب المعامل في جميع عناصر المصفوفة ابتداء من الصف الثاني إلى الصف الأخير( الذي رتبته n )
3. حلقة قلب الأعمدة إلى صفوف في حالة أن العنصر المناظر للعنصر الذي سيقسم عليه يساوي صفر
4. حلقة التعويض الخلفي
البرنامج بلغة(الفورتران ) FORTRAN language
Dimension a(50,50) ,b (50, 50 ) , f(50) , x(50)
Write(*,*)' enter numbers of your elements (n)'
Read (*,*)n
Do 10,i=1,n
Do 20 , j=1 n+1
Write(*,*)' ','a ( ',I,j,' ) = '
Read(*,*)a(I,j)
20 continue
10 continue
m=n*(n-1)/2
do 30,i=2,m
do 40,k=1,n-1
if(a(k,k).ne.0)then
do 40,j=1.n+1
a(i.j)=a(I,j)-f(I,k)*a(k,j)
40 continue
else
do 50,L=i-1,i-1
do 60,j=1,n+1
b(l,j)=a(l,j)
a(l,j)=a(l+1,j)
a(l+1,j)=b(l,j)
60 continue
50 continue
do 70,i=n,1,-1
do 80,j=i+1,n
s2=s2 + a(I,j)*(j)
80 continue
s1=a(I,n+1)
x(i)=(s1 – s2)/a(I,i)
s2=0.0
70 continue
do 90,i=1,n
write(*,*)' x ( ',I, ' ) = ',x(i)
90 continue
stop
end
هذا الكود الذي يقوم بما سلف، و الآن لنبدأ في شرح الكود
شرح الكود
يبدأ البرنامج بقراءة قيم عدد المعدلات من خلال جملة read (*,*)n و التي تحدد عدد صفوف المصفوفة و عدد المجاهيل مع ملاحظة أن هذا النوع من الطرق يقوم بحل المعادلات التي تتساوى فيها عدد المعدلات مع عدد المجاهيل فقط أما عندما تكون عدد المعادلات اقل من عدد المجاهيل يلزم طرق أخرى و تعديلات مختلفة عن التي ورد ذكرها.
بعد تحديد قيمة المجاهيل يطلب البرنامج قراءة عناصر المصفوفة الموسعة بعدما تمت إضافة الحدود المطلقة إليها أي عدد n مضاف إليه واحد و يبدأ ذلك عن طريق الحلقة التي تتم الآتي
يجب قبل الدخول في الحلقة تحديد عدد العناصر التي سيتم حذفها من المصفوفة من اجل تكوين المصفوفة الموسعة و يتم ذلك عن طريق المعادلة التالية
M=n*(n-1)/2
و الحلقة الأولى تبدأ بالصفوف أي ( i) ابتداء من الصف الثاني إلى قيمة m التي تحدد عن طريق المعالة السابقة, يلي ذلك لانتقال إلى الحلقة التالية و التي تحدد بالمعامل k التي يبدأ من القيمة 1 إلى I – 1 و المعامل k يحدد العنصر المناظر للعنصر الذي سيقسم عليه و هذا السبب الذي جعل الحلقة تحدد عند I – 1 أي الصف إلي يقل بمقدار واحد ليطابق العنصر تماما ، يلي ذلك اختبار هذا العنصر إذا كان لا يساوي صفر فيتم إيجاد المعامل الذي سيجعل العناصر التي تسبق عناصر القطر الرئيسي تساوي صفر، ليدخل البرنامج في الحلقة التي تليها و تقوم بإجراء التعديلات اللازمة على الصفوف من جعل العناصر التي تسبق القطر الرئيسي صفرا و إجراء نفس التغيير على بقية عناصر الصف عن طريق المعادلة التالية :
A(I,j) =a(I , j ) –f (I, k )*a(k , j )
و جملة الاستمرارية continue لكي تتم العملية على كل عناصر المصفوفة كاملة
يتم هذا في حالة أن الإجابة للاختبار كانت بنعم أما إذا كانت الإجابة بلا و لأنه من غير المنطقي قسمة عدد على صفر لان الناتج سيكون كمية غير معرفة و لذا سيتم اتخاذ الإجراء التالي و هو قلب عناصر المصفوفة إلى أعمدة ، من المعروف هذا الإجراء لا يغير من قيمة المصفوفة شيء، و هو كالآتي :
b(l,j)= a(l , j )
a(l,j)=a(l+ 1 , j)
a(l + 1, j)=b(l, j )
أي كأننا قمنا بالاتي:
C=a
A=b
C=b
و هذا النوع من التبديلات ذو شهرة واسعة في تغيير القيم
الخطوة التالية هي الدخول في الحلقة التي تقوم بالتعويض الخلفي كالآتي:
ابتداء من الصف إلي رتبته n أي الأخير إلى الصف الأول بسالب خطوة واحدة إلى الخلف تم الحلقة التالية التي تبدأ من العمود الذي رتبته الصف الأخير منقوص منه واحد من اجل مراعاة أن العمود الأخير ليس من اصل المعادلة إنما أضيف من اجل تكوين المصفوفة الموسعة إلى العمود الأخير n))
نكون متغير يحمل الاسم s2 الذي يقوم بقسمة العنصر الذي رتبته I , j على العنصر الذي رتبته j و كأننا قمنا بالاتي"
2x=5 x=5/2
ووضعنا هذه القيمة في المتغير s2 و جملة الاستمرارية من اجل إتمام العملية على بقية العناصر، ننتقل إلى المتغير s1 الذي يقوم بحساب أو إيجاد العنصر الذي رتبته (I,n + 1 ) ، الخطوة الأخير في التعويض الخلفي هي إيجاد قيمة المجاهيل عن طريق المعادلة التالية:
X(i)=(s1 – s2)/a(I , I )
ثم تصفير المتغير s2 و إكمال الحلقة حتى إيجاد آخر مجهول و طباعة الناتج و الخروج من البرنامج
و أرجو أن أكون قد وفقت في شرح هذا النوع من المعدلات
السلام عليكم و رحمة الله وبركاته
مرحبا اخي الكريم عمر التومي
اسأل الله العلي العظيم بأسمائه الحسنى و صفاته العلى ان يوفقك لخير الدنيا و الاخرة على هذ المجهود الجبار و الى الامام
أخوك أبو محمد
عمر التومي 10-01-2005, 02:52 PM الله يبارك فيك على التشجيع و الله يوفقنا لمى فيه خير هذه الامة وصالحها و في الخدمة ما استطعت
عمر التومي 13-01-2005, 04:51 PM اعتذر عن الخطأ الغير مقصود في الكود لكن ارجو ان يتم تصحيح الخطأ التالي:
في بداية تعريف المصفوفات اعرف كالاتي :
(a(50,50) b 50 , 50) f(50,50) x(50
و في قلب الصفوف الى اعمدة هو كالاتي :
(b(l,j)=a(l,j
(a(l,j)=a(l+1,j
(a(l+1,j)=b(l,j
فارجو المعذرة و ارجو من الاخوة تصحيح الكود تفاديا للاخطاء التي يمكن ان تقع
عمر التومي 14-01-2005, 04:40 PM التــــحلــيل الـــعـــددي
Numerical analyses
طريقة الموقع الخاطئ
False position
كنت قد شرحت طريقتين من طرق حل المعادلات ذات المجهول الواحد، و نظرا لأهمية هذه الطرق ، رأيت أن أضيف هذه الطريقة، و التي لا تقل أهمية عن الطرق السابقة ، وللمزيد من الاتساع في الموضوع و لان التعدد يفتح آفاق الخيار أمام الدارس من اجل التنوع و الاستفادة الشاملة، كنت أريد أن ابدأ في شرح (lagrange interpolation polynomial ) لا اعرف ترجمة عربية دقيقة لها، على كل حال لنبدأ في طريقة ( الموقع الخاطئ) false position ) )
المفهوم النظري
إذا كانت الدالة معرفة في الفترة (x1 , x2 ) و كان f(x1)*f(x2)<0
من الرسم الموضع يمكن استنتاج أن المثلثين :
0 , f(x1) , f(x2)
x3 , x2 , f(x2)
متشابهان فيكون :
F(x2)/{f(x2) – f(x1)}=(x2 – x1)/ (x2 – x1 )
و تكون قيمة x3
X3=x2 – f(x2)***(x2- x1)/f(x2)-f(x2)}
و يمكن كتابة الخوارزمية للمعادلة التالية
y1=x**3 +4*x**2-10
مع ملاحظة أن الرمز ** يعني في لغة الفورتران للقوة الثانية مثلا أو الثالثة أو غيرها أي الأس
كالأتي:
1. start
2. read(x1 ,x2)
3. do
y1=x1**3 +4*x1**2-10
y2=x2**3+4*x2**2-10
X3=x2 – f(x2)*((x2- x1)/f(x2)-f(x2))
Y3=x3**2+4*x3**2-10
4. if(y3<0.000001)goto (8)
5. if(y1*y3>0.0)goto (7)
6. x1=x1
x3=x2
goto (3)
7. x1=x3
x2=x2
goto 3
8. write x3 ,y3
9. stop
و البرنامج بلغة فورتران كالأتي :
Read(*,*)x1 ,x2
y1=x1**3 +4*x1**2-10
y2=x2**3+4*x2**2-10
X3=x2 – f(x2)*((x2- x1)/f(x2)-f(x2))
Y3=x3**2+4*x3**2-10
if(abs(y3).lt.0.000001)goto 8
if(y1*y3.gt.0.0)goto
x1=x1
x3=x2
goto 3
x1=x3
x2=x2
goto 3
write(*,*) x3 ,y3
stop
End
و بهذا نكون قد انهينا طريقة الموقع الخاطئ
حسان رضي البسيسي 04-02-2005, 05:04 PM مشكور على المعلومات
عمر التومي 10-05-2005, 08:43 PM كنت قد طرحت في سلسلة الدروس السابقة مجموعة من الطرق المستخدمة في حل بعض المسائل العددية ابتداء من طرق حل معادلة واحدة في مجهول واحد و التي من بينها طريقة نيوتن و طريقة المقاطع و الموقع الخاطئ و طريقة التعويض الخلفي المستخدمة في حل عدد n من المعادلات لعدد n من المجاهيل و في هذه الدروس التي اعتبرها قفزة نوعية من الناحية الرياضية أو البرمجية لعدة أسباب منها :
1. اعتماد لغة جديد و هي لغة (السي c ) العتيدة
2. إدراج مخطط سير العمليات ( أو تدفق المعلومات) flow chart
3. تحليل البيانات الناتجة عن المسائل و الأمثلة المستخدمة سواء باستخدام برنامج الجداول الالكترونية excel أو باستخدام برنامج المحاكاة الشهير MATLAB
4. إدراج طرق لم أدرجها مسبقا مثل (طريقة الرمي) (رنج كوتا)( القيم الذاتية)
5. التوسع في شرح طرق قد تناولتها مسبقا مثل طريقة ( نيوتن رافسن) و تطبيق ما سبق عليها
6. بالإضافة إلى مواصلة استخدام لغة (فورتران) كما اعتدنا سابقا
7. تحميل كود البرنامج جاهزا للاستخدام باللغة المستخدمة.
و في حقيقة الأمر فان الفضل في هذا التحول يعود إلى صديقي( احمد حمر الشوشة) الذي أصر على مشاركتي في هذه المقالة و معظم المقالات في الأصل عبارة عن بحوث مقدمة ضمن متطلبات نيل درجة الماجستير في هندسة الحاسب الآلي فجزاه الله ألف خير عني و عن كل من يريد الاستفادة من سلسلة الدروس هذه.
و سأنشر تباعا إن شاء الله ما يلي :
1. طريقة الرمي
2. طريقة لا جرانج للتوليد بواسطة البرمجة
3. طريقة جاكوبي لحل مسائل القيم الذاتية
4. الملاءمة والانكفاء بواسطة البرمجة
5. الحلول العددية للمعادلات التفاضلية العادية بواسطة البرمجة
6. طريقة نيوتن رافسن ونيوتن رافسن المعدلة بواسطة البرمجة
7. طريقة شبه المنحرف لايجاد تكاملات الدوال
.................................................. ..................................................
************************************************** *****
الملاءمة والانكفاء بواسطة البرمجة
FITTING METHOD
الملائمة والانكفاء :
عندما تعطى بيانات غير دقيقة نوعا ما أي تقريبية كالقياسات المعملية والهندسية فان هذه البيانات ترتبط بأخطاء مصدرها القياس أو الانسان أو .... . لذلك نلائم المنحنى الناتج من هذه البيانات حيث أن هذه البيانات تتبع معادلة معينة ولكن قد تلائم المنحنى لأكثر من شكل ولكن المنحنى المفترض أخذه يأتي من مصدر البيانات نفسها هل تمثل المسئلة دالة تربيعية أو أسية أو ... وهكذا وبعد تحديد الدالة يجب أن نجد أجود ملائمة Best Fit وهي تعني أن نجعل الأخطاء أقل مايمكن فنأخذ مجموع مربعات الأخطاء
S=Σ (i=0,n)δ*δ
حيث
δ0 = Pm(x)-yi
Pm (x) = a0+a1x +…….+amxm = ajgj(x)
وهذه الطريقة هي طريقة ملائمة المنحنيات باستخدام المربعات الصغرى...........................
حمل الدرس كاملا
---------------------------------------------------------------------------------
.................................................. .................................................. ........
طريقة لا جرانج للتوليد بواسطة البرمجة
Lagrange’s Interpolating Polynomial
طريقة لا جرانج للتوليد
تعتبر طريقة لاجرانج طريقة جيدة لتوليد قيم جديدة لكثيرات الحدود وكذلك لايجاد صيغة كثيرة الحدود . وهي تصلح لأي عدد من النقاط. وتعتمد درجة كثيرة الحدود الناتجة على عدد النقاط المستخدمة.
درجة كثيرة الحدود = n-1 حيث n عدد النقاط
فلو كانت عدد النقاط 3 فستكون كثيرة الحدود من الدرجة الثانية وهكذا وتكون عدد معاملات لاجرانج L تعتمد على عدد النقاط وتكون قيمة L على الصورة:
= حاصل ضرب حاصل طرح قيمة xمن كل النقاط عدا النقطة الحالية
حاصل ضرب حاصل طرح النقطة الحالية من كل النقاط عدا نفسها
ثم لإيجاد المعادلة النهائية :
Y=L(x) = ΣLi (X)*Yi
ومن الملاحظ أنه لا يمكن بسهولة أو قد يتعذر حلها يدويا خاصة عندما تكثر عدد النقاط ويزداد صعوبة عندما تكون قيم النقاط بالأرقام العشرية. لذلك تحل باستخدام الحاسوب. وسنبرمج طريقة .....................
حمل الدرس كاملا
و البقية تأتي إن شاء الله تعالى
عمر محمد التومي
عمر التومي 19-05-2005, 06:43 PM تستخدم طريقة الرمي لإيجاد حل المعادلات التفاضلية من الرتبة الثانية , ولذلك يجب علينا معرفة ثابتين وعادة ما تكون الثوابت إما الدالة ومشتقتها الأولى عند نقطة البداية (مسألة القيمة الابتدائية) أو الدالة ومشتقتها عند نقطتين مختلفتين (مسألة القيم الحدية) كمسألتنا هذه.
وتتلخص طريقة الرمي في:
- نفترض الشرط الناقص من شروط مسائل القيم الابتدائية وهو هنا تفاضل الدالة عند x=1
- اوجد الحل بالافتراضات الجديدة (x`=3) وقارنه مع الشرط المعطى عند تلك النقطة.
- أعد تغيير القيم الابتدائية أي الفرض الذي فرضته حتى نحصل على المطلوب وهو (في هذه المسألة y(3)=10.0179 )
وبأخذ السؤال الذي يقول أوجد حل مسألة القيم الذاتية :
D2y/dx2 =y ; y(1) =1.1752 , y(3) =10.0179
أولا: نأخذ قيمة افتراضية لy` عند x=1 ثم نستخدم طريقة رنج كوتا لإيجاد قيمة y عند x=3 .........
-------------------
حمل الملف كاملا
----------------
طريقة نيوتن رافسن ونيوتن رافسن المعدلة بواسطة البرمجة
Newton-Raphson Method
And
Modified Newton-Raphson Method
طريقتا نيوتن رافسن ونيوتن رافسن المعدلة:
هما طريقتان لحل المعادلات الآنية غير الخطية , ولو أخذنا معادلتين في متغيرين كمثال ونريد ايجاد قيمتي x,y اللتان تحققان المعادلة (1)
F1(x,y)=0 F2(x,y)=0…………(1)
نستخدم لذلك إحدى الطريقتين
أولا: طريقة نيوتن رافسن
من متسلسلة تايلور في متغيرين كمثال
F1(xi+1,yi+1)=F1(xi,yi)+ (xi+1-xi)+ (yi+1-yi)+…….
F2(xi+1,yi+1)=F2(xi,yi)+ (xi+1-xi)+ (yi+1-yi)+…….
نفترض أن xi+1,yi+1 فريبة جدا من الحل لذلك
F1(xi+1,yi+1)=F2(xi+1,yi+1)=0
ونضع كذلك
xi+1 - xi = h
yi+1 - yi = k
لحصلنا على الصورة ........
-----------------------
جمل الملف كاملا
----------------------
عمر التومي 07-06-2005, 11:44 AM سوف نقوم بحل المعادلات من النوع
dy/dx = f(x,y)
أي معادلة خطية من الرتبة الأولى . ولحل هذا النوع من المعادلات هناك مجموعة من الطرق منها:
طريقة اويلر Euler’s Method
نفترض أن الحل y=F(x) متصل وقابل للتفاضل وأن نقطة البداية هي (x0,y0) وأن الحل مطلوبا عند x=x` لذلك يجب تجزئة الفترة إلى n من الاجزاء بعرض w ( على أن تكون صغيرة)
حيث w = (x`-x)/n
ثم نطبق القانون
yi+1=yi +w * f(xi,yi)
حيث I = 0,1,..n-1
ملاحظة:
- يكون الخطأ أقل بقيم أقل لw
- تزداد الحسابات بازدياد عدد الفترات أي تصغير w
- كل y تعتمد على التي قبلها مما ينشر الخطأ في حالة وقوعه.
امتداد طريقة اويلر Extended Euler Method
بأخذ ثلاثة حدود من متسلسلة تايلور التي حصلنا منها على EM نحصل على EEM
yi+1=yi +w * f(xi,yi) + w2/2! * f `(xi,yi)
حيث I = 0,1,..n-1
طريقة اويلر الاكثر امتدادا More Extended Euler Method
بأخذ الحد الرابع من متسلسلة تايلور نحصل على MEEM
yi+1=yi +w * f(xi,yi) + w2/2! * f `(xi,yi) + w3/3! * f ``(xi,yi)
طريقو اويلر المعدلة Modified Euler Method
في هذه الطريقة نستغل EM لإيجاد y`i+1 (Predictor) ثم نستخدمها لحساب المتوسط
avg= ( f(xi,yi) + f(xi+1,y`i+1) )/2
نحسب من جديد yi+1 (Corrector)
yi+1 = yi + w* avg
عمر التومي 07-06-2005, 11:49 AM مقدمة
مسائل القيم الذاتية تتلخص في ايجاد قيم λ وهي القيم الذاتية و x وهي المتجهات الذاتية ونستخدم لذلك طريقة جاكوبي.
.............
--------------------------
حمل المف كاملا
--------------------------
عمر التومي 23-06-2005, 01:59 PM انني اتسغرب من عدم المبالات او التعليق بالايجابي او السلبي على سلسة الدروس هذه
محمد يوسف 23-06-2005, 02:41 PM انني اتسغرب من عدم المبالات او التعليق بالايجابي او السلبي على سلسة الدروس هذه
أخي عمر , برأيي أننا عندما نكتب موضوعا ما لا ننتظر الرد عليه , فالمهم
أن يستفيد منه الآخرون , وعدد قراءات الموضوع حتى الآن أكثر من 500 .. وهو
أمر يشجعك على الاستمرار بالموضوع .
شكرا جزيلا لك :)
م / وليد السيد 12-07-2005, 02:32 AM شكرا جزيلا يا أخي العزيز مع المزيد من التقدم و الرقي إن شاء الله
حاتم جلول 08-12-2006, 12:53 PM شكرا يامحمد
والله انك افدتنا كثيرا يا اخ عمر
جزاك الله خيرا
المهندسة الواعدة 21-07-2007, 12:41 AM مشكور اخي وبارك الله فيك
لكن نتمنى تعرض شرح المواضيع لانا بحاجة لها
محمد نور 1988 29-12-2007, 06:04 PM اخي اريد منك طلب لو سمحت(باستخدام المتلاب ضروري) اريد حل منك هذا السؤال ارجوك اريده يوم الاحد قبل يوم الاتنين اريده 30/12/2007 حتى مساء
أرجو من عنده فكرة على الموضوع أن يساعدني في حل هذه المشكلة
والموضوع هو إذا كان لديك 3 معادلات في 3 مجاهيل كيف يمكن باستخدام
نظرية جاوس للتعويض التراجعي (باستخدام المتلاب) في تحل هذه المعادلات او (4معادلات في 4 مجاهيل هي الاهم ياريت تطبق عليها هيا)
متلا للمعادلات
3x + 4y +2z =7
4x + 9y +5z=2
9x+2y+6z=10
ملاحظة هامة : لا أقصد الحل بالطريقة اليدوية العادية بأن أضرب الصف الأول
متلا في 4 والتاني في 3 وأطرحهم من بعض لأحصل على الصف المدرج
وأنما كيف يمكن أن أستخدم حلقات وأستخدم شرط اخل الحلقة يغنيني
عن أعادة العمليا الأولية على الصفوف .
ولكم جزيل الشكر وبارك الله فيكم
file:///C:/Documents%20and%20Settings/noredden/UserData/Desktop/matlab_files/user_offline.gif لوسمحت اريد الحل يوم الاحد 30/12/2007 المهم قبل يوم الاثنين صباحا
nedasaed 02-01-2008, 08:22 PM الاخوة الكرام جميعاً والمميزين خاصة ارجو المساعدة الماسة جداً حيث انني بحاجة ضرورية جداً جداً وهي كالاتي :-
استخدم طريقة جاكوبي التتابعية لحل النظام التالي
x1+5x2 +x3=6
5x1 -x2 +3x3=5
3x1+2x2 +x3=7
حيث ان الحل البدائي
x^0 =[1 0 0]^t
جد x^1 , x^2
يجب ان يكون الحل بأستخدام لغة البرمجة ++c عن طريق بناء برنامج خاص بذلك بتطبيق طريقة جاكوبي
اكرر رجائي الخاص مرة اخرى فرج الله عنكم كربة من كرب يوم القيامة.
ارجو ذلك ان امكن حتى يوم السبت5/1/2008
|
|