Lec3-sources-of-error
بسم الله الرحمن الرحيم. إزيكم يا شباب عاملين إيه؟ النهارده إن شاء الله هناخد المحاضرة الثالثة في Numerical Computing Methods، هناخد الـ Source of Errors اللي هو الجزء الثاني. كنا إحنا المحاضرة اللي فاتت شرحنا بالتفصيل الـ round-off error وخدنا عليها examples كتير.
أاا إن شاء الله النهارده هناخد الـ Loss of Significance والـ truncation error والـ propagation of error، فـ إحنا إن شاء الله في المحاضرة دي هنخلص الـ chapter 1 كله بإذن الله والمحاضرة الجاية نبتدي بـ chapter 2. أاا لو إحنا اتكلمنا بقى عن أول source of error
هو الـ loss of significance أو بيسموه الـ subtractive error أو الـ cancellation error أو الـ catastrophic error. الثلاث الأربع أسماء دول هم ممكن أستخدم أي واحد فيهم ولازم تبقى أنت عارف هو إيه يعني لازم تبقى عارفهم الأربع أسماء دول. طيب، الـ loss of significance ديت ببساطة قوي ده نوع ده source من الـ sources of error اللي بـ
سببها إن أنا لما بكون بـ اطرح عددين قريبين من بعض، فـ نتيجة الطرح ديت بـ يديني لو العددين قريبين من بعض يعني في تشابه في عدد من الـ significant digits زي الـ example اللي موجود قدامنا دوت. فـ لو جيت أشوف لما أجي أطرح هـ ألاقي أول digit 1 مع 1 هـ يتكنسل يبقى 0، 2 مع 2 هـ تبقى 0، 3 مع 3 0، 4 مع 4 0.
وبعد كده ناتج الطرح النهائي اللي هو 1234. فـ ده معناه إن أنت من الأول خالص أنت داخل بـ approximation 1.2345678 دول حوالوا حوالي 8 digits، والرقم التاني برضه 8 digits يعني أنت داخل بـ approximation 8 significant digits. لما طرحت
ناتج الطرح بقى فيه 4 significant digits بس. هل يعني هنا حصل loss of significance؟ عدد الـ significance قل. طيب، هل لو أنا بـ أطرح لو العدد اللي فوق ده exact والعدد اللي تحت exact وأنا بـ أطرحهم وطلع الناتج كده، خلاص؟ يعني أنا عمره ما هـ يتغير يبقى حاجة حاجة غير كده، يعني هو ده اللي فوق exact واللي تحت exact، زي لما أطرح 100 - 100 ما هي بـ 0 أنا هـ أعمل إيه ما هما الاثنين زي بعض.
لكن الفكرة كلها إن الرقم اللي فوق اللي فيه 8 significant digits ده كان رقم تاني مثلًا فيه 15 significant، وأنا بـ أنقله من على الـ calculator أخدت 8 بس. والرقم التاني كان بـ يمثل على الـ calculator بـ 15 significant برضه، وأنا بـ أنقله في الورقة أخدت منه 8 بس.
يبقى الرقم الأولاني approximation والرقم التاني approximation، بالإضافة إن الرقمين دول اللي هما الـ اتنين approximations قريبين أو شبه بعض في 4 significant digits. فـ لما جيت طرحتهم كان أول أربعة significant digits كنسلوا بعض فـ أداني بس في النهاية 4 significant digits بدل 8.
يبقى هل ناتج الطرح دايمًا بـ يسبب لي مشكلة مشكلة الـ loss of significance؟ لا. إن أنا لو بـ أطرح عددين متقاربين في عدد من الـ decimal digits، والـ كلا العددين approximations لأعداد تانية، هم دول اللي ممكن يحصل فيهم الـ loss of significance. يعني الطرح عامة أو in general مش بـ يسبب مشكلة إلا في الحالة دي.
طيب الـ example ده إحنا كنا شرحناه المحاضرة اللي فاتت، اللي هو عشان يوضح لك إن إزاي الطرح ممكن يعمل مشكلة. فـ مثلًا هنا بـ يقول قارن ما بين قيمة f عند 500 وg عند 500، مديك the two functions و بـ يقول لك عوض فيهم بـ 500.
باستخدام 6 digits and rounding. فـ ده تعويض مباشر. هـ أحسب بس في التعويض المباشر بالرغم إن سؤال سهل جدًا إلا إن كتير بيغلطوا. ليه؟ أولًا، التعويض الصح إن أنا هـ أجيب مثلًا الـ F(x) عبارة عن 500 [ 1+ 500√ - 500√]
هـ أحسب على الـ calculator √501 والناتج اللي هـ يطلع هـ آخد منه 6 digits بس اللي هي 22.3830. وهـ أحسب √500 والناتج اللي هـ يطلع على الـ calculator هـ آخد منه 6 digits بس وأعمل rounding. وهـ أطرح الرقمين اللي هما الـ 6 digits ده - الـ 6 digits دوت فهـ يديني 0.023
وطبعًا ناتج الطرح عمره ما هـ يزيد عن 6. وأضربه في 500 والناتج اللي هـ يطلع على الـ calculator آخد منه 6 digits بس وأعمل rounding. فـ هـ يطلع لي نتيجة الـ direct substitution في الـ F بـ 11 بـ 11.1500. دول كام significant digits؟ دول كده دول كام decimal digits؟ أربعة decimal digits.
طب لو جينا نعوض في الـ G بـ 500 نفس ال نفس الفكرة، هـ أجيب √501 وآخد منها 6 digits، وأجيب √500 وآخد منها 6 digits، وبعدين أقسم 500 على مجموع الاثنين، طبعًا لما أجمع √501 + √500 ممكن الناتج يزيد عن 6 digits، آخد منهم 6 بس.
وأقسم 500 على الناتج دوت هيطلع لي 11.1748، اللي هو كام decimal digits؟ أربعة decimal digits. طيب، ليه الـ F 500 طلعت لي results مختلفة عن الـ G of 500؟ بالرغم إحنا الـ slide اللي جاية على طول هـ نكتشف إن الـ F والـ G حاجة واحدة.
بس ليه أنا معلش عشان خاطر في الـ record لما بـ أرجع بـ يـقسم الـ بـ بـ يلغي الـ record، فـ أنا عشان كده بس هـ أقول لك اللي هـ يحصل الـ slide الجاية وإحنا هـ نجي لها إن شاء الله. هـ نكتشف إن الـ F هي نفسها الـ G لما أضربها في الـ conjugate، في المرافق بتاعها. ليه الـ F ادتني قيمة والـ G ادتني أو الـ F ادتني عدد decimal digits مختلف عن اللي ادتهوني الـ G؟ لأن الـ F فيها loss of significance واضح لأن أنا كنت بـ أطرح عددين 22.383
minus 22.3667 فـ في تشابه في ثلاثة decimal digits، عشان كده حصل loss of significance. خلاص؟ طيب، أرجع لـ نقطة مهمة، لو أنت جيت عوضت، لو أنت جيت حسبت على الـ calculator √501 - √500 وضربتهم في 500 والناتج النهائي خالص أخدت منه 6 digits
وعملت نفس الموضوع في الـ G، هـ تلاقي الـ F بـ تطلع لك نفس ناتج الـ G لأن أنت ما تعاملتش مع زي ما قال لك في المسألة مع 6 digits and rounding 6 .digits and rounding يعني كل عملية تعملها لوحدها وتاخد 6 digits وتعمل rounding، مش تعمل وفي النهاية تعمل rounding. لاـ كدا خلاص مفيش مشكلة الـ loss of significance.
ما أنت أخدت عدد digits أخدت كله وخدت في كله الـ exact الـ exact الـ exact وفي النهاية عملت الـ rounding، فالناتج اللي هـ يطلع في الـ F هو نفس الناتج اللي هـ يطلع في الـ G. خلاص؟ فـ دي نـ خلي بالنا من الحتة دي بالرغم إن الـ direct substitution سؤال سهل جدًا إلا الناس كلها بـ تغلط فيه أو معظمها يعني بـ يغلط فيه. طيب، إحنا في الـ بعد كده بـ نقول إن الـ F هي نفسها الـ G لأن الـ F لما أضربها في الـ conjugate اللي هو    1 + x + 1  / √ x + √ x √ + √
x√، كأنك ضربتها في 1. فـ المفروض هي هـ تدينا صيغة equivalent للـ F بس شكلها مختلفة. الـ G هنا ما فيهاش minus. فـ لما نيجي نعوض في الـ G هـ يطلع لنا الـ 6 decimal digits ال أو الـ 4 decimal digits اللي طلعوا لنا أو الـ 6 اللي طلعوا لنا في الـ example اللي فات.
طيب مين قال إن قيمة الـ G عند 500 أحسن من قيمة الـ F عند 500؟ ما يمكن الـ F أحسن وما فيش loss of significance ولا حاجة. فهنا عشان نـ أتأكد إن الـ G أحسن فعلًا من الـ F لو إحنا غيرنا الـ calculator وبدل ما استخدمنا calculator 6 digits، استخدمنا calculator 8 digits. هل في حد عنده شك إن الناتج أكيد هـ يطلع أحسن؟ دي ما فيهاش
شك. فـ هـ يطلع الناتج الـ F اللي كان فيها اللي طلعت لي 4 decimal بس، لما نعوض بـ 500 هـ تطلع لي 11.1725 اللي هي أقرب للـ G of 500 مش للـ F 500. يبقى معنى كده معنى كده الـ F of 500 فعلًا في الأولانية كان فيها الـ loss of sig.
significance. Okay.. طيب ده example  تاني على ال loss of significance برضو ان هو عايز عندنا جزر 1 + cos x على 2 عايز ي evaluate F عند 3.14 باستخدام 5 significant digits and rounding ولما يقول significant digits يعني بعد من اول digit لا يساوي ال 0.
Okay؟ قبل أو بعد العلامة. فهنا أو بيقول لك comment on the results يعني الناتج اللي هـ يطلع ده إيه الـ comment بتاعتك عليه؟ هل في loss of significance ولا ما فيهوش loss of significance؟ فـ إحنا عندنا هنا الـ F of 3.14 ده direct substitution خالص، هـ أجيب الـ cosine 3.14 لوحدها هـ يطلع لي -0.999986 مش عارفة 7
فـ لما تيجي تعمل تاخد 6 digits أو 5 digits وتعمل rounding هـ يطلع minus 1. فـ يبقى √1 - 1 / 2 يعني √0 / 2 بـ 0. خلي بالك إن الـ formula أصلها ما فيهاش minus يعني هي شكلها مش باين فيها minus لكن لما عوضنا ظهر الـ minus. طيب، معنى كده إن الـ cosine 3.14 طلع بـ 0، هل هو accurate بـ 0؟ لو هو 0 خلاص يبقى هو ده نصيبه كده، هو كده، هنغير في
إيه؟ لكن هي الفكرة كلها إن لا لا إن الـ cosine 3.14 مش -1، دي -0.999. لو أنا كنت حطيت الـ -0.999 ديت وهكذا ما كانش طلع لي 0. وأنا كاتبة جنبي which is a catastrophe، يعني ده كارثة. ليه؟ لأن لو الـ F of 3.14 دي كانت موجودة في المقام بتاعة function ضمن الحسابات اللي أنت بـ تعملها في computation معين.
ده وطلع الناتج بتاعها بـ 0، يعني يبقى حاجة على 0 تطلع بـ infinity يعني ممكن تسبب لك كوارث في الحسابات بتاعتك. Okay؟ يبقى هنا في loss of significance واضح لأن أنت طرحت عددين قريبين من بعض اللي هما الـ 1 والـ -0.999.
طيب عشان أحصل على حل أفضل، و ده بـ يبقى السؤال اللي بعديه، هل ممكن تحصل على حل أفضل من ده؟ يبقى لازم أجيب formula equivalent للـ F of X بس بشكل مختلف. فهنا مثلًا المقترح اللي هنا، وخلي بالك إن مش شرط المسألة يبقى ليها unique solution لا. ممكن أنا اقترحت حل لـ واحد تاني يـ يقترح حل تاني، وممكن يبقى في حل تالت، ونجيب حلول أفضل من الـ 0.
وأنا أجيب حل وأنت تجيب حل وكلنا نجيب حلول قريبة جدًا من الـ 0 بس مش 0 يبقى أنا يعتبر أنا صح وأنت صح وزميلنا صح. طيب هنا عملنا إيه بقى؟ فـ الـ cos(x) شيلناها وهـ نحط مكانها إحنا عارفين إن الـ x يعني x/2 + x/2 فـ استخدمنا قاعدة مجموع الزاويتين اللي هي cos(a+b) اللي هي cos(cos) - sin(sin)
فـ cos(x/2 + x/2) اللي هي cos²(x/2) - sin²(x/2). وهـ نرجع نعوض بالـ cos(x) ديت في الـ صيغة بتاعة الـ F of X، فـ هـ تبقى √1 + cos² - sin² / 2.
هنـشيل 1 - sin² ونحط مكانها cos²، فـ يبقى عندنا 2 cos² فوق في المقام وتحت في 2، هنـختصر الـ 2 مع الـ 2 ويبقى الـ square root للـ cos² بـ cos(x/2)، هل الـ cos(x/2) دي كده الـ cos(x/2) صيغة equivalent بالظبط لـ √1 + cos(x/2)، بالظبط إحنا ما عملناش أي حاجة غير إننا شيلنا الـ cos(x) وحطينا شكل equivalent لها.
هل بقى الـ cos(x/2) هـ تطلع لي رقم أحسن من الـ 0 أو حاجة فيها significant digits أكتر من الـ 0؟ أه فعلًا لما عوضنا طلع بـ 0.0007963، يعني رقم قريب جدًا من الصفر أه بس مش صفر.
فـ بالتالي لو أنت بـ تتعامل مع الرقم دوت اللي فيه 4 significant digits أفضل بـ كتير من أنت بـ تتعامل مع الـ 0 ومش هـ يسبب catastrophe ولا حاجة. خلاص؟ يبقى هنا الـ خلي بالك يعني هل الـ cos هل شكل الـ function دي دايمًا هـ يبقى فيها loss of significance؟ لا. لو الـ cos بتاعة الرقم اللي أنت بـ تعوض بيه بعيد عن الـ 1
خلاص. لو positive خلاص مفيش loss of significance. هي الفكرة هنا إن الـ cosine بتاعة الرقم اللي أنا مدياه لك بالذات اللي هو 3.14 كان قيمته قريبة جدًا من الـ 1 بـ الـ negative. فـ حصل loss of significance. خلاص؟ فهنا أحد الحلول إن أنا أعوض أشيل شكل الـ cosine وأحط حاجة equivalent.
valent ليه. دي ده example تاني مدينا second order equation وعايز يحلها بس بيقول استخدم four significant digits in computation وطبعا هنا default نحنا بيستخدم ال rounding هنا دي صعب ان انا حللها شوية فهنحلها بالقانون اللي هو minus b موجب او ناقص الجزر على 2
فـ هيطلع لي 2 roots x1 و x2. الـ root الأولاني x1 هيبقى 90 + 19.95. هيطلع لي 39.93 آدي 4 significant digits أوكي زي الفل تمام قوي. الـ root التاني اللي هو هيبقى 20 - 19.95 فـ هـ يطلع 0.05.
ده معنى كده إن حصل loss of significance، هنا حصل 3 significant lost. يعني أنا داخلة بـ 4، لقيت الناتج فيه 1 بس، يبقى فيه 3 lost significance. هل ممكن أحصل على حل أفضل؟ فهنا في قاعدة بـ تقول إن حاصل ضرب الـ two roots بتساوي C/A. C اللي هو الـ free term في الـ equation والـ A اللي هو الـ coefficient بتاع الـ x².
فـ أنا عندي x1، هل أقدر أحصل على x2؟ x2 هـ تبقى C / A x1. C بـ 2 والـ A بـ 1 والـ x1 لسة جايبينها بـ 39.95. طلع الناتج 0.05006. هل الناتج ده الناتج ده فيه كام significant الأول؟ فيه 4 significant digits. هل في مشكلة؟ لا، أنا داخلة بـ approximation 4 significant والناتج طالع لي 4 significant، فـ كده مفيش loss of significance.
لأن استعنت بدل ما حسبت الـ root، يعني أنا حسبت واحد من الـ roots اللي هو ما ادانيش المشكلة لما جمعت، التاني بقى لما طرحت عمل لي مشكلة، فقمت معوضة في القانون دوت. ده example تالت أو example رابع.
1 على √x² + 2x - x - 1. هو في الـ example دوت ما اداش قيم معينة تعوض بيها. هو بـ يقول explain what problem you might run into in the certain cases find a way to fix the difficulty. يعني إيه المشكلة اللي ممكن تواجهك في حالات معينة، وإيه هي الحالات ديت؟
وايه اقتراحاتك لحل المشكلة دي؟ فـ المشكلة إن لو جيت أشوف تحت المقام بتاع الـ function دي اللي هو √x² + 2x، طلع الـ minus common factor فـ يديك minus (x+1). إيه علاقة الـ √x² + 2x بالـ x+1 اللي أنت بتطرحهم من بعض دول؟ علاقتهم إن لو الـ x very large
لو الـ x كبيرة زي عند الـ 500 عند الـ 1000 لكن لو الـ x صغيرة مش هـ يحصل مشكلة. لو الـ x كبيرة هيبقى √x² + 2x قريب جدًا من x + 1. مين قال كده؟ أهو. الـ x + 1 هي √x + 1 الكل تربيع.
فـك التربيع اللي تحت الجذر دوت يعني x² مربع الأول + مربع الثاني + الأول × الثاني × 2، يبقى √x² + 2x + 1. لو أنت شلت الـ 1 وخلي بالك عشان الـ x large، فالـ x² + 2x جنب الـ 1 رقم كبير جدًا، فـ الـ 1 رقم صغير جنبهم يعني فـ أقدر أهمل الـ 1.
فهـ يساوي تقريبًا √x² + 2x. يعني x + 1 تقريبًا √x² + 2x. يعني معنى كده أنت في المقام بتاع الـ function بـ تطرح حاجتين nearly equal، قريبين من بعض. فـ عشان كده هـ يعمل لك مشكلة إيه؟ الـ loss of significance. هل ممكن بقى overcome المشكلة دي؟ هل ممكن أحلها؟ قال لك أه، طالما في square root الأفضل ليك إنك تضرب في الـ con.
jugate. ممكن الناتج تلاقي حاجات تختصر مع بعضها وتلاقي الناتج ما فيهوش الطرح اللي عامل مشكلة. فـ فعلًا لما ضربنا هنا في الـ conjugate اللي هو √x² + 2x + x + 1 على √x² + 2x + x + 1 طلع الناتج اللي قدامنا ده √x² + 2x + x + 1 اللي هو already ناتج ما فيهوش أي فيه فيه minus بره. طبعًا لو لو حاجة كلها بـ تُـطرح أو كلها بـ تتجمع فـ ما فيهاش loss of
significance. المشكلة إن يبقى في حاجة positive وحاجة negative وبـ يطرحوا minus بعض. خلاص؟ فهنا حليت المشكلة إن أنا ضربت في الـ conjugate بتاع الـ denominator. كده إحنا خلصنا الـ loss of significance بالـ examples بتاعته وتقريبًا هي دي الـ examples اللي موجودة في المحاضرات لو موجودة معاكوا hard copy.
بالإضافة بس في في بس example طبعًا في examples موجودة على فكرة في الـ في الـ presentation في الـ record دوت مش موجودة عندكم في ال في في المحاضرات انا عشان كدة بقولكم الاتنين بيكملوا بعض ال presentation و ال محاضرات الورق اللي المفروض تبقى موجودة معاكوا
اللي أنتوا قلت لكم في مصادر كتير تجيبوها منها، ما لقتوش أي مصدر تحصلوا منه على المحاضرات فـ ممكن الـ admin بتاعكوا يكلمني وياخد مني المحاضرات يصورها. خلاص؟ فـ الـ في example بس موجود في المحاضرات مش موجود في الـ presentation اللي هو بتاع الـ e^x. أنا ما رضيتش أحطه لأن هو محتاج حاجة اسمها maclaurin expansion إحنا لسة هـ نشرحها دلوقتي في الـ truncation
error. فـ بعد ما نشرحها في الـ truncation error، ارجع أنت للـ example اللي موجود عندك في المحاضرات واقرأه تاني. إن شاء الله هـ تفهمه، وما فهمتوش اسألوني فيه. طيب، نرجع تاني بقى لتالت source of error اللي هو الـ truncation error. الـ truncation error دوت ده إيه؟ ده كذا definition.
بـ يقول إن هو is presented when some infinite process is approximated by finite process. يعني إن أنت المفروض عشان تشتغل accurate وexact لازم تشتغل على على process infinite up to infinity، وأما أنت عشان تقدر تشتغل أخدت جزء finite منها ورميت الباقي. اللي رميته ده اسمه truncation error.
أحيانًا وطبعًا ده بـ أعمله ليه؟ عشان أحول بدل ما الـ mathematical expression عندي complicated أنا بـ أحوله لـ mathematical expression أبسط شوية. فـ وأنا بـ أبسط بـ أفقد حاجة. المقابل إني بـ أفقد اللي بـ أفقده ده اسمه truncation error.
طيب، نرجع بقى للـ truncation error مرتبط بحاجة اسمها Maclaurin expansion أو Taylor expansion. Taylor معقد شوية عن Maclaurin، فـ إحنا خلينا بما إن أنتوا ما سمعتوش عنهم الاثنين، فـ خلينا نبسط المواضيع شوية وناخد Maclaurin.
إيه Maclaurin expansion دوت؟ Maclaurin expansion دوت قال إن لو حضرتك عندك function صعب إنك تتعامل معاها، يعني إيه تتعامل معاها؟ يعني مثلًا زي على سبيل المثال تفاضلها، تكاملها، ما أنتَ مش عارف. فـ Maclaurin عمل بقى عرض حلو قال إيه؟ أنا ممكن أكتب لك الـ function ديت وطبعًا الصيغة دي مُـثـبت صحتها
بس إحنا بقى إيه زي ما اتفقنا إحنا مش بتوع mathematics يعني عشان نشوف إثبات صحتها هي إيه، إحنا just بـ نستخدمها خلاص هم بتوع الـ math أثبتوها وإحنا بـ نستخدمها. فـ Maclaurin قال أنا أقدر أي function عندك إن أنا أعمل لها expansion around الـ zero، يعني أكتبها على شكل polynomial، يعني بدل ما هي شكلها معقد هـ أحولها لـ شكل polynomial.
polynomial يعني إيه؟ يعني x² و x³ و x⁵ terms مجموعها زائد بعضها. وبالتالي الـ polynomial دي أسهل شكل function في الدنيا كلها، سهلة في التفاضل وسهلة في التكامل وسهلة في سهلة في كل حاجة. فـ هو الفكرة كلها إن أنت عندك function هـ تجيب لها Maclaurin expansion يعني هـ تحولها لـ polynomial.
اللي قدامنا دي، يعني لو عندي f(x) الأول هـ أعوض فيها بـ 0 وأجيب f(0)، + f'(0) × x + f''(0) / factorial 2 × x²، وهكذا لغاية fⁿ'، أنا طالما حاطة الـ n ما بين قوسين يبقى ما أقصُدش f^n، أقصُد n dashes، الـ derivative رقم n.
على factorial n في x^n + نقط up to infinity. عشان تجيب الـ exact representation للـ function f(x) لازم تقعد تجمع terms لغاية ما لا نهاية. فـ باختصار كده لو أنت أخذت 5 terms, 10 term, 100 term مش أكيد هـ ترمي؟ اللي هـ ترميه ده هو اللي اسمه truncation error.
أنا في الـ slide ديت بـ أشرح يعني إيه Maclaurin expansion وبعدين هـ ندي example على الـ truncation error. فـ على سبيل المثال لو أنا عندي f(x) = sin(x) وعايزة أجيب Maclaurin expansion بتاع sin(x). فأول term عايز f(0)، الـ f(x) بـ sin(x) يبقى f(0) بـ 0.
لما نيجي نفاضل تاني term عايز f'(0) وبعدين هـ أضربه في x. الـ f'(0) هـ تيجي إزاي؟ إن أنا أمسك الـ function الـ sin أفاضلها فهـ يدينا cos. أعوض فيها بـ 0، cos 0 بـ 1. الـ term اللي بعد كده عايز f''(0) على factorial 2 في x²، يبقى أنا محتاجة أجيب f''(0) يعني هـ أفاضل الـ cos فـ هـ يدينا minus.
صح؟ أعوض بـ 0 هـ يدينا 0. وهكذا بقى محتاجة الـ f''' والـ x⁴' وهكذا لغاية ما أنا هـ أكون عايزة أقف. وكل مرة بـ أجيب الـ F أعوض بـ 0. بس إحنا لو لاحظنا بالنسبة للـ sin هـ ألاقي مثلًا الـ هـ ألاقي وأنا بعد ما بـ أفاضل وأعوض بـ 0 فـ هـ يطلع لي شكل pattern ثابتة كده
إن دايما اللي أنا كاتباه بالـ أحمر دوت اللي هو التفاضل اللي هي الـ function نفسها. الـ function نفسها يعني التفاضل رقم 0 للـ function والتفاضل الثاني والتفاضل الرابع والتفاضل السادس بيديني 0، يعني التفاضل لما يكون الـ even اللي هو 0 و 2 و 4 و 6 بـ يديني الـ term ده 0.
أما الـ terms الـ odd اللي هو التفاضل الأول والتالت والخامس والسابع هـ ألاقي بـ يديني 1 minus 1, 1 minus 1 وهكذا. يبقى دي الـ pattern بتاعة الـ sin. يبقى لو رجعنا نعوض بالـ اللي إحنا جبناه دوت في الصيغة بتاعة Maclaurin، فـ اللي هي بقى f(0) + f'(0) × x، الصيغة اللي موجودة في
الـ terms اللي أنا عملاها بـ الـ أحمر دي هـ ألاقي إنها بتساوي 0 فـ دي مش هـ تبقى موجودة معانا. الـ اللي موجود معانا بقى اللي هو الـ f'(0) في x، فـ ده 1 في x بـ x. والـ f''/factorial 2 في x² فـ الـ f'' of 0 بـ sorry، أه الـ f'' of 0 دي برضه بـ 0، f''' of 0 ديت ب minus 1
على factorial 3 في x³. فهـ ألاقي شكل الـ sin x أو Maclaurin expansion بتاع الـ sin اللي هي الـ x power odd وهـ ألاقي term positive و term negative. يعني x على factorial 1 - x³/factorial 3 + x⁵/factorial 5 وهكذا. فـ أنت لو حبيت مثلًا ممكن تقف لغاية الـ term رقم التالت اللي هو x⁵/factorial 5 وترمي الباقي. اللي رميته ده
اللي رميته دوت يبقى هو ده الـ truncation error أو تقف لغاية x⁷/factorial 7 وترمي الباقي. اللي رميته ده اسمه truncation error أو نوع error يعني اسمه truncation error. خلاص؟ ده كده إزاي جبنا Maclaurin expansion لـ sin x.
في الـ slide ديت بالمثل لو أنت عايز تجيب Maclaurin لـ cosine هـ نمشي بنفس الطريقة في الـ slide اللي موجودة في الـ slide اللي فاتت، هـ تلاقي إن الـ cosine عكس الـ sin. إن الحاجات الـ even بس هي اللي موجودة اللي هي x^0 على factorial 0 اللي هو 1 الأولاني.
minus x²/factorial 2، x⁴/factorial 4، x⁶/factorial 6 واللي بعديه x⁸/factorial 8 وهكذا. وهـ تلاقي برضه term positive و term negative لأن الـ sin والـ cosine بـ يبدلوا إشارتهم. لما أفاضل يعني. الـ e^x بقى دي لذيذة جدًا، دي سهلة قوي، لأن أنا عندي الـ e^0 بـ 1.
لما أجي أفاضل الـ e^x هـ يطلع لي برضه e^x، إن شاء الله فاضلها 100 مرة، فـ كل مرة هـ أعوض الـ e^0 هـ يطلع لي 1، فـ كل الـ terms موجودة وكلها positive. الـ 1 والـ x والـ x²/factorial 2، ودايمًا الـ power اللي فوق هو نفس شكل الـ factorial اللي تحت. لغاية infinity. فهم دول الـ 3 functions، مش هـ نخرج عن لو أنت احتجت مش هـ نخرج عن الـ 3
Okay؟ عشان خاطر يعني أنا الـ slide اللي فاتت كان الهدف منها لما أجي أقول لك Maclaurin بتاعة sin x بـ كذا تبقى فاهم جت منين. لكن أنا مش هـ أطلب منك إنك تعمل حاجة جديدة، هما الـ 3 دول، حفظتهم، فهمتهم، تعمل اللي أنت عايزه. Example بقى على الـ truncation error. بـ يقول لو أنا عندي cos x for small x.
خلي بالكم إن في في functions الـ small x اللي عاملة فيها مشاكل، في functions الـ large x اللي عاملة فيها مشاكل، في function عاملة مشاكل مع الاثنين، في function مش عاملة مشاكل مع حد خالص. فـ الـ cos x لو الـ x small. x small يعني أقصد أقول مثلًا بـ خُمس، بـ عشر، بـ تمن. ما حدش يقول لي الـ 2 والـ 3 دي x small.
ف for small x لو أنا قلت إن الـ cos(x) اللي هي الـ formula اللي إحنا لسة قايلين عليها في الـ slide اللي فاتت وأنا جيت جبت حبيت أعوض عن x بـ نص واستخدمت لغاية x⁶/factorial 6 يعني طلع لي الأربعة terms اللي موجودين قدامنا، 1 - 0.125 + and so on أربعة terms.
يعني أنا أخدت لغاية x⁶/factorial 6 فـ طلع لي الناتج 0.877582. هل دي exact cos(½)؟ لا. أنا إمتى أحصل على exact cos(½)؟ لو أنا بـ استخدم Maclaurin expansion إن أنا أجمع أعوض لغاية ما لا نهاية. فـ دي approximated. كان عايز منك هنا الـ error بـ كام أو الـ truncation error بـ كام
إيه أول term أنا قطعته؟ x⁸/factorial 8 واللي بعديه x¹⁰/factorial 10 وهكذا. فهنا بـ يقول إن بما إن الـ x small يبقى أكبر term في الـ terms اللي اترمت هو أول term اللي هو x⁸/factorial 8. لأن إحنا عندنا لما الـ x تبقى صغيرة زي نص م
ثلًا فـ الـ 8^2 بكام؟ الـ نص أس 8 أكبر ولا الـ نص أس 10؟ أكيد الـ نص أس 8 أكبر. كل ما بـ ترفع الـ power كل ما الـ قيمة بـ تقل. فـ بالتالي أكبر أكبر term اترمي أول term، عشان كده بـ يعتبروا ممكن أعتبره إن هو ده الـ truncation error. يعني الـ فين قيمة الـ error اللي اترمي؟ x⁸/factorial 8 وأعوض بـ نص طلعت بـ 0.000001، يبقى هي دي قيمة الـ truncation error.
truncation error. طب فين بقية الـ terms؟ ما هي قيمتها صغيرة قصاد الـ term ده، فـ خلينا ناخد الـ leader بتاعهم أكبر حاجة اترمت وهو ده يبقى تقريبًا الـ truncation error. طيب، الـ example التاني دوت ده موجود عندكوا في المحاضرات، الـ example اللي فات ده مش موجود في المحاضرات اللي في الورق. الـ example ده موجود بـ يقول لو أنا عايز أكامل من 0 لـ نص e^x² dx.
e^x. وكان أنا خدت التكامل ده وكملته بـ طريقة متعبة جدًا ومرهقة وطويلة وحصلت على الـ exact solution اللي قدامنا ده، اللي فيه عدد معين من الـ significant digits لا بأس به يعني عدد محترم. طب بـ يقول لك بقى دلوقتي لو حضرتك استخدمت للـ e^x² Maclaurin expansion بتاعه
وهو قال لك خد بس لغاية x⁸/factorial 4. يعني لو إحنا شيلنا الـ e^x² وحطينا مكانها شيلنا الـ e^x² وحطينا مكانها الـ 1 + x² + x⁴/factorial 2. على فكرة الـ e^x² هي نفسها الـ e^x بس شال كل x وحط x². خلاص؟
فـ هو دلوقتي عايز يكامل الكام term دول من Maclaurin بدل ما يكامل الـ e^x² exactly ويطلع الـ exact solution، أنا هـ أكامل بس الكام term دول من Maclaurin. وأعوض من 0 لـ نص. فـ تكامل الـ polynomials سهل، تكامل الـ 1 بـ x، تكامل الـ x² بـ x³/3 وهكذا. وعوضنا بـ نص minus لما عوضنا بـ 0 فـ طلع الناتج اللي قدامنا اللي هو الـ 0.54498.
e^x. طالب إيه في السؤال فوق؟ بـ يقول determine the accuracy of the approximation obtained by replacing e^x² بالـ truncated Maclaurin ديت. يعني هو هدفه يعرف الـ accuracy قد إيه. إحنا عندنا عرفنا الـ accuracy في أول وتاني محاضرة هو مدى تقارب الحل اللي أنت جبته بالـ exact. فـ أنا عايزة أعرف مدى تقارب b hat بـ b.
فـ كنا بـ نعمل إيه؟ آدي عندي b hat و b. كنت الـ accuracy يعني عايز أحسب مدى تقاربهم يعني عايزة أعرف إيه أكبر عدد positive integer يحقق العلاقة إن b - b hat على b أقل من ½ × 10^-d، فـ أنا عايزة أحسب الـ d اللي هي أكبر عدد positive integer يحقق الـ علاقة
أنت عندك b و b hat، أما نطرح b - b hat ونقسمها على b هيطلع بـ القيمة ديت، أحط القيمة دي < ½ × 10^-d وأضرب الطرفين في 2 وآخد log الطرفين وأضرب في negative، هـ تطلع الـ d أقل من 5.8، يبقى فين أكبر عدد positive يحقق الـ علاقة دي؟ 5، وأنت فعلًا لما تبص على الـ b والـ b hat شبه بعض في أول 5 digits أو أول 5 significant digits اللي هما الـ أزرق دول.
okay؟ يبقى فعلًا الـ b hat agrees with the true answer b to five significant digits. كدا احنا خلصنا ال sources of error. بقالنا محاضرتين تقريبا بنشرح فيهم. النهاردة, دلوقتي هنكمل بقى ال propagation of error ده topic مهم اوي.
إن إحنا نعرفه ونتعامل معاه. Propagation of error يعني بـ يدرس انتشار الـ error في مشكلة معينة، أنت بـ تحل مشكلة، وكان بداية بدايتها في error. يعني إيه في error؟ هل error أنت اللي عامله؟ لا. error مثلًا كان بدايتها رقم زي 1/6.
1/6، الـ 1/6 الـ computer لما بـ يحوله لـ binary ويخزنه، الـ 1/6 بـ 0.1010101 إلى ما لا نهاية. فـ بالتالي لما بيجي يتخزن بـ يتخزن بـ error. فـ لو أنت ابتديت الـ عمليات الحسابية بتاعتك معتمدة على الـ قيمة اللي أنت دخلتها 1/6، هل الـ حل في النهاية هـ يطلع exact زي ما أنت متوقع إن هو يطلع
لا. هـ يحصل إيه؟ أنت عندك كل عملية بـ تعملها، أنت عملت عملية حسابية في الأول فيها error، لأي سبب من الأسباب، قد يكون بـ سبب الـ loss of significance، بـ سبب الـ truncation، بـ سبب الـ round-off error، في سبب ما حصل في أول عملية عملتها.
وأنت الـ عملية الثانية مترتبة على اللي هـ يطلع من الـ عملية الأولى، فـ اللي طلع من الـ process الأولى دخلتها على الـ process الثانية، هل الـ process الثانية بقى الـ error اللي فيها هـ يبقى نفس الـ error اللي موجود في الأولى؟ طيب، الـ process الثانية هـ تطلع ناتج، هـ تدخله على عملية ثالثة، الـ عملية الثالثة ديت برضه بـ تعمل processing على الناتج، هل الـ error اللي هـ يحصل فيها نفس اللي كان داخل؟ لا.
الـ error ده المفروض إنه هـ ينتشر في الـ حلول بتاعتك أو في الـ processes اللي أنت بـ تعملها. قد يكون في عندنا ثلاث احتمالات. احتمال إن الـ error يقل لغاية ما يؤول لـ صفر. احتمال إن الـ error يـ يقعد يكبر يكبر لغاية ما يثبت لـ قيمة معينة.
وفي الحالتين دول سواء قل لـ صفر أو قل لـ قيمة معينة أنا بـ اسمي الـ system انتشار الـ error دوت stable system. ممكن يقعد يزيد يزيد لغاية ما يوصل لـ infinity وده تبقى مشكلة كبيرة جدًا ومش لا يُنصح إطلاقًا إنك تستخدم الـ أسلوب دوت، فـ لازم تغيره لأن معنى كده الـ error كل ما بـ تزود الـ processes بتاعتك كل ما الـ error يزيد يزيد يزيد
يعني هـ تلاقي إن أنت بعد 10 20 process الـ ناتج بتاعك خيالي ما لوش علاقة بـ الـ exact. خلاص؟ ده دي فكرة الـ propagation of error، إحنا هـ ندرسه على case على حالة واحدة بس، انتشار الـ error في sequence. خلاص؟ هـ نشوف إزاي. في حالة بقى ال
Okay؟ هـ أفترض إن في عندي عددين b و q. الـ عدد b هو عبارة عن الجزء اللي اتخزن اسمه b hat + الـ error ده اللي اترمي. والـ q عبارة عن q hat + e q.
لو أنا بـ أجمع العددين B + Q، يعني هيبقى B hat + E B + Q hat + E Q. اجمع الـ B hat والـ Q hat ده اللي المفروض اللي فعلًا الناتج اللي طلع لي، ويبقى الـ error اللي حصل في حالة الجمع هو عبارة عن مجموع الـ 2 errors. فـ لو الـ الـ E B مثلًا 0.001 والـ E Q 0.0002
فـ ناتج الـ error اللي هـ ينتج بعد الجمع مجموع الـ 2 دول، خلاص؟ طيب، فـ حالة الـ فـ حالة الضرب. ايه اللي هيحصل؟ عندي بردو عددين B اللي هو B hat + EB و Q hat تساوي Q تساوي Q hat
plus E Q. لو بـ أضرب العددين يعني بـ أضرب الـ B hat + E B في الـ Q hat + E Q هـ يديني الـ 4 terms دول اللي هو B hat × Q hat و B hat × E Q وهكذا. طبعًا هنا أنا مش شايفة الـ E مفصولة عن الـ Q وملازقين في بعض، أنا عايزة أفصل الـ E hat عن الـ Q، فـ هـ أعمل إيه؟
هـ أحسب بدل ما بـ أتعامل مع الـ E hat هـ أتعامل مع الـ relative error. هو مش الـ relative error عبارة عن الـ حاجة الـ exact - الـ approximated على الـ exact؟ أنا هـ أجيب هنا الـ exact B Q والـ approximated B hat Q hat. هـ أطرح B Q - B hat Q hat على B Q ده اللي هو الـ relative error وأشوفه بـ يساوي كام.
خلاص? فهنا انا هود بس هود البي هات كيو هات الناحية التانية مع البي كيو. فتبقى بي كيو ناقص بي هات كيو هات على بي كيو تحت في المقر. هتسوي ايه بقى في اللي هو بي هات اي كيو. بلس كيو هات اي بي بلس اي بي اي كيو على بي كيو.
اللي هو لما نيجي نوزع البسط على المقام هـ يطلع الـ 3 terms اللي عندنا دول. فـ بس في تلات في ملحوظتين، أول ملحوظة أنا لما أجي أقسم B hat على B مش تقريبًا بـ 1؟ مش الـ B hat ده approximation للـ B؟ فـ تقريبًا بـ 1. والـ Q hat على Q برضه تقريبًا بـ 1، دي الملحوظة الأولى.
الـ الملحوظة الثانية لما أجي أضرب 2 errors في بعض، أضرب 2 errors في بعض. مثلًا الـ error الأولاني 10^-5 والـ error الثاني 10^-7. يبقى الـ error اللي هـ يطلع حاصل ضرب الاثنين 10^-12، معنى كده لما أجي أضرب 2 errors في بعض الـ ناتج يطلع رقم صغير جدًا جدًا جدًا.
يكاد تقريبًا ممكن أعتبره 0. عشان كده هنا الـ بنقول إن B hat على B تقريبًا بـ 1، Q hat على Q تقريبًا بـ 1 والـ وفي عندنا الـ E B على B الـ أزرق ده هـ نسميها الـ relative error بتاعة الـعدد
الـ B. والـ E Q على Q ده هـ نسميها الـ relative error بتاعة الـ عدد Q. اللي هما لما أجي أضربهم في بعض فهـ يديني تقريبًا = 0. يبقى لما أرجع أعوض بالـ حاجتين دول في الـ 3 terms اللي موجودين فوق في الـ علاقة، هـ ألاقي إيه؟ إن B Q - B hat Q hat على B Q هـ تساوي الـ B hat على B قلنا بـ 1 فـ هـ يدينا E B على B أو E Q على Q اللي هي الـ relative error بتاعة الـ
plus Q hat E B على B × Q. الـ B hat على Q hat على Q بـ 1 ويبقى الـ E B على B اللي هو الـ relative error بتاع الـ B. يبقى لما أجي أضرب عددين ده فيه error E B وده فيه error E Q هـ ألاقي ناتج الضرب موجود فيه error في النهاية اللي هو مجموع الـ relative errors بتاعة بتاعة العددين B و
ده كده في حالة الضرب، جمع عددين أو ضرب عددين. هنا بس عشان أوضح لك يعني إيه propagation of error، يعني أنت بـ تجمع عددين عشر + خمس، الـ عشر أخدت منه 6 decimal 6 digits ورميت الباقي، لأن الـ 10 الـ binary بـ عدد لا نهائي من الـ digits. والـ  خمس برضه عدد لا نهائي من الـ...
الـ digits. فـ لو خدت من ده 5 وخدت من ده 5 وجمعت عشر + خمس، الناتج هـ يبقى فيه error مجموع الـ errors اللي حصلت هنا والـ errors اللي حصلت هنا. خلاص؟ طب إحنا دلوقتي هـ ندرس بقى الـ error في حالة بـ يقول often an initial error will be propagated in recursive calculations.
يعني بالذات الحاجات اللي ممكن يحصل فيها أو بـ يبقى فيها موضوع الـ propagation of error واضح في حالة الـ recursive calculation. عارفين يعني إيه recursive calculation؟ يعني لما أكون بـ أكتب term بدلالة اللي قبله. فـ أنا لو أول term أنا عاملة فيه error.
يبقى تاني term هـ يبقى فيه error لأن بـ أكتبه بدلالة أول term. وتالت term بـ أكتبه بدلالة تاني term، وتاني term كان فيه error، يبقى تالت term فيه error وهكذا. الـ error اللي حصل في أول term ده مش هـ يبقى زي ما هو طول الـ طول الـ حكاية، لا، هو ممكن يقعد يكبر، ممكن يقعد يصغر، على حسب سلوكه عامل إزاي في الـ حاجة اللي أنا بـ أدرس فيها انتشار الـ
error. فهنا بـ يقول الـ initial error will be propagated in a recursive calculation. طب usually it is desirable for any numerical process that small errors in initial conditions cause either zero or bounded error in final results. يعني يفضل إن لو أنا بدأت بـ error في الـ initial condition في حاجة initial، يفضل إنه يا إما الـ error ده يقعد يصغر لغاية ما يتلاشى تمامًا، يا إما إنه يوصل لـ حاجة finite ويثبت عليها."
الـ zero. وساعتها بـ نسمي الـ algorithm اللي فيه الـ features ديت إنه stable. Otherwise، يعني لو الـ error قعد يكبر يكبر لغاية ما يؤول لـ ما لا نهاية، أقول على الـ system دوت unstable system. طيب، although one can easily find different methods to recursively evaluate the same quantity.
زي ما هـ نشوف دلوقتي إن ممكن نفس الحاجة، نفس الـ sequence أقدر أـ representها بأكتر من صيغة. طب بحيث إن عندي مثلًا 3 صيغ أو 3 formula بـ represent نفس الـ sequence، أختار مين فيهم؟ إيه معيار الأفضلية عندي؟
معيار الأفضلية هنا بـ حيث إن الـ 3 لو أنا شغالة على حاجة ما فيهاش errors فـ الـ 3 بـ generateوا نفس الـ sequence، يبقى معيار الأفضلية إن لو وُجد error الـ error دوت يؤدي إلى stable system. ما يبقاش unstable. خلاص؟ فـ ده الـ example اللي إحنا هـ نشرحه
دلوقتي. اللي هو الـ example دوت بـ يقول إن أنا عندي sequence، consider the sequence 1, 1/3, 1/9, 1/27, 1/81 وهكذا. الـ sequence دي هـ نسميها xn. يبقى نبتدي كده الـ sequence xn اللي هي الـ sequence الجميلة اللي ما فيهاش أي errorات خالص.
الـ sequence ديت بـ يقول المطلوب الأولاني فيها، المطلوب الأولاني فيها مش numerical، ده مطلوب math discrete math عادي خالص. بـ يقول لو أنت بـ تستخدم عقلك أو لو أنت بـ تستخدم computer infinite يعني ما فيهوش مش بـ يعمل أي errors خالص.
الـ sequence xn ديت أنا أقدر أعبر عنها بـ كذا صيغة، اللي هي الـ rn والـ bn والـ qn. يعني لو مسكنا مثلًا أول صيغة، أول صيغة بـ تقول إن الـ initial condition بـ 1 وإن الـ rn إن كل term تلت الـ term اللي قبله. فـ لو أول term واحد يبقى تاني term تلت ويبقى تالت term تلت في تلت بـ تسع ويبقى رابع term تسع في تلت بـ 1 على 27 وهكذا.
الـ... فـ بالتعويض كده بيني وبين بعض هـ ألاقي إن الـ sequence إن الـ recursive formula rn بـ generate الـ sequence اللي فوق. ولو عوضت برضه في الـ sequence أو في الصيغة bn بس bn عشان الـ term التالت بـ يتكتب بدلالة الأول والتاني. الـ term الرابع بـ يتكتب بدلالة التاني والتالت، فـ كل term بـ يتكتب بدلالة الاتنين اللي قبله.
عشان كده لازم يكون في 2 initial condition. b₀ بـ 1 و b₁ بـ 1/3 ومدينا الصيغة، فـ أنت لو حبيت تجيب الـ term التاني هـ تلاقيه وعوضت بـ 1 و 1/3 هـ يطلع بـ 1/9. لو حبيت تجيب الـ term التالت هيطلع 1/27. لو استخدمت نظام التعويض هيطلع الـ sequence اللي فوق. والـ qn نفس الـ موضوع.
بس هل موضوع التعويض دوت موضوع professional، موضوع صح إن أنا استخدمه عشان أثبت إن الـ recursive formula دي بـ generate الـ sequence اللي فوق؟ لا. لا ليه؟ لأن أنا ممكن أحيانًا في أنت هـ تعوض مثلًا أول 10 term، ساعات في sequences بـ تتفق في أول 20 30 term وتختلف بعد كده.
فـ حكاية التعويض مش كافية خالص عشان تثبت إن الـ recursive formula دي بـ ت generate الـ sequence اللي فوق. فـ هـ نعمل إيه؟ هـ نستخدم دلوقتي طريقة، لسه هـ أقول لك حكاية الـ example كله وبعدين نمشي خطوة خطوة. إحنا هـ نستخدم طريقة هـ تثبت فيها إن rn هي xn اللي هي 1/3 أس
و هنـثبت إن bn 1/3 أس n برضه، وهـ نثبت إن qn بـ generate الـ sequence 1/3 أس n. يعني معنى كده الـ 3 formula rn و bn و qn بـ generateوا نفس الـ sequence 1/3 أس n ومثبت مش بـ التعويض، مثبت. طب إيه المشكلة؟
المشكلة بقى جاية دلوقتي. طيب، خلي بالك إن الـ 1/3 لو أنت كتبته على الـ keyboard للـ computer ما بـ يتخزنش 1/3، الـ 1/3 الـ binary بتاعه عدد لا نهائي من الـ bits. فـ أكيد هـ ياخد جزء ويرمي الباقي. فـ لو جينا مثلًا في الـ sequence التانية بتاعة bn الـ initial condition b1 بـ 1/3.
الـ 1/3 هـ يتخزن 1/3 - حتة، اللي هـ تترمي. الـ حتة دي هـ نسميها θ. هو بقى هيقول لك ادرس θ اللي موجودة في b1 دي هـ تأثر إزاي على b2 وعلى b3 وعلى b4 وهل هـ تقعد تكبر ولا هـ تقعد تصغر ولا هـ تثبت ولا هـ يحصل لها إيه؟ ده الـ جزء التاني من الـ سؤال.
إن إحنا بقى لو نزلنا بالـ errors، لو إحنا قلنا إن في error في الـ initial conditions، هـ ندرس انتشاره في الـ sequence، يعني هـ ندرس الـ error شكله عامل إزاي ونجيب الـ limit لما n تؤول لـ infinity. نرجع للجزء الأولاني. الجزء الأولاني أنا عايزة دلوقتي الـ recursive formula دي كلها rn و bn و qn أحلها عشان
أكتبها بدلالة الـ n على طول، مش بدلالة الـ term مش كل term بدلالة اللي قبله، لا، كل term بدلالة مكانه. يعني rn 1/3 أس n. أنا لو عايزة الـ term رقم 10 أحط n بـ 10 يبقى 1/3 أس 10. عايزة الـ term رقم 1000 يبقى 1/3 أس 1000. فـ دي بـ نسميها صيغة direct عشان خاطر أجيب الـ sequence rn.
الصيغة اللي قدامنا دي بـ نسميها recursive formula. دي صيغة غير مباشرة. إن أنت عشان تجيب R10 لازم يكون عندك R9، وعشان تجيب R9 لازم يكون عندك R8، لغاية ما توصل لازم يكون فيها initial condition لازم أنا أكون مدياك الـ initial بإيه، زي الـ factorial كده. أنا مدياك إن factorial 1 بـ 1 وأنت ابني بقى هات factorial 7 و 8 وزي ما
أنت عايز. خلاص؟ نيجي بقى. بالمناسبة، اللي إحنا هـ نستخدمه الطريقة اللي هـ نستخدمها عشان نثبت Rn هي نفس اللي هـ نستخدمها عشان نثبت Bn، نفس اللي هـ نستخدمها عشان نثبت Qn. خلاص؟ إيه الطريقة دلوقتي؟ أنا عندي أهي الـ sequence ديت الـ recursive formula ديت، Rn بتساوي 1/3 Rn - 1.
عايزة أثبت عايزة أحلها. أحلها يعني عايزة أقول Rn شكلها إيه؟ 1/3^n ولا حاجة تانية؟ فـ طالما دي دي linear difference equation، فـ لازم الـ حل بتاعها يكون على شكل Rn = Z^n.
Okay؟ طب أمال إيه المشكلة لما إحنا عارفين شكل الـ حل؟ إحنا عارفين شكله بس مش عارفين الـ Z بـ كام، أنا عايزة أحسب الـ Z بـ كام. فـ هـ نعوض بما إن بـ أقول إن ده حل، هـ أعوض بيه في الـ equation اللي فوق، هـ أشيل كل Rn وأحط Z^n، وأشيل Rn - 1 وأحط Z^n - 1.
وعوض يبقى Z^n = 1/3 Z^n - 1. وأدخل الـ Z^n - 1 في الطرف بالـ minus وأساويها بـ 0 يبقى equation. وبعدين أطلع الـ Z^n - 1 common factor، لأن هو ده الـ power الصغير، فهـ يتبقى لي Z - 1/3 في قوس = 0. الـ معادلة دي عايزة أحلها فـ يا إما حل صفري يا إما الحل غير الصفري اللي هو Z بـ 1/3. أنا طبعًا هـ آخد الـ Z بـ 1/3.
يبقى معنى كده لما نرجع فوق يبقى الـ Rn هـ تساوي إيه؟ constant × Z^n اللي هي 1/3^n. طيب الـ constant ده بـ كام؟ عشان أجيب الـ constant هـ أعوض بالـ initial condition. لما n بـ 0 الـ R بـ 1، فهـ أشيل الـ n أحطها 0 وأشيل الـ R₀ وأحطها بـ 1، فـ يطلع الـ constant A بيساوي 1.
يبقى Rn نرجع نعوض فيها هـ تساوي إيه؟ 1 × 1/3^n يعني 1/3^n اللي هي بقى 1، 1/3، 1/9، 1/27 وهكذا. يبقى فعلًا الـ sequence Rn أو الـ recursive formula Rn بـ generate الـ sequence اللي هي Xn اللي كانت موجودة في الـ slide اللي فاتت. هنا ما استخدمناش التعويض.
هنا بقى لغاية الـ term رقم 1000 رقم مليون من غير ما تعوض ثقة إن هي Rn 1/3^n. نفس الـ موضوع بقى لو عملنا في الـ في الـ Bn، عايز أثبت إن الـ Bn برضه 1/3^n، هـ أعمل نفس الـ موضوع. بما إن دي linear بس دي second order مش first order.
طيب، يبقى الـ حل هيبقى على شكل إيه؟ Bn = Z^n. هـ أشيل كل Bn وأحط مكانها Z^n وهـ أشيل Bn - 1 وأحط Z^n - 1 وهـ أشيل Bn - 2 وأحط Z^n - 2. وأجيبهم كلهم في طرف وأساويهم بـ الـ 0. وبعدين هـ يطلع لي معادلة من الدرجة لما أطلع الـ Z^n - 2 common factor هـ يطلع لي second order equation اللي هي Z² - 4/3 Z + 1/3
= 0. هـ أحللها هعملها factorization فـ هـ يطلع عندي 2 roots اللي هو Z بـ 1/3 و Z بـ 1. يبقى الـ Bn هـ يساوي إيه؟ يبقى أنا عندي حلين، الـ حل اللي هو Z₁^n والـ حل الثاني Z₂^n. يبقى الـ Bn عبارة عن linear combination من الـ اثنين دول، يعني تـوليفة خطية ما بينهم. يعني constant في الـ حل الأولاني + constant في الـ حل التاني.
خلاص. مشكلتي دلوقتي احنا كده عرفنا الـ z، مشكلتي عايزة أحسب الـ a والـ b، فـ هـ أروح أعوض بـ عشان أجيب 2 constants محتاجة معادلتين أحلهم مع بعض. فـ أنا عندي 2 initial conditions لما n بـ 0 الـ b بـ 1 ولما n بـ 1 الـ b بـ 1/3. فـ هـ أعوض بالـ initial condition هنا، أول معادلة لما حطيت كل n بـ 0 وحطيت الـ b بـ 1 في الـ left hand side.
دي هطلعلي معادلة إن A + B بـ 1. ولما عوضت عن N بـ 1، الـ B بـ 1/3، يبقى شلت الـ B1 وحطيت 1/3 وشلت كل N وحطيت 1. طلع لي إن 1/3 A + B = 1. حلينا الـ معادلتين دول مع بعض simultaneously طلع A بـ 1 و الـ B بـ 0. يبقى لما نرجع نعوض تاني يبقى الـ Bn هـ يساوي 1 × 1/3^n + إيه؟ 0 × 1^n يبقى الـ Bn بـ 1/3^n.
بـ المثل بقى الـ Qn نفس الـ موضوع بالظبط. الـ Qn برضه عايز أثبت إن الـ Qn بـ ت generate نفس الـ sequence. هـ أحط الـ Qn بـ Z^n وهـ أشيل كل Qn وأحط Z^n و Qn - 1 Z^n - 1 و Qn - 2 Z^n - 2، وطلع Z^n - 2 common factor، وحلل الـ معادلة second order هيطلع لي 2 roo.
ts يبقى ال و Qn linear combination ما بين الـ حلين، أحسب الـ A والـ B من الـ initial conditions هـ تطلع الـ Qn برضه 1/3^n. يبقى أنا كده أثبت ما لا يدع مجال للشك إن الـ 3 recursive formula دول ولاد حلال مصفي والـ 3 بـ generateوا نفس الـ sequence، ده إمتى؟ لو أنا هـ أستخدم infinite precision arithmetic operation، يعني لو أنا استخدمت حاجة
بـ تاخد كل الـ digits، ما بـ تعدش وترمي. اللي هي مخنا مثلًا، مخنا ده هو الـ حاجة الوحيدة اللي infinite precision، اللي الـ memory بتاعته infinite واللي ممكن تستوعب الـ 1/3، 1/3 والـ 1/10، 1/10 والـ 1/7، 1/7 ما بـ تعملش errors، سبحان الله يعني. خلاص؟ طيب، نيجي بقى للـ شق التاني من السؤال اللي هو بقى الجزء الـ numerical
اللي هو بـ يديك الـ sequence ديت وبـ يقول لك بقى إيه؟ investigate the error propagation. شوف بقى ادرس الـ propagation of error لو الـ initial error زي ما موضح إن الـ R₀ ما بقاش 1 بقى بقى 1 minus حتة. هل الـ 1 فيه error؟ لا. هو هنا الـ error وأنا بـ أكتب الصيغة نفسها 1/3 Rn - 1، فـ الـ 1/3 دي فيها error في
في أول term، فـ مجازًا حط هو في الـ 1، ماشي؟ طيب، الـ B₀ بـ 1 دي ما فيهاش error، الـ B1 هي 1/3 هـ تتخزن 1/3 - θ والـ Q نفس الـ موضوع، عايز يدرس انتشار الـ error اللي هو الـ Epsilon والـ θ دي في الـ إيه؟ في الـ Rn والـ Bn والـ Qn. على أساس بحيث إن أنا عندي 3 recursive formula بـ generateوا نفس الـ sequence، أختار مين فيهم عشان أـ represent أخزنها للـ في الـ computer عشان أـ represent الـ sequence.
مين فيهم أحسن؟ هل اللي شكلها حلوة وصغيرة؟ ولا الـ... إيه؟ هل هـ آخدها بالـ شكل؟ ولا في معيار أقدر أختار عليه؟ الـ معيار المهم هنا إن طالما الـ 1/3 فيها error في الـ initial condition، لا يبقى لازم أدرس الـ error اللي أنا بدأت بيه في أول term ده، هـ يحصل له إيه في تاني term وتالت term و رابع term والـ term رقم n؟
لو لو الـ error ده هـ يقعد يكبر لغاية ما يؤول لـ ما لا نهاية، معنى كده إن أنت لو سألتني عن الـ term رقم 1000 هـ ألاقيه ما لوش علاقة بالـ term الحقيقي اللي هو الـ term الـ exact. خلاص؟ فـ إحنا يهمنا إن أنا أدرس الـ propagation of error وأختار اللي الـ system بتاعها stable والـ error بـ يؤول للـ 0 أو بـ يؤول لـ قيمة finite.
طيب، إحنا هنا برضه هـ نـ... المرة دي Rn هـ تبقى sequence فيها error. خلاص؟ عايزة أشوف شكلها هـ يطلع برضه 1/3^n ولا حاجة تانية. فهـ نعمل نفس الـ فكرة. هو أنا حتة الـ error دي أو الـ initial condition استخدمته فين في الـ في الـ إثبات اللي فات؟
وأنا بـ أجيب الـ constant A ولا الـ constant A و B صح؟ فـ بالتالي نفس الـ خطوات هي هي، هـ حط الـ Rn أحطها Z^n وبعدين والـ Rn - 1 حطها Z^n - 1 وأجيبهم في طرف وأساويهم بـ الـ 0، وأطلع الـ Z^n - 1 common factor، وأحل الـ معادلة تبقى Z بـ 1/3، يبقى الـ Rn هـ تساوي إيه؟ constant × 1/3^n بس، ده زي اللي فات بالظبط.
زي بالظبط. أنا خدته copy و paste. طبعًا دلوقتي عايزة أحسب الـ A، أعوض بالـ initial condition. هنا بقى الـ initial condition هناك كان 1، هنا 1 - حتة. هيطلع الـ constant A بـ 1 - Epsilon، لما أجي أعوض بيه في الـ علاقة تطلع الـ Rn هـ تساوي إيه؟ Rn هـ تساوي 1 - Epsilon على 1/3^n.
صح؟ هـ نضرب الـ 1/3^n × 1 - Epsilon × 1/3^n. ده شكل الـ sequence Rn اللي هي بقى هـ أسميها الـ sequence أم error. يعني الـ term رقم n ما بقاش 1/3^n بقى 1/3^n - حتة، الـ حتة دي epsilon / 3^n. طب الـ حتة دي كل ما n تكبر، هـ تكبر ولا هـ تصغر؟
هنشوف يبقى احنا محتاجين نحسب ايه هشوف ال error في الترم رقم n واجيب ال limit بتاعه لما n تcول لي ما لا نهاية ال error في ال term رقم n اللي هو ايه rn-xn. rn دي اللي هو ال term رقم n في ال sequence ام error, minus ال term رقم n في ال sequence اللي من غير error
error. خلاص؟ فـ نجيبه إزاي؟ أهي مش إحنا كنا وصلنا للـ شكل ده إن Rn 1/3^n - Epsilon / 3^n، ودي الـ Xn اللي هي الـ sequence اللي من غير error اللي هي اسمها 1/3^n، وديها مع الـ Rn الناحية التانية، يبقى Rn - 1/3^n هـ يساوي
minus epsilon / 3^n. يبقى الـ left hand side ده بقى الـ error في الـ term رقم n، اللي هو equal ناقص epsilon / 3^n، خد limit لما n تؤول لما لا نهاية، هـ يطلع 3^ ما لا نهاية بـ ما لا نهاية، epsilon / ما لا نهاية بـ 0. 0 ده معناه الـ system ده إيه؟ stable system. معنى كده الـ error اللي أنت بدأت بيه epsilon ده، هـ يقعد يصغر يصغر يصغر لغاية ما يتلاشى، ويبقى الـ system sta
ble طيب، هـ نعمل نفس الـ موضوع في الـ Bn. أهي، هنا الاختلاف الجزء اللي أنا عاملاه بالـ أحمر إن الـ initial condition بقى 1/3 minus حتة اللي اسمها θ. عايزة أشوف θ دي هـ تنتشر إزاي في الـ sequence لو أنا عبرت عنها بالـ recursive formula دي. فـ إحنا نفس اللي عملناه قبل كده، بشيل الـ Bn وأحط Z^n وأعوض بيها، وأحلل وأطلع شكل الـ Z طلع 2 roots، طلع الـ Bn شكلها كده. فده نفس اللي فات بالظبط
بس أنا عشان أحسب الـ A والـ B، عوضت بالـ initial condition اللي هو عند الـ n بـ 0 الـ B بـ 1، عند الـ n بـ 1 الـ B بـ 1/3 - θ. كان هناك بـ 1/3، هنا 1/3 - θ. فـ هـ أعوض بالاثنين initial conditions دول، هـ يطلع الـ A وهـ يطلع لي معادلتين أحلهم مع بعض وأطلع الـ A والـ B، هـ تطلع الـ A بـ 1 + 3/2 θ والـ B بـ -3/2 θ، تمام
أرجع أعوض يبقى الـ Bn هـ يساوي 1 + 3/2 θ × 1/3^n وأشيل الـ B وأحط -3/2 θ × 1^n. ده شكل الـ Bn، شكل الـ term رقم n في الـ sequence Bn، نتيجة إن أنا ابتديت بـ error θ. المفروض إن أنا عايزة أجيب إيه؟ عايزة أجيب limit الـ error لما n تؤول لـ ما لا نهاية.
الـ error اللي هو الـ فرق ما بين الـ term رقم n في الـ sequence اللي بـ error - الـ term رقم n في الـ sequence اللي من غير error. أطرح ده ناقص ده اللي هو ببساطة جدًا آدي الـ Bn بسطت شكلها، فـ طلع الـ term الأولاني فيها 1/3^n هـ أوديه مع الـ Bn الناحية التانية، يبقى Bn - 1/3
أهو. B n - 1/3^n يبقى ده كده الـ Bn الـ sequence اللي بـ error - 1/3^n الـ sequence اللي من غير error هـ يساوي اللي هـ يتبقى في الـ right hand side. ده كده آخد له الـ limit لما n تؤول لـ ما لا نهاية، فـ هيطلع طبعًا 1/3^n الـ limit بتاعها لما أعوض ما لا نهاية يبقى 1/ ما لا نهاية بـ 0 فـ يطلع لي -1
أضربه في -3/2 θ هيطلع 3/2 θ، اللي هو θا مهما ده error، فـ بالتالي دي قيمة constant. ده كده الـ الـ Bn، الـ Qn بقى هـ أسيبها لكوا أنتوا تعملوها، وطبعًا هنا في حالة إن طلع إن الـ error بـ يؤول لـ قيمة finite يبقى ده stable system.
الـ Qn هـ تعملوها أنتوا، وهي هـ تطلع unstable، هـ يطلع إن الـ limit الـ error بـ يؤول لـ infinity. فـ لو أنا دلوقتي بـ أقول لك اختار، اختار Rn ولا Bn ولا Qn عشان أسيف أعمل saving أو أـ represent الـ sequence اللي هي 1/3^n، هـ تقول لي مين؟
برافو، الـ Rn لأن الـ limit بتاعها هيؤول لـ 0. فـ ده example طبعًا الـ propagation of error موجود في حاجات كتير جدًا بس يعني زي ما تقولوا الـ حاجة الصارخة أوي اللي ممكن الـ موضوع الـ propagation of error يكون فعلًا مأثر فيها، إن يبقى في عندك sequence إن كل الـ terms معتمدة على اللي قبلها وإن أول term يكون فيه error، فـ بالتالي كل term هـ يتأثر بالـ اللي قبله اللي متأثر بالـ اللي قبله اللي كان فيه error و هك
وهكذا. فـ عشان كده إدينا الـ example ده. فلما نتكلم عن الـ propagation of error عندنا في حالة جمع عددين، في حالة ضرب عددين، في حالة الـ الـ هي الـ recursive formula دي. فـ ده يتذاكر كويس قوي لأن أنا ممكن أجيب لك مسألة أقول لك عندي الـ sequence زي 1 و 1/5 و 1/5² و 1/5³
لأن الـ 1/5 فيها error. وأديك 3 recursive formula أو أديك اتنين بس وأقول لك مين فيهم أفضل أـ represent بيهم الـ sequence ديت بـ اعتبار إن الـ initial error كذا. يعني ممكن ما أسألكش في الجزء الأولاني، أنت كده كده كل الـ جزء الأولاني إن أقول لك اتحقق الأول إن هما بـ generateوا الـ sequence، لا أنا هـ أقول لك أنا اتحققت لك
وهما فعلًا صدقني بـ generateوا الـ sequence. أنت بقى تشوف بقى ادرس الـ propagation of error. وأديك صيغتين، واحدة بـ تؤول لـ 0 وواحدة بـ تؤول لـ infinity، يبقى اللي بـ تؤول لـ 0 أحسن. واحدة بـ تؤول لـ 0 والثانية بـ تؤول لـ constant، يبقى اللي بـ تؤول لـ 0 أحسن. خلاص؟ فـ ده سؤال كده إن شاء الله في الـ mid-term الجزئية ديت في الـ final. فـ كده إحنا خلصنا chapter 1 كله الحمد لله بـ examples أكتر كمان من اللي كنت بـ أديها قبل كده.
وهـ تحلوا عليه في الـ section ف هتفهموا أكتر. أنا طبعًا سجلت المحاضرة مش ميعاد المحاضرة وطبعًا والدنيا واضحة، عشان خاطر بس أنا أنا المهم عندي إن الناس تفهم وأوصل لكوا المحاضرة بـ quality عالية جدًا. لأن أنا شايفة إن طبعًا نسبة الـ attendance بقت قليلة، قد يكون جزء منهم صغير قلقان من موضوع كورونا، والجزء الأكبر كسلان وقاعد في البيت. أنا لا يعنيني إطلاقًا الكسلان اللي قاعد في البيت.
خالص. لا يعنيني إطلاقًا الشخص اللي ما بـ يحبش يحضر المحاضرات وبـ يحب الدنيا تجي له جاهزة. أنت ممكن تكون بـ تسعى وتيجي الـ كلية وتحضر المحاضرة، ممكن تبقى قاعد في بيته وبـ تسعى وتسمع المحاضرة، فـ أنا مع اللي قاعد في البيت وبـ يسعى عشان يسمع المحاضرة أيًا كان المفروض يبقى موجود في الـ كلية الأسبوع ده ولا المفروض يبقى موجود في الـ
أنا طالما أنت بـ تسعى بأي شكل من الأشكال أنا معاك، فـ يهمني إن أنا أوصل لك الـ حاجة بـ جودة كويسة. فـ يا رب تبقى المحاضرة النهار ده الصوت فيها كويس وتمام ما يكونش في أي مشاكل، ويا رب ابتدي المحاضرة الجاية بتاعة يوم الاثنين بـ ناس ما عندهاش أي مشاكل يا رب يا رب يا رب.
ماشي، وأشوفكوا بقى المحاضرة الجاية إن شاء الله بإذن الله. مع السلامة.