مقالات

3.1: تحديد المشتق - الرياضيات


أهداف التعلم

  • التعرف على معنى مماس المنحنى عند نقطة ما.
  • احسب ميل خط المماس.
  • حدد المشتق على أنه حد حاصل الفرق.
  • احسب مشتق دالة معينة عند نقطة.
  • صف السرعة كمعدل تغيير.
  • اشرح الفرق بين السرعة المتوسطة والسرعة اللحظية.
  • تقدير المشتق من جدول القيم.

الآن وقد أصبح لدينا فهم مفاهيمي للنهاية والقدرة العملية على حساب الحدود ، فقد وضعنا الأساس لدراستنا لحساب التفاضل والتكامل ، وهو فرع الرياضيات الذي نحسب فيه المشتقات والتكاملات. يتفق معظم علماء الرياضيات والمؤرخين على أن حساب التفاضل والتكامل تم تطويره بشكل مستقل من قبل الإنجليزي إسحاق نيوتن (1643-1727) والألماني جوتفريد لايبنيز (1646-1716)، الذي تظهر صوره في الشكل ( PageIndex {1} ). عندما نعزو الفضل إلى نيوتن ولايبنيز في تطوير حساب التفاضل والتكامل ، فإننا نشير حقًا إلى حقيقة أن نيوتن ولايبنيز كانا أول من فهم العلاقة بين المشتق والتكامل. استفاد كلا الرياضيين من أعمال أسلافهم ، مثل بارو وفيرمات وكافالييري. يبدو أن العلاقة الأولية بين الرياضيين كانت ودية ؛ ومع ذلك ، في السنوات اللاحقة ، اندلع جدل مرير حول العمل الذي كان له الأولوية. على الرغم من أنه يبدو من المحتمل أن نيوتن قد توصل بالفعل إلى الأفكار الكامنة وراء حساب التفاضل والتكامل أولاً ، إلا أننا مدينون لـ Leibniz بالتدوين الذي نستخدمه بشكل شائع اليوم.

خطوط الظل

نبدأ دراستنا لحساب التفاضل والتكامل من خلال إعادة النظر في فكرة الخطوط القاطعة وخطوط المماس. تذكر أننا استخدمنا ميل الخط القاطع إلى وظيفة عند نقطة ((أ ، و (أ)) ) لتقدير معدل التغيير ، أو المعدل الذي يتغير فيه متغير واحد بالنسبة لمتغير آخر. يمكننا الحصول على منحدر القاطع باختيار قيمة x بالقرب من a ورسم خط عبر النقاط ((a، f (a)) ) و ((x، f (x)) ) ، مثل الموضح في الشكل ( PageIndex {2} ). يتم الحصول على ميل هذا الخط من خلال معادلة على شكل حاصل فرق:

[m_ {sec} = frac {f (x) −f (a)} {x − a} nonumber ]

يمكننا أيضًا حساب ميل الخط القاطع إلى دالة بقيمة a باستخدام هذه المعادلة واستبدال (x ) بـ (a + h ) ، حيث (h ) هي قيمة قريبة من a. يمكننا بعد ذلك حساب ميل الخط المار بالنقطتين ((a، f (a)) ) و ((a + h، f (a + h)) ). في هذه الحالة ، نجد أن الخط القاطع له ميل يُعطى من خلال حاصل الفرق التالي مع الزيادة (h ):

[m_ {sec} = frac {f (a + h) −f (a)} {a + h − a} = frac {f (a + h) −f (a)} {h} nonumber ]

التعريف: حاصل الفرق

لنفترض أن (f ) دالة محددة في فاصل (I ) يحتوي على (a ). إذا كان (x ≠ a ) في (I ) ، إذن

[Q = frac {f (x) −f (a)} {x − a} ]

هو حاصل الفرق.

أيضًا ، إذا تم اختيار (ح ≠ 0 ) بحيث يكون (أ + ح ) في (أنا ) ، إذن

[Q = frac {f (a + h) −f (a)} {h} ]

هو حاصل فرق مع زيادة (ح ).

يتم توضيح هذين التعبيرين لحساب ميل الخط القاطع في الشكل ( PageIndex {2} ). سنرى أن كل من هاتين الطريقتين لإيجاد ميل الخط القاطع لها قيمة. اعتمادًا على الإعداد ، يمكننا اختيار أحدهما أو الآخر. عادة ما يعتمد الاعتبار الأساسي في اختيارنا على سهولة الحساب.

في الشكل ( PageIndex {3a} ) نرى أنه مع اقتراب قيم (x ) (أ ) ، توفر منحدرات الخطوط القاطعة تقديرات أفضل لمعدل تغيير الوظيفة عند (أ). علاوة على ذلك ، تقترب الخطوط القاطعة نفسها من الخط المماس للدالة عند (أ ) ، والتي تمثل حد الأسطر القاطعة. وبالمثل ، يوضح الشكل ( PageIndex {3b} ) أنه مع اقتراب قيم (h ) من (0 ) ، تقترب الخطوط القاطعة أيضًا من خط الظل. ميل خط الظل عند (a ) هو معدل تغير الوظيفة عند (a ) ، كما هو موضح في الشكل ( PageIndex {3c} ).

في الشكل ( PageIndex {4} ) نعرض الرسم البياني لـ (f (x) = sqrt {x} ) وخط المماس الخاص به عند ((1،1) ) في سلسلة من الفواصل الزمنية الضيقة حول (س = 1 ). عندما تصبح الفواصل الزمنية أضيق ، يبدو أن الرسم البياني للوظيفة وخطها المماس يتطابقان ، مما يجعل القيم الموجودة على خط الظل تقريبًا جيدًا لقيم الوظيفة لاختيارات (س ) قريبة من (1 ) . في الواقع ، يبدو أن الرسم البياني لـ (f (x) ) نفسه كذلك خطي محليا في المنطقة المجاورة مباشرة لـ (س = 1 ).

رسميًا ، قد نحدد خط المماس للرسم البياني للدالة على النحو التالي.

التعريف: خط الظل

لنفترض أن (f (x) ) دالة محددة في فاصل زمني مفتوح يحتوي على (a ). الخط المماس لـ (f (x) ) عند (a ) هو الخط الذي يمر عبر النقطة ((a، f (a)) ) التي لها منحدر

[m_ {tan} = lim_ {x → a} frac {f (x) −f (a)} {x − a} label {tanline1} ]

بشرط وجود هذا الحد.

بالتساوي ، قد نحدد خط الظل إلى (f (x) ) عند (a ) ليكون الخط الذي يمر عبر النقطة ((a، f (a)) ) التي لها منحدر

[m_ {tan} = lim_ {h → 0} frac {f (a + h) −f (a)} {h} label {tanline2} ]

بشرط وجود هذا الحد.

مثلما استخدمنا تعبيرين مختلفين لتحديد ميل الخط القاطع ، فإننا نستخدم شكلين مختلفين لتحديد ميل خط المماس. في هذا النص نستخدم كلا الشكلين من التعريف. كما كان من قبل ، سيعتمد اختيار التعريف على الإعداد. الآن وقد حددنا رسميًا خطًا مماسًا لدالة عند نقطة ما ، يمكننا استخدام هذا التعريف لإيجاد معادلات خطوط الظل.

مثال ( PageIndex {1} ): البحث عن خط الظل

أوجد معادلة خط المماس للرسم البياني لـ (f (x) = x ^ 2 ) عند (x = 3. )

حل

أوجد أولًا ميل خط المماس. في هذا المثال ، استخدم المعادلة ref {tanline2}.

( displaystyle begin {align *} m_ {tan} & = lim_ {x → 3} frac {f (x) −f (3)} {x − 3} & & text {طبق التعريف. } [4 نقطة]
& = lim_ {x → 3} frac {x ^ 2−9} {x − 3} & & text {البديل} f (x) = x ^ 2 text {and} f (3) = 9 [4 نقطة]
& = lim_ {x → 3} frac {(x − 3) (x + 3)} {x − 3} = lim_ {x → 3} (x + 3) = 6 & & text {عامل ال البسط لتقييم الحد.} end {محاذاة *} )

بعد ذلك ، أوجد نقطة على خط الظل. نظرًا لأن الخط مماس للرسم البياني لـ (f (x) ) عند (x = 3 ) ، فإنه يمر عبر النقطة ((3، f (3)) ). لدينا (f (3) = 9 ) ، لذلك يمر خط الظل عبر النقطة ((3،9) ).

باستخدام معادلة ميل ونقطة للخط مع المنحدر (م = 6 ) والنقطة ((3،9) ) ، نحصل على السطر (y − 9 = 6 (x − 3) ) . التبسيط ، لدينا (y = 6x − 9 ). يظهر الرسم البياني لـ (f (x) = x ^ 2 ) وخط المماس الخاص به عند (3 ) في الشكل ( PageIndex {5} ).

مثال ( PageIndex {2} ): تمت إعادة النظر في منحدر خط الظل

استخدم المعادلة لإيجاد ميل الخط المماس للرسم البياني لـ (f (x) = x ^ 2 ) عند (x = 3 ).

حل

الخطوات تشبه إلى حد بعيد المثال ( PageIndex {2} ). راجع المعادلة المرجع {tanline2} للتعرف على التعريف.

( start {align *} m_ {tan} & = lim_ {h → 0} frac {f (3 + h) −f (3)} {h} & ​​& text {تطبيق التعريف.} [4 نقطة]
& = lim_ {h → 0} frac {(3 + h) ^ 2−9} {h} & ​​& text {Substitute} f (3 + h) = (3 + h) ^ 2 text {and } و (3) = 9 [4 نقطة]
& = lim_ {h → 0} frac {9 + 6h + h ^ 2−9} {h} & ​​& text {توسيع وتبسيط لتقييم الحد.} [4pt]
& = lim_ {h → 0} frac {h (6 + h)} {h} = lim_ {h → 0} (6 + h) = 6 end {align *} )

لقد حصلنا على نفس القيمة لمنحدر خط الظل باستخدام التعريف الآخر ، مما يدل على أن الصيغ يمكن تبادلها.

مثال ( PageIndex {3} ): إيجاد معادلة خط الظل

أوجد معادلة خط المماس للرسم البياني لـ (f (x) = 1 / x ) عند (x = 2 ).

حل

يمكننا استخدام المعادلة المرجع {tanline1} ، ولكن كما رأينا ، فإن النتائج هي نفسها إذا استخدمنا المعادلة المرجع {tanline2}.

( displaystyle begin {align *} m_ {tan} & = lim_ {x → 2} frac {f (x) −f (2)} {x − 2} & & text {طبق التعريف. } [4 نقطة]
& = lim_ {x → 2} frac { frac {1} {x} - frac {1} {2}} {x − 2} & & text {Substitute} f (x) = frac { 1} {x} text {and} f (2) = frac {1} {2} [4pt]
& = lim_ {x → 2} frac { frac {1} {x} - frac {1} {2}} {x − 2} ⋅ frac {2x} {2x} & & text {ضرب البسط والمقام بواسطة} 2x text {لتبسيط الكسور.} [4pt]
& = lim_ {x → 2} frac {(2 − x)} {(x − 2) (2x)} & & text {تبسيط.} [4pt]
& = lim_ {x → 2} frac {−1} {2x} & & text {تبسيط باستخدام} frac {2 − x} {x − 2} = - 1، text {for} x ≠ 2 . [4 نقطة]
& = - frac {1} {4} & & text {قم بتقييم الحد.} end {align *} )

نحن نعلم الآن أن ميل خط الظل هو (- frac {1} {4} ). لإيجاد معادلة خط المماس ، نحتاج أيضًا إلى نقطة على الخط المستقيم. نعلم أن (f (2) = frac {1} {2} ). نظرًا لأن خط المماس يمر بالنقطة ((2، frac {1} {2}) ) يمكننا استخدام معادلة ميل ونقطة لخط ما لإيجاد معادلة خط الظل. وبالتالي فإن خط المماس له المعادلة (y = - frac {1} {4} x + 1 ). تظهر الرسوم البيانية لـ (f (x) = frac {1} {x} ) و (y = - frac {1} {4} x + 1 ) في الشكل ( PageIndex {6} ).

تمرين ( PageIndex {1} )

أوجد ميل الخط المماس للرسم البياني لـ (f (x) = sqrt {x} ) عند (x = 4 ).

تلميح

استخدم إما المعادلة المرجع {tanline1} أو المعادلة المرجع {tanline2}. اضرب البسط والمقام في مرافق.

إجابه

( فارك {1} {4} )

مشتق دالة عند نقطة

إن نوع الحد الذي نحسبه من أجل إيجاد ميل الخط المماس لوظيفة ما عند نقطة ما يحدث في العديد من التطبيقات عبر العديد من التخصصات. وتشمل هذه التطبيقات السرعة والتسارع في الفيزياء ، ووظائف الربح الهامشي في الأعمال التجارية ، ومعدلات النمو في علم الأحياء. يحدث هذا الحد بشكل متكرر لدرجة أننا نعطي هذه القيمة اسمًا خاصًا: المشتق. تسمى عملية إيجاد المشتق التفاضل.

التعريف: مشتق

لنفترض أن (f (x) ) دالة محددة في فاصل زمني مفتوح يحتوي على (a ). ال المشتق من الوظيفة (f (x) ) في (a ) ، المشار إليها بواسطة (f ′ (a) ) ، يتم تعريفها بواسطة

[f ′ (a) = lim_ {x → a} frac {f (x) −f (a)} {x − a} label {der1} ]

بشرط وجود هذا الحد.

بدلاً من ذلك ، قد نحدد أيضًا مشتق (f (x) ) في (a ) كـ

[f ′ (a) = lim_ {h → 0} frac {f (a + h) −f (a)} {h}. التسمية {der2} ]

مثال ( PageIndex {4} ): تقدير مشتق

بالنسبة إلى (f (x) = x ^ 2 ) ، استخدم جدولًا لتقدير (f ′ (3) ) باستخدام المعادلة ref {der1}.

حل

أنشئ جدولًا باستخدام قيم (س ) أسفل (3 ) وأعلى بقليل (3 ).

(س ) ( dfrac {x ^ 2−9} {x − 3} )
2.95.9
2.995.99
2.9995.999
3.0016.001
6.016.01
3.16.1

بعد فحص الجدول ، نرى أن التقدير الجيد هو (f ′ (3) = 6 ).

تمرين ( PageIndex {2} )

بالنسبة إلى (f (x) = x ^ 2 ) ، استخدم جدولًا لتقدير (f ′ (3) ) باستخدام المعادلة ref {der1}.

تلميح

تقييم ( dfrac {(x + h) −x ^ 2} {h} ) عند (h = −0.1، ، - 0.01، ، - 0.001، ، 0.001، ، 0.01، ، 0.1 )

إجابه

6

مثال ( PageIndex {6} ): البحث عن مشتق

بالنسبة إلى (f (x) = 3x ^ 2−4x + 1 ) ، أوجد (f ′ (2) ) باستخدام المعادلة ref {der2}.

حل

عوّض بالدالة المعطاة والقيمة مباشرة في المعادلة.

( displaystyle begin {align *} f ′ (x) & = lim_ {x → 2} frac {f (x) −f (2)} {x − 2} & & text {تطبيق التعريف .} [4pt]
& = lim_ {x → 2} frac {(3x ^ 2−4x + 1) −5} {x − 2} & & text {البديل} f (x) = 3x ^ 2−4x + 1 text {و} f (2) = 5. [4pt]
& = lim_ {x → 2} frac {(x − 2) (3x + 2)} {x − 2} & & text {بسّط وعامل البسط.} [4pt]
& = lim_ {x → 2} (3x + 2) & & text {إلغاء العامل المشترك.} [4pt]
& = 8 & & text {قم بتقييم الحد} end {align *} )

مثال ( PageIndex {7} ): إعادة النظر في المشتق

بالنسبة إلى (f (x) = 3x ^ 2−4x + 1 ) ، أوجد (f ′ (2) ) باستخدام المعادلة ref {der2}.

حل

باستخدام هذه المعادلة ، يمكننا استبدال قيمتين للدالة في المعادلة ، ويجب أن نحصل على نفس القيمة كما في المثال ( PageIndex {6} ).

( displaystyle begin {align *} f ′ (2) & = lim_ {h → 0} frac {f (2 + h) −f (2)} {h} & ​​& & text {تطبيق التعريف .} [4pt]
& = lim_ {h → 0} frac {(3 (2 + h) ^ 2−4 (2 + h) +1) −5} {h} & ​​& text {البديل} f (2) = 5 text {and} f (2 + h) = 3 (2 + h) ^ 2−4 (2 + h) +1. [4pt]
& = lim_ {h → 0} frac {3 (4 + 4h + h ^ 2) -8-4h + 1-5} {h} & ​​& text {قم بتوسيع البسط.} [4pt]
& = lim_ {h → 0} frac {12 + 12h + 3h ^ 2-12-4h} {h} & ​​& text {وزع وابدأ في تبسيط البسط.} [4pt]
& = lim_ {h → 0} frac {3h ^ 2 + 8h} {h} & ​​& text {إنهاء تبسيط البسط.} [4pt]
& = lim_ {h → 0} frac {h (3h + 8)} {h} & ​​& text {عامل البسط.} [4pt]
& = lim_ {h → 0} (3h + 8) & & text {إلغاء العامل المشترك.} [4pt]
& = 8 & & text {قم بتقييم الحد} end {align *} )

النتائج هي نفسها سواء استخدمنا المعادلة المرجع {der1} أو المعادلة المرجع {der2}.

تمرين ( PageIndex {4} )

بالنسبة إلى (f (x) = x ^ 2 + 3x + 2 ) ، ابحث عن (f ′ (1) ).

تلميح

استخدم إما المعادلة المرجع {der1} أو المعادلة المرجع {der2} أو جرب كليهما.

إجابه

(و ′ (1) = 5 )

سرعات ومعدلات التغيير

الآن بعد أن أصبح بإمكاننا إيجاد قيمة مشتقة ، يمكننا استخدامها في تطبيقات السرعة. تذكر أنه إذا كان (s (t) ) هو موضع كائن يتحرك على طول محور إحداثيات ، فإن ملف متوسط ​​السرعة من الكائن خلال فترة زمنية ([a، t] ) إذا (t> a ) أو ([t، a] ) إذا تم إعطاء (t

[v_ {ave} = frac {s (t) −s (a)} {t − a}. التسمية {avgvel} ]

نظرًا لأن قيم (t ) تقترب (a ) ، فإن قيم (v_ {ave} ) تقترب من القيمة التي نسميها السرعة اللحظية في (أ ). أي ، السرعة اللحظية عند (أ ) ، يُشار إليها (v (أ) ) ، تُعطى بواسطة

[v (a) = s ′ (a) = lim_ {t → a} frac {s (t) −s (a)} {t − a}. ]

لفهم العلاقة بين السرعة المتوسطة والسرعة اللحظية بشكل أفضل ، انظر الشكل. في هذا الشكل ، ميل خط الظل (كما هو موضح باللون الأحمر) هو السرعة اللحظية للجسم في الوقت (t = a ) التي يتم تحديد موضعها في الوقت (t ) بواسطة الوظيفة (s (t) ) ). ميل الخط القاطع (كما هو موضح باللون الأخضر) هو متوسط ​​سرعة الجسم خلال الفترة الزمنية ([a ، t] ).

يمكننا استخدام المعادلة ref {der1} لحساب السرعة اللحظية ، أو يمكننا تقدير سرعة جسم متحرك باستخدام جدول القيم. يمكننا بعد ذلك تأكيد التقدير باستخدام المعادلة المرجع {avgvel}.

مثال ( PageIndex {8} ): تقدير السرعة

يتأرجح وزن الرصاص في الزنبرك لأعلى ولأسفل. يتم تحديد موضعه في الوقت (t ) بالنسبة إلى خط أفقي ثابت من خلال (s (t) = sin t ) (الشكل ( PageIndex {8} )). استخدم جدول القيم لتقدير (v (0) ). تحقق من التقدير باستخدام المعادلة المرجع {der1}.

حل

يمكننا تقدير السرعة اللحظية عند (t = 0 ) عن طريق حساب جدول متوسط ​​السرعات باستخدام قيم (t ) تقترب من (0 ) ، كما هو موضح في الجدول ( فهرس الصفحة {2} ).

الجدول ( PageIndex {2} ): متوسط ​​السرعات باستخدام قيم (t ) تقترب من الصفر
(ر ) ( frac { sin t− sin 0} {t − 0} = frac { sin t} {t} )
−0.10.998334166
−0.010.9999833333
−0.0010.999999833
0.0010.999999833
0.010.9999833333
0.10.998334166

من الجدول ، نرى أن متوسط ​​السرعة على مدار الفترة الزمنية ([- 0.1،0] ) هو (0.998334166 ) ، ومتوسط ​​السرعة خلال الفترة الزمنية ([- 0.01،0] ) هو ( 0.9999833333 ) وهكذا دواليك. باستخدام جدول القيم هذا ، يبدو أن التقدير الجيد هو (v (0) = 1 ).

باستخدام المعادلة المرجع {der1} ، يمكننا رؤية ذلك

[v (0) = s ′ (0) = lim_ {t → 0} frac { sin t− sin 0} {t − 0} = lim_ {t → 0} frac { sin t } {t} = 1. لا يوجد رقم]

وبالتالي ، في الواقع ، (v (0) = 1 ).

تمرين ( PageIndex {5} )

إسقاط صخرة من ارتفاع (64 ) قدمًا. يتم إعطاء ارتفاعه فوق الأرض في الوقت (t ) ثوانٍ لاحقًا بواسطة (s (t) = - 16t ^ 2 + 64 ، ؛ 0≤t≤2 ). أوجد سرعتها اللحظية (1 ) ثانية بعد إسقاطها باستخدام المعادلة ref {der1}.

تلميح

(v (t) = s ′ (t) ). اتبع الأمثلة السابقة للمشتق باستخدام المعادلة المرجع {der1}.

إجابه

−32 قدم / ثانية

كما رأينا في هذا القسم ، فإن ميل الخط المماس إلى الدالة والسرعة اللحظية هما مفهومان مرتبطان. يتم حساب كل منها عن طريق حساب مشتق ويقيس كل منهما معدل التغيير الفوري لوظيفة ما ، أو معدل تغير دالة في أي نقطة على طول الدالة.

التعريف: معدل التغيير اللحظي

ال معدل التغيير اللحظي للدالة (f (x) ) بقيمة (a ) هو مشتقها (f ′ (a) ).

مثال ( PageIndex {9} ): فتاحة الفصل: تقدير معدل تغيير السرعة

تعد Hennessey Venom GT واحدة من أسرع السيارات في العالم ، حيث تصل سرعتها القصوى إلى (270.49 ) ميل في الساعة. في الاختبارات ، انتقل من (0 ) إلى (60 ) ميل في الساعة في (3.05 ) ثانية ، من (0 ) إلى (100 ) ميل في الساعة (5.88 ) ثانية ، من (0 ) ) إلى (200 ) ميل في الساعة (14.51 ) ثانية ، ومن (0 ) إلى (229.9 ) ميل في الساعة (19.96 ) ثانية. استخدم هذه البيانات لاستخلاص استنتاج حول معدل تغير السرعة (أي معدله التسريع) لأنها تقترب من (229.9 ) ميل في الساعة. هل يبدو أن معدل تسارع السيارة يتزايد أم يتناقص أم ثابتًا؟

الحل: لاحظ أولاً أن (60 ) ميل في الساعة = (88 ) قدم / ثانية ، (100 ) ميل في الساعة ≈ (146.67 ) قدم / ثانية ، (200 ) ميل في الساعة ≈ (293.33 ) قدم / s و (229.9 ) ميل في الساعة ≈ (337.19 ) قدم / ثانية. يمكننا تلخيص المعلومات في جدول.

(v (t) ) بقيم مختلفة لـ (t )
(ر ) (ت) )
00
3.0588
5.88147.67
14.51293.33
19.96337.19

الآن احسب متوسط ​​تسارع السيارة بالأقدام في الثانية على فترات من النموذج ([t، 19.96] ) حيث (t ) يقترب من (19.96 ) ، كما هو موضح في الجدول التالي.

متوسط ​​التسارع
(ر ) ( dfrac {v (t) −v (19.96)} {t − 19.96} = dfrac {v (t) −337.19} {t − 19.96} )
0.016.89
3.0514.74
5.8813.46
14.518.05

يتناقص معدل تسارع السيارة مع اقتراب سرعتها من (229.9 ) ميل في الساعة ( (337.19 ) قدم / ثانية).

مثال ( PageIndex {10} ): معدل تغير درجة الحرارة

يضبط صاحب المنزل منظم الحرارة بحيث تبدأ درجة الحرارة في المنزل بالانخفاض من (70 درجة فهرنهايت ) عند (9 ) مساءً ، وتصل إلى (60 درجة ) أثناء الليل ، وترتفع مرة أخرى إلى (70 °) بحلول ​​(7 ) صباح اليوم التالي. افترض أن درجة الحرارة في المنزل مُعطاة بواسطة (T (t) = 0.4t ^ 2−4t + 70 ) لـ (0≤t≤10 ) ، حيث (t ) هو عدد الساعات الماضية (9 مساء أوجد معدل التغير اللحظي لدرجة الحرارة عند منتصف الليل.

حل

نظرًا لأن منتصف الليل هو (3 ) ساعات مضت (9 ) مساءً ، فنحن نريد حساب (T ′ (3) ). الرجوع إلى المعادلة المرجع {der1}.

( displaystyle begin {align *} T ′ (3) & = lim_ {t → 3} frac {T (t) −T (3)} {t − 3} & & text {تطبيق التعريف .} [4pt]
& = lim_ {t → 3} frac {0.4t ^ 2−4t + 70−61.6} {t − 3} & & text {Substitute} T (t) = 0.4t ^ 2−4t + 70 text {و} T (3) = 61.6. [4pt]
& = lim_ {t → 3} frac {0.4t ^ 2−4t + 8.4} {t − 3} & & text {Simplify.} [4pt]
& = lim_ {t → 3} frac {0.4 (t − 3) (t − 7)} {t − 3} [4pt]
& = lim_ {t → 3} 0.4 (t − 7) & & text {إلغاء.} [4pt]
& = - 1.6 & & text {تقييم الحد} end {align *} )

معدل التغير اللحظي لدرجة الحرارة عند منتصف الليل هو (- 1.6 درجة فهرنهايت ) في الساعة.

مثال ( PageIndex {11} ): معدل التغيير في الربح

يمكن لشركة الألعاب بيع (x ) أنظمة الألعاب الإلكترونية بسعر (p = −0.01x + 400 ) دولار لكل نظام ألعاب. تُعطى تكلفة تصنيع الأنظمة (x ) بواسطة (C (x) = 100x + 10،000 ) دولار. أوجد معدل التغير في الربح عند إنتاج (10،000 ) لعبة. هل يجب على شركة الألعاب زيادة الإنتاج أم تقليله؟

حل

الربح (P (x) ) المكتسب من خلال إنتاج (x ) أنظمة الألعاب هو (R (x) −C (x) ) ، حيث (R (x) ) هي الإيرادات التي تم الحصول عليها من بيع ألعاب (س ). نظرًا لأن الشركة يمكنها بيع (س ) الألعاب بسعر (ع = −0.01x + 400 ) لكل لعبة ،

(R (x) = xp = x (−0.01x + 400) = - 0.01x ^ 2 + 400x ).

بالتالي،

(P (x) = - 0.01x ^ 2 + 300x − 10،000 ).

لذلك ، فإن تقييم معدل التغير في الربح يعطي

( displaystyle begin {align *} الفوسفور ′ (10000) & = lim_ {x → 10000} frac {P (x) −P (10000)} {x − 10000} [4pt]
& = lim_ {x → 10000} frac {−0.01x ^ 2 + 300x − 10000−1990000} {x − 10000} [4pt]
& = lim_ {x → 10000} frac {−0.01x ^ 2 + 300x − 2000000} {x − 10000} [4pt]
& = 100 end {align *} ).

بما أن معدل تغير الربح (P (10،000)> 0 ) و (P (10،000)> 0 ) ، يجب على الشركة زيادة الإنتاج.

تمرين ( PageIndex {6} )

يقرر المقهى أن الربح اليومي على الكعكات التي يتم الحصول عليها عن طريق شحن دولارات لكل قطعة هو (P (s) = - 20s ^ 2 + 150s − 10 ). يتقاضى المقهى حاليًا (3.25 دولارًا ) لكل قطعة خبز. ابحث عن (P ′ (3.25) ) ، معدل تغير الربح عندما يكون السعر (3.25 دولارًا أمريكيًا) وحدد ما إذا كان يجب على المقهى التفكير في رفع أو خفض أسعاره على الكعكات أم لا.

تلميح

استخدم مثال ( PageIndex {11} ) كدليل.

إجابه

(P ′ (3.25) = 20> 0 ) ؛ رفع الأسعار

المفاهيم الرئيسية

  • يقيس ميل خط المماس للمنحنى معدل التغير اللحظي للمنحنى. يمكننا حسابه بإيجاد حد حاصل الفرق أو حاصل الفرق بالزيادة (ح ).
  • تم العثور على مشتق دالة (f (x) ) بقيمة (a ) باستخدام أي من تعريفات ميل خط الظل.
  • السرعة هي معدل تغيير الموقع. على هذا النحو ، فإن السرعة (v (t) ) في الوقت (t ) هي مشتق من الموضع (s (t) ) في الوقت (t ).
    يتم إعطاء متوسط ​​السرعة من خلال [v_ {ave} = dfrac {s (t) −s (a)} {t − a}. nonumber ] السرعة اللحظية تعطى من خلال [ displaystyle v (a) = s ′ (a) = lim_ {t → a} frac {s (t) −s (a)} {t − a}. لا يوجد رقم]
  • قد نقدر المشتق باستخدام جدول القيم.

المعادلات الرئيسية

  • حاصل الفرق

(Q = dfrac {f (x) −f (a)} {x − a} )

  • حاصل الفرق مع الزيادة h

(Q = dfrac {f (a + h) −f (a)} {a + h − a} = dfrac {f (a + h) −f (a)} {h} )

  • منحدر خط المماس

( displaystyle m_ {tan} = lim_ {x → a} frac {f (x) −f (a)} {x − a} )

( displaystyle m_ {tan} = lim_ {h → 0} frac {f (a + h) −f (a)} {h} )

  • مشتق من f (x) في a

(displaystyle f ′ (a) = lim_ {x → a} frac {f (x) −f (a)} {x − a})

(displaystyle f ′ (a) = lim_ {h → 0} frac {f (a + h) −f (a)} {h})

  • متوسط ​​السرعة

(v_ {ave} = dfrac {s (t) −s (a)} {t − a} )

  • السرعة اللحظية

(displaystyle v (a) = s ′ (a) = lim_ {t → a} frac {s (t) −s (a)} {t − a})

قائمة المصطلحات

المشتق
منحدر خط المماس إلى دالة عند نقطة ما ، محسوبًا بأخذ حد حاصل الفرق ، هو المشتق
حاصل الفرق

للدالة (f (x) ) في (a ) بواسطة

( dfrac {f (a + h) −f (a)} {h} ) أو ( dfrac {f (x) −f (a)} {x − a} )

التفاضل
عملية أخذ المشتق
معدل التغيير اللحظي
معدل تغيير الوظيفة في أي نقطة على طول الوظيفة (أ ) ، وتسمى أيضًا (و ′ (أ) ) ، أو مشتق الوظيفة في (أ )

مشعب قابل للتفاضل

في الرياضيات ، أ مشعب قابل للتفاضل (أيضا مشعب تفاضلي) هو نوع من المشعب مشابه محليًا بدرجة كافية لمساحة خطية للسماح للمرء بإجراء حساب التفاضل والتكامل. يمكن وصف أي متشعب بمجموعة من المخططات ، تُعرف أيضًا باسم الأطلس. يمكن للمرء بعد ذلك تطبيق أفكار من حساب التفاضل والتكامل أثناء العمل ضمن المخططات الفردية ، حيث يقع كل مخطط داخل مساحة خطية تنطبق عليها قواعد التفاضل والتكامل المعتادة. إذا كانت المخططات متوافقة بشكل مناسب (أي أن الانتقال من مخطط إلى آخر قابل للتفاضل) ، فإن الحسابات التي تتم في مخطط واحد تكون صالحة في أي مخطط تفاضل آخر.

من الناحية الرسمية ، أ مشعب قابل للتفاضل هو مشعب طوبولوجي بهيكل تفاضلي محدد عالميًا. يمكن إعطاء أي متشعب طوبولوجي بنية تفاضلية محليا باستخدام الأشكال المتماثلة في أطلسها والبنية التفاضلية القياسية في الفضاء الخطي. للحث على بنية تفاضلية عالمية على أنظمة الإحداثيات المحلية الناتجة عن التماثل ، يجب أن يكون تكوينها على تقاطعات الرسم البياني في الأطلس وظائف قابلة للتفاضل في الفضاء الخطي المقابل. بعبارة أخرى ، عندما تتداخل مجالات المخططات ، فإن الإحداثيات التي يحددها كل رسم بياني يجب أن تكون قابلة للتمييز فيما يتعلق بالإحداثيات المحددة بواسطة كل مخطط في الأطلس. تسمى الخرائط التي تربط الإحداثيات التي تحددها المخططات المختلفة ببعضها البعض خرائط الانتقال.

تعني التفاضل أشياء مختلفة في سياقات مختلفة بما في ذلك: التفاضل المستمر ، ك مرات قابلة للتفاضل ، وسلس ، وشامل الشكل. علاوة على ذلك ، فإن القدرة على إحداث مثل هذه البنية التفاضلية في مساحة مجردة تسمح للمرء بتوسيع تعريف التفاضل إلى المساحات بدون أنظمة إحداثيات عالمية. تسمح البنية التفاضلية للفرد بتحديد مساحة الظل القابلة للتفاضل عالميًا ، والوظائف القابلة للتفاضل ، وحقول التفاضل والمتجه القابلة للتفاضل. تعتبر الفتحات القابلة للتفاضل مهمة جدًا في الفيزياء. تشكل الأنواع الخاصة من المشعبات القابلة للتفاضل أساسًا للنظريات الفيزيائية مثل الميكانيكا الكلاسيكية ، والنسبية العامة ، ونظرية يانغ ميلز. من الممكن تطوير حساب التفاضل والتكامل للمشعبات القابلة للتفاضل. هذا يؤدي إلى آلات رياضية مثل حساب التفاضل والتكامل الخارجي. تُعرف دراسة التفاضل والتكامل على الفتحات القابلة للتفاضل بالهندسة التفاضلية.


ما هو المشتق؟

من خلال عملية تسمى التفاضل 1 يمكننا إيجاد دالة أخرى مرتبطة بـ $ f $. هذه الوظيفة الثانية تسمى مشتق من $ f $. في هذا المثال ، فإن المشتق هو:

1 الاشتقاق يعني إيجاد المشتق.

اثنان من الرموز للمشتق

المشتق يخبرنا عن معدلات التغيير

مثال 1

افترض أن $ D (t) $ دالة تقيس المسافة بيننا وبين المنزل (بالأميال) كدالة للوقت (بالساعات).

ثم $ D (2) = 5 $ يعني أنك على بعد 5 أميال من المنزل بعد انقضاء ساعتين ،

و $ D '(2) = 20 $ يخبرنا أنه بعد ساعتين قد انقضت.

لذا فإن $ D '(2) = 20 $ يخبرنا أنه بعد انقضاء ساعتين تكون سرعتنا 20 ميلًا في الساعة.

مثال 2

افترض أن $ C (x) $ هي التكلفة (بالدولار) لإنتاج $ x $ طن من المعكرونة.

ثم $ C (30) = 15 <،> 000 $ يخبرنا أن إنتاج 30 طنًا من المعكرونة سيكلف 15000 دولار ،

و $ C '(30) = 48 <،> 000 $ يخبرنا أنه عندما ننتج 30 طنًا من المعكرونة ، فإن التكاليف المرتبطة بها تزداد بمعدل 48000 دولار للطن.

المشتق يخبرنا عن منحدرات خطوط الظل

دعنا نلقي نظرة أخرى على تدوين Leibnitz للمشتقة. إذا كانت $ y = f (x) $ هي وظيفتنا ، فيمكن تمييز المشتق كـ

القيم المشتقة هي منحدرات الخطوط. على وجه التحديد ، هم منحدرات من الخطوط التي هي ظل للوظيفة. انظر المثال أدناه.

مثال 3

لنفترض أن لدينا دالة 2 حيث $ f (2) = 3 $ و $ f '(2) = 1 $. تخبرنا المعادلة الأولى أن النقطة $ (2،3) $ على الرسم البياني للدالة. تخبرنا المعادلة الثانية بميل خط المماس المار بهذه النقطة.

تمامًا كما يخبرنا المنحدر بالاتجاه الذي يسير فيه الخط ، تخبرنا القيمة المشتقة بالاتجاه الذي يسير فيه المنحنى عند نقطة معينة. في كل نقطة على الرسم البياني ، تكون القيمة المشتقة هي ميل خط المماس في تلك النقطة.

2 إذا كنت تتساءل ، فأنا أستخدم الدالة $ f (x) = 3 + (x-2) - (x-2) ^ 2 + frac 1 5 (x-2) ^ 3 $.

تعريف المشتق

لنفترض أن لدينا دالة ، $ f (x) $ ، ونريد إيجاد المشتق. كيف يمكننا فعل ذلك؟ أبسط طريقة هي استخدام تعريف المشتق:

الاختلافات في التعريف

هناك نوعان من الاختلافات الشائعة للتعريف أعلاه. إنها مكافئة رياضيًا لتلك المذكورة أعلاه.

في الدرس التالي ، سنتدرب على اشتقاق الدوال باستخدام تعريف المشتق.


3.1: تحديد المشتق - الرياضيات

كمثال على التفاضل الضمني ، قمنا بدراسة مكعب Tschirnhausen.

منذ كل قيمة x في الفترة س> -3 يستثني س = 0 يتوافق مع نوعين مختلفين ذ- القيم التكعيبية لا تحدد ذ ك وضيفة من x. تهدف الألوان الموجودة في الرسم إلى اقتراح طريقة واحدة يمكننا من خلالها تقسيم المكعب إلى جزأين ، يحدد كل منهما ذ ك وضيفة من x بطريقة أخرى. لكن طريقة قسمة المكعب هذه ليست الطريقة الوحيدة الممكنة لرسم هذا المكعب ، فقد أوعزت إلى جبر الكمبيوتر الخاص بي برسم الرسوم البيانية للوظيفتين الموضحتين هنا:

على عكس الوظيفتين في الصورة الأولى ، لا يمكن تمييز هاتين الوظيفتين عند 0 ولكن لهما تعبيرات بسيطة من حيث الوظائف المألوفة. ومع ذلك ، يتم تقسيم المكعب ، إذا ركزنا على جزء صغير بما فيه الكفاية من المنحنى ، باستثناء (-3،0) و (0،0) ، ذ يظهر كدالة تفاضلية لـ x. بهذا المعنى نقول أن معادلة التكعيب تحدد ذ "ضمنيًا" كدالة لـ x (مقابل تعريف "صريح" لـ ذ ك وضيفة من س ، بمعنى آخر.، ص = تعبيرا من حيث x فقط). افترض أننا نريد إيجاد المشتق dy / dx للوظيفة في إحدى هذه النقاط "الجيدة" العديدة. بالنسبة إلى هذا التكعيب ، نظرًا لأنه من الممكن التعبير عن الوظائف بشكل صريح (كما هو مكتوب على الرسم البياني) ، لا نحتاج إلى استخدام الاشتقاق الضمني. لكن بالنسبة للعديد من المنحنيات ، لا تتوفر حلول واضحة ، لذلك دعونا نجرب شيئًا آخر. منح ذلك ذ هي (محليًا) دالة لـ س ، كلا طرفي المعادلة المحددة ص 2 = س 3 + 3 س 2 هي وظائف س ، في الواقع ، نفس وظيفة x لأنهم متساوون. لذا فإن مشتقاتهم متساوية أيضًا. الآن ، على الرغم من أننا نتجنب التعبير الصريح عن ذ من ناحية س ، لا يزال بإمكاننا استخدام قاعدة السلسلة لكتابة تعبير للمشتق بالنسبة إلى x الجانب الأيسر من المعادلة ، والذي يجب أن يساوي مشتق الجانب الأيمن:

عند حساب مشتق الجانب الأيسر ، عندما تطلب قاعدة السلسلة أن نكتب مشتق من ذ بالنسبة إلى س ، يمكننا فقط الكتابة dy / dx، لأننا لا نعرف ذ صراحة كدالة x. ولكن لدينا الآن معادلة حيث الكمية التي أردناها ، dy / dx يظهر ، وفي الواقع من السهل حل المعادلة من أجله - على الرغم من أن المعادلة قد تكون معقدة بخلاف ذلك ، فهي خطية في dy / dx. حل ل dy / dx يعطي تعبيرا عن المشتق ، من حيث كليهما x و ص:

لا ينبغي أن يكون مفاجئًا أن هناك حاجة إلى كلا المتغيرين ، لأن النقطة الموجودة على المنحنى لا يتم تحديدها بشكل فريد بواسطة x وحده. على سبيل المثال ، الظل عند النقطتين مع x- التنسيق 1 على هذا المكعب له منحدرات مختلفة:

  • في (1,2), نحن لدينا dy / dx = (3 (1) 2 +6 (1)) / (2 (2)) = 9/4 ، و
  • في (1,-2), نحن لدينا dy / dx = (3 (1) 2 +6 (1)) / (2 (-2)) = -9/4.

انتقاء القيم ل ض يرقى فقط إلى تشريح هذا الرسم البياني بمستويات أفقية ، وتشكيل "خطوط" للسطح. الطائرة ض = 0 يعطي الآخرين مكعب المضارع ، ل ض = -3 ، -2 ، -1،1،2،3 ، ليس لها نقاط عبور (تسمى العقد ، كما في (0,0) في المكعب الأصلي) ، على الرغم من أن الرسم البياني غير متصل بالنسبة للبعض (عندما يكون مستوى التقطيع أعلى من الأصل ولكن ليس فوق "القبة" ذات النقطة العالية عند (-2,0,4)):

في أي نقطة على أي من هذه المنحنيات ، يمكننا استخدام الصيغة

لإيجاد ميل خط المماس. إنه يرقى إلى إيجاد ميل خط أفقي مماس للسطح عند نقطة ما - يتم حساب الميل في الأفقي س ص- الطائرة التي تقطع السطح عند تلك النقطة.


مثال

سؤال

احسب مشتق (g (x) = 2x-3 ) من المبادئ الأولى.

اكتب صيغة إيجاد المشتق باستخدام المبادئ الأولى

تحديد (ز (س + ح) )

عوّض في الصيغة وبسّط

اكتب الإجابة النهائية

الرموز

هناك عدد قليل من الرموز المختلفة المستخدمة للإشارة إلى المشتقات. من المهم جدًا أن تتعلم تحديد هذه الطرق المختلفة للدلالة على المشتق وأنك متسق في استخدامك لها عند الإجابة على الأسئلة.

إذا استخدمنا الترميز الشائع (y = f (x) ) ، حيث يكون المتغير التابع (y ) والمتغير المستقل (x ) ، فإن بعض الرموز البديلة للمشتق تكون كما يلي:

الرموز (D ) و ( cfrac) تسمى عوامل التشغيل التفاضلية لأنها تشير إلى عملية التفاضل.

( cfrac) يعني (ص ) متمايزة بالنسبة إلى (س ). وبالمثل ، ( cfrac) يعني (ع ) متمايزة بالنسبة إلى (س ).

مهم: ( cfrac) ليس كسرًا ولا يعني (dy div dx ).


أين غادرنا.

في الجزء 3 ، اكتشفنا أنه لزيادة الهامش إلى الحد الأقصى ، نحتاج إلى تقليل القاعدة.

هذا يعني أننا بحاجة إلى حل مشكلة التحسين التالية:

أول شيء يجب ملاحظته حول مشكلة التحسين هذه هو أنها موجودة القيود. يتم تعريفها بالسطر الذي يبدأ بـ "خاضع لـ". قد تعتقد أن هناك قيدًا واحدًا فقط ، لكن هناك قيودًا في الواقع. (هذا بسبب السطر الأخير "لأي".)

"حسنًا ، كيف يمكنني حلها؟ لقد كنت أنتظر هذا لمدة عام واحد."


3.1: تحديد المشتق - الرياضيات

تتكون الدوائر الكهربائية الخطية من المقاومات والمكثفات والمحاثات والجهد ومصادر التيار. دعونا نفكر هنا في شبكة بسيطة ذات منفذ واحد لمحث المقاوم (RL) يقودها مصدر حالي. عندما التيار أنا = أنا (ر) يتم تطبيقه على منفذ الإدخال ، الجهد V = V (ر) يتطور عبر محطات الميناء. خرج الجهد الخامس (ر) can be determined as a sum of the voltage drop across the resistor (which is R I(t) from the Ohm's law) and of the voltage drop across the inductor (which is L I'(t)، أين I'(t) denotes the derivative of I(t)). Suppose the input current I(t) can be measured (detected) at different times t = t k and it is generated by the following oscillatory and decaying signal (click to enlarge the image):

The output voltage V(t) = R I(t) + L I'(t) can be computed at the times t = t k only if the derivative I'(t k ) can be estimated numerically from the given data set (t k ,I k ). This is the problem of numerical differentiation.

Let us denote the current time instance as t = t 0 , when the current is I = I 0 . Then, the data values in the past are: (t -1 ,I -1 ), (t -2 ,I -2 ), and so on. The data values in the future are: (t 1 ,I 1 ), (t 2 ,I 2 ), and so on. Depending on whether we use data in the future or in the past or both, the numerical derivatives can be approximated by the forward, backward and central differences. The simplest way to approximate the numerical derivatives is to look at the slope of the secant line that passes through two points (linear interpolation).

Forward difference

Consider a linear interpolation between the current data value (t 0 ,I 0 ) and the future data value (t 1 ,I 1 ). The slope of the secant line between these two points approximates the derivative by the إلى الأمام (two-point) difference:

I'(t 0 ) = (I 1 -I 0 ) / (t 1 - t 0 )

Forward differences are useful in solving ordinary differential equations by single-step predictor-corrector methods (such as Euler and Runge-Kutta methods). For instance, the forward difference above predicts the value of I 1 from the derivative I'(t 0 ) and from the value I 0 . If the data values are equally spaced with the step size ح, the truncation error of the forward difference approximation has the order of O(h).

Backward difference

Consider a linear interpolation between the current data value (t 0 ,I 0 ) and the past data value (t -1 ,I -1 ). The slope of the secant line between these two points approximates the derivative by the backward (two-point) difference:

I'(t 0 ) = (I 0 -I -1 ) / (t 0 - t -1 )

Backward differences are useful for approximating the derivatives if data in the future are not yet available. Moreover, data in the future may depend on the derivatives approximated from the data in the past (such as in control problems). If the data values are equally spaced with the step size ح, the truncation error of the backward difference approximation has the order of O(h) (as bad as the forward difference approximation).

Central difference

Finally, consider a linear interpolation between the past data value (t -1 ,I -1 ) and the future data value (t 1 ,I 1 ). The slope of the secant line between these two points approximates the derivative by the central (three-point) difference:

I'(t 0 ) = (I 1 -I -1 ) / (t 1 - t -1 )

If the data values are equally spaced, the central difference is an average of the forward and backward differences. The truncation error of the central difference approximation is order of O(h 2 )، أين ح is the step size. It is clear that the central difference gives a much more accurate approximation of the derivative compared to the forward and backward differences. Central differences are useful in solving partial differential equations. If the data values are available both in the past and in the future, the numerical derivative should be approximated by the central difference.

Errors of the difference approximations for derivatives Presents graphs of numerical derivatives for the data values above


Basics of Expiration Dates

Expiration dates, and what they represent, vary based on the derivative being traded. The expiration date for listed stock options in the United States is normally the third Friday of the contract month or the month that the contract expires. On months that the Friday falls on a holiday, the expiration date is on the Thursday immediately before the third Friday. Once an options or futures contract passes its expiration date, the contract is invalid. The last day to trade equity options is the Friday prior to expiry.   Therefore, traders must decide what to do with their options by this last trading day.

Some options have an automatic exercise provision. These options are automatically exercised if they are in the money (ITM) at the time of expiry. If a trader doesn't want the option to be exercised, they must close out or roll the position by the last trading day.

Index options also expire on the third Friday of the month, and this is also the last trading day for American style index options. For European style index options, the last trading is typically the day before expiration.  


15.1 Overview

The ode package provides classes to solve Ordinary Differential Equations problems.

This package solves Initial Value Problems of the form y'=f(t,y) with t0 and y(t0)=y0 known. The provided integrators compute an estimate of y(t) from t=t0 to t=t1.

All integrators provide dense output. This means that besides computing the state vector at discrete times, they also provide a cheap means to get both the state and its derivative between the time steps. They do so through classes extending the StepInterpolator abstract class, which are made available to the user at the end of each step.

All integrators handle multiple discrete events detection based on switching functions. This means that the integrator can be driven by user specified discrete events (occurring when the sign of user-supplied switching function changes). The steps are shortened as needed to ensure the events occur at step boundaries (even if the integrator is a fixed-step integrator). When the events are triggered, integration can be stopped (this is called a G-stop facility), the state vector can be changed, or integration can simply go on. The latter case is useful to handle discontinuities in the differential equations gracefully and get accurate dense output even close to the discontinuity.

All integrators support setting a maximal number of evaluations of differential equations function. If this number is exceeded, an exception will be thrown during integration. This can be used to prevent infinite loops if for example error control or discrete events create a really large number of extremely small steps. By default, the maximal number of evaluation is set to Integer.MAX_VALUE (i.e. 2 31 -1 or 2147483647). It is recommended to set this maximal number to a value suited to the ODE problem, integration range, and step size or error control settings.

All integrators support expanding the main ODE with one or more secondary ODE to manage additional state that will be integrated together with the main state. This can be used for example to integrate variational equations and compute not only the main state but also its partial derivatives with respect to either the initial state or some parameters, these derivatives being handled be secondary ODE (see below for an example).

Two parallel APIs are available. The first is devoted to solve ode for which the integration free variable t and the state y(t) are primitive double and primitive double array respectively. Starting with version 3.6, a second API is devoted to solve ode for which the integration free variable t and the state y(t) are RealFieldElement and RealFieldElement array respectively. This allow for example users to integrate ode where the computation values are for example DerivativeStructure elements, hence automatically computing partial derivatives with respect to some equations parameters without a need to set up the variational equations. Another example is to use Dfp elements in order to solve ode with extended precision. As of 3.6, the API are slightly different, mainly in the way they handle arrays. Both API will become more similar in 4.0 and future versions as the older primitive double API will be modified to match the newer field API. This cannot be done in 3.6 for compatibility reasons.

The user should describe his problem in his own classes which should implement the FirstOrderDifferentialEquations interface (or FirstOrderFieldDifferentialEquations interface). Then they should pass it to the integrator they prefer among all the classes that implement the FirstOrderIntegrator interface (or the FirstOrderFieldIntegrator interface). The following example shows how to implement the simple two-dimensional problem using double primitives:

Computing the state y(16.0) starting from y(0.0) = (0.0, 1.0) and integrating the ODE is done as follows (using Dormand-Prince 8(5,3) integrator as an example):

15.2 Continuous Output

The solution of the integration problem is provided by two means. The first one is aimed towards simple use: the state vector at the end of the integration process is copied in the y array of the FirstOrderIntegrator.integrate method, as shown by previous example. The second one should be used when more in-depth information is needed throughout the integration process. The user can register an object implementing the StepHandler interface or a StepNormalizer object wrapping a user-specified object implementing the FixedStepHandler interface into the integrator before calling the FirstOrderIntegrator.integrate method. The user object will be called appropriately during the integration process, allowing the user to process intermediate results. The default step handler does nothing. Considering again the previous example, we want to print the trajectory of the point to check it really is a circle arc. We simply add the following before the call to integrator.integrate:

ContinuousOutputModel is a special-purpose step handler that is able to store all steps and to provide transparent access to any intermediate result once the integration is over. An important feature of this class is that it implements the Serializable interface. This means that a complete continuous model of the integrated function throughout the integration range can be serialized and reused later (if stored into a persistent medium like a file system or a database) or elsewhere (if sent to another application). Only the result of the integration is stored, there is no reference to the integrated problem by itself.

Other default implementations of the StepHandler interface are available for general needs (DummyStepHandler, StepNormalizer) and custom implementations can be developed for specific needs. As an example, if an application is to be completely driven by the integration process, then most of the application code will be run inside a step handler specific to this application.

Some integrators (the simple ones) use fixed steps that are set at creation time. The more efficient integrators use variable steps that are handled internally in order to control the integration error of the main state with respect to a specified accuracy (these integrators extend the AdaptiveStepsizeIntegrator abstract class). The secondary equations are explicitly ignored for step size control, in order to get reproducible results regardless of the secondary equations being integrated or not. The step handler which is called after each successful step shows up the variable stepsize. The StepNormalizer class can be used to convert the variable stepsize into a fixed stepsize that can be handled by classes implementing the FixedStepHandler interface. Adaptive stepsize integrators can automatically compute the initial stepsize by themselves, however the user can specify it if they prefer to retain full control over the integration or if the automatic guess is wrong.

15.3 Discrete Events Handling

ODE problems are continuous ones. However, sometimes discrete events must be taken into account. The most frequent case is the stop condition of the integrator is not defined by the time t but by a target condition on state y (say y[0] = 1.0 for example).

Discrete events detection is based on switching functions. The user provides a simple g(t, y) function depending on the current time and state. The integrator will monitor the value of the function throughout integration range and will trigger the event when its sign changes. The magnitude of the value is almost irrelevant. For the sake of root finding, it should however be continuous (but not necessarily smooth) at least in the roots vicinity. The steps are shortened as needed to ensure the events occur at step boundaries (even if the integrator is a fixed-step integrator).

When an event is triggered, the event time, current state and an indicator whether the switching function was increasing or decreasing at event time are provided to the user. Several different options are available to him:

  • integration can be stopped (this is called a G-stop facility),
  • the state vector or the derivatives can be changed,
  • or integration can simply go on.

The first case, G-stop, is the most common one. A typical use case is when an ODE must be solved up to some target state is reached, with a known value of the state but an unknown occurrence time. As an example, if we want to monitor a chemical reaction up to some predefined concentration for the first substance, we can use the following switching function setting:

The second case, change state vector or derivatives is encountered when dealing with discontinuous dynamical models. A typical case would be the motion of a spacecraft when thrusters are fired for orbital maneuvers. The acceleration is smooth as long as no maneuvers are performed, depending only on gravity, drag, third body attraction, radiation pressure. Firing a thruster introduces a discontinuity that must be handled appropriately by the integrator. In such a case, we would use a switching function setting similar to this:

The third case is useful mainly for monitoring purposes, a simple example is:

15.4 Available Integrators

The tables below show the various integrators available for non-stiff problems. Note that the implementations of Adams-Bashforth and Adams-Moulton are adaptive stepsize, not fixed stepsize as is usual for these multi-step integrators. This is due to the fact the implementation relies on the Nordsieck vector representation of the state.

Fixed Step Integrators
Name ترتيب
Euler 1
Midpoint 2
Classical Runge-Kutta 4
Gill 4
3/8 4
Luther 6

Adaptive Stepsize Integrators
Name Integration Order Error Estimation Order
Higham and Hall 5 4
Dormand-Prince 5(4) 5 4
Dormand-Prince 8(5,3) 8 5 and 3
Gragg-Bulirsch-Stoer variable (up to 18 by default) variable
Adams-Bashforth variable variable
Adams-Moulton variable variable

15.5 Derivatives

If in addition to state y(t) the user needs to compute the sensitivity of the final state with respect to the initial state (dy/dy0) or the sensitivity of the final state with respect to some parameters of the ODE (dy/dpك), they need to register the variational equations as a set of secondary equations appended to the main state before the integration starts. Then the integration will propagate the compound state composed of both the main state and its partial derivatives. At the end of the integration, the Jacobian matrices are extracted from the integrated secondary state. The JacobianMatrices class can do most of this as long as the local derivatives are provided to it. It will set up the variational equations, register them as secondary equations into the ODE, and it will set up the initial values and retrieve the intermediate and final values as Jacobian matrices.

If for example the original state dimension is 6 and there are 3 parameters, the compound state will be a 60 elements array. The first 6 elements will be the original state, the next 36 elements will represent the 6x6 Jacobian matrix of the final state with respect to the initial state, and the remaining 18 elements will represent the 6x3 Jacobian matrix of the final state with respect to the 3 parameters. The JacobianMatrices class does the mapping between the 60 elements compound state and the Jacobian matrices and sets up the correcsponding secondary equations.

As the variational equations are considered to be secondary equations here, variable step integrators ignore them for step size control: they rely only on the main state. This feature is a design choice. The rationale is to get exactly the same steps, regardless of the Jacobians being computed or not, hence ensuring reproducible results in both cases.

What remains of user responsibility is to provide the local Jacobians df(t, y, p)/dy and df(t, y, p)/dpك corresponding the the main ODE y'=f(t, y, p). The main ODE is as usual provided by the user as a class implementing the FirstOrderDifferentialEquations interface or a sub-interface.

If the ODE is simple enough that the user can implement df(t, y, p)/dy directly, then instead of providing an implementation of the FirstOrderDifferentialEquations interface only, the user should rather provide an implementation of the MainStateJacobianProvider interface, which extends the previous interface by adding a method to compute df(t, y, p)/dy. The user class is used as a constructor parameter of the JacobianMatrices class. If the ODE is too complex or the user simply does not bother implementing df(t, y, p)/dy directly, then the ODE can still be implemented using the simple FirstOrderDifferentialEquations interface and given as such to another constructor of the JacobianMatrices class, but in this case an array hy must also be provided that will contain the step size to use form each component of the main state vector y, and the Jacobian f(t, y, p)/dy will be computed internally using finite differences. This will of course trigger more evaluations of the ODE at each step and will suffer from finite differences errors, but it is much simpler to implement from a user point of view.

The parameters are identified by a name (a simple user defined string), which are also specified at JacobianMatrices class construction. If the ODE is simple enough that the user can implement df(t, y, p)/dpك directly for some of the parameters pك, then they can provide one or more classes implementing the ParameterJacobianProvider interface by calling the JacobianMatrices.addParameterJacobianProvide method. The parameters are handled one at a time, but all the calls to ParameterJacobianProvider.computeParameterJacobian will be grouped in one sequence after the call to MainStateJacobianProvider.computeMainStateJacobian This feature can be used when all the derivatives share a lot of costly computation. In this case, the user is advised to compute all the needed derivatives at once during the call to computeMainStateJacobian, including the partial derivatives with respect to the parameters and to store the derivatives temporary. Then when the next calls to computeParameterJacobian will be triggerred, it will be sufficient to return the already computed derivatives. With this architecture, many computation can be saved. This of course implies that the classes implementing both interfaces know each other (they can even be the same class if desired, but it is not required). If the ODE is too complex or the user simply does not bother implementing df(t, y, p)/dpك directly for some k, then the JacobianMatrices.setParameterStep method should be called so finite differences are used to compute the derivatives for this parameter. It is possible to have some parameters for which derivatives are provided by a direct implementation while other parameters are computed using finite differences during the same integration.

The following example corresponds to a simple case where all derivatives can be computed analytically. The state is a 2D point travelling along a circle. There are three parameters : the two coordinates of the center and the angular velocity.

This ODE is integrated as follows:

Copyright © 2003-2021 The Apache Software Foundation. All Rights Reserved.


15.1 Overview

The ode package provides classes to solve Ordinary Differential Equations problems.

This package solves Initial Value Problems of the form y'=f(t,y) with t0 and y(t0)=y0 known. The provided integrators compute an estimate of y(t) from t=t0 to t=t1.

All integrators provide dense output. This means that besides computing the state vector at discrete times, they also provide a cheap means to get both the state and its derivative between the time steps. They do so through classes extending the StepInterpolator abstract class, which are made available to the user at the end of each step.

All integrators handle multiple discrete events detection based on switching functions. This means that the integrator can be driven by user specified discrete events (occurring when the sign of user-supplied switching function changes). The steps are shortened as needed to ensure the events occur at step boundaries (even if the integrator is a fixed-step integrator). When the events are triggered, integration can be stopped (this is called a G-stop facility), the state vector can be changed, or integration can simply go on. The latter case is useful to handle discontinuities in the differential equations gracefully and get accurate dense output even close to the discontinuity.

All integrators support setting a maximal number of evaluations of differential equations function. If this number is exceeded, an exception will be thrown during integration. This can be used to prevent infinite loops if for example error control or discrete events create a really large number of extremely small steps. By default, the maximal number of evaluation is set to Integer.MAX_VALUE (i.e. 2 31 -1 or 2147483647). It is recommended to set this maximal number to a value suited to the ODE problem, integration range, and step size or error control settings.

All integrators support expanding the main ODE with one or more secondary ODE to manage additional state that will be integrated together with the main state. This can be used for example to integrate variational equations and compute not only the main state but also its partial derivatives with respect to either the initial state or some parameters, these derivatives being handled be secondary ODE (see below for an example).

Two parallel APIs are available. The first is devoted to solve ode for which the integration free variable t and the state y(t) are primitive double and primitive double array respectively. Starting with version 3.6, a second API is devoted to solve ode for which the integration free variable t and the state y(t) are RealFieldElement and RealFieldElement array respectively. This allow for example users to integrate ode where the computation values are for example DerivativeStructure elements, hence automatically computing partial derivatives with respect to some equations parameters without a need to set up the variational equations. Another example is to use Dfp elements in order to solve ode with extended precision. As of 3.6, the API are slightly different, mainly in the way they handle arrays. Both API will become more similar in 4.0 and future versions as the older primitive double API will be modified to match the newer field API. This cannot be done in 3.6 for compatibility reasons.

The user should describe his problem in his own classes which should implement the FirstOrderDifferentialEquations interface (or FirstOrderFieldDifferentialEquations interface). Then they should pass it to the integrator they prefer among all the classes that implement the FirstOrderIntegrator interface (or the FirstOrderFieldIntegrator interface). The following example shows how to implement the simple two-dimensional problem using double primitives:

Computing the state y(16.0) starting from y(0.0) = (0.0, 1.0) and integrating the ODE is done as follows (using Dormand-Prince 8(5,3) integrator as an example):

15.2 Continuous Output

The solution of the integration problem is provided by two means. The first one is aimed towards simple use: the state vector at the end of the integration process is copied in the y array of the FirstOrderIntegrator.integrate method, as shown by previous example. The second one should be used when more in-depth information is needed throughout the integration process. The user can register an object implementing the StepHandler interface or a StepNormalizer object wrapping a user-specified object implementing the FixedStepHandler interface into the integrator before calling the FirstOrderIntegrator.integrate method. The user object will be called appropriately during the integration process, allowing the user to process intermediate results. The default step handler does nothing. Considering again the previous example, we want to print the trajectory of the point to check it really is a circle arc. We simply add the following before the call to integrator.integrate:

ContinuousOutputModel is a special-purpose step handler that is able to store all steps and to provide transparent access to any intermediate result once the integration is over. An important feature of this class is that it implements the Serializable interface. This means that a complete continuous model of the integrated function throughout the integration range can be serialized and reused later (if stored into a persistent medium like a file system or a database) or elsewhere (if sent to another application). Only the result of the integration is stored, there is no reference to the integrated problem by itself.

Other default implementations of the StepHandler interface are available for general needs (DummyStepHandler, StepNormalizer) and custom implementations can be developed for specific needs. As an example, if an application is to be completely driven by the integration process, then most of the application code will be run inside a step handler specific to this application.

Some integrators (the simple ones) use fixed steps that are set at creation time. The more efficient integrators use variable steps that are handled internally in order to control the integration error of the main state with respect to a specified accuracy (these integrators extend the AdaptiveStepsizeIntegrator abstract class). The secondary equations are explicitly ignored for step size control, in order to get reproducible results regardless of the secondary equations being integrated or not. The step handler which is called after each successful step shows up the variable stepsize. The StepNormalizer class can be used to convert the variable stepsize into a fixed stepsize that can be handled by classes implementing the FixedStepHandler interface. Adaptive stepsize integrators can automatically compute the initial stepsize by themselves, however the user can specify it if they prefer to retain full control over the integration or if the automatic guess is wrong.

15.3 Discrete Events Handling

ODE problems are continuous ones. However, sometimes discrete events must be taken into account. The most frequent case is the stop condition of the integrator is not defined by the time t but by a target condition on state y (say y[0] = 1.0 for example).

Discrete events detection is based on switching functions. The user provides a simple g(t, y) function depending on the current time and state. The integrator will monitor the value of the function throughout integration range and will trigger the event when its sign changes. The magnitude of the value is almost irrelevant. For the sake of root finding, it should however be continuous (but not necessarily smooth) at least in the roots vicinity. The steps are shortened as needed to ensure the events occur at step boundaries (even if the integrator is a fixed-step integrator).

When an event is triggered, the event time, current state and an indicator whether the switching function was increasing or decreasing at event time are provided to the user. Several different options are available to him:

  • integration can be stopped (this is called a G-stop facility),
  • the state vector or the derivatives can be changed,
  • or integration can simply go on.

The first case, G-stop, is the most common one. A typical use case is when an ODE must be solved up to some target state is reached, with a known value of the state but an unknown occurrence time. As an example, if we want to monitor a chemical reaction up to some predefined concentration for the first substance, we can use the following switching function setting:

The second case, change state vector or derivatives is encountered when dealing with discontinuous dynamical models. A typical case would be the motion of a spacecraft when thrusters are fired for orbital maneuvers. The acceleration is smooth as long as no maneuvers are performed, depending only on gravity, drag, third body attraction, radiation pressure. Firing a thruster introduces a discontinuity that must be handled appropriately by the integrator. In such a case, we would use a switching function setting similar to this:

The third case is useful mainly for monitoring purposes, a simple example is:

15.4 Available Integrators

The tables below show the various integrators available for non-stiff problems. Note that the implementations of Adams-Bashforth and Adams-Moulton are adaptive stepsize, not fixed stepsize as is usual for these multi-step integrators. This is due to the fact the implementation relies on the Nordsieck vector representation of the state.

Fixed Step Integrators
Name ترتيب
Euler 1
Midpoint 2
Classical Runge-Kutta 4
Gill 4
3/8 4
Luther 6

Adaptive Stepsize Integrators
Name Integration Order Error Estimation Order
Higham and Hall 5 4
Dormand-Prince 5(4) 5 4
Dormand-Prince 8(5,3) 8 5 and 3
Gragg-Bulirsch-Stoer variable (up to 18 by default) variable
Adams-Bashforth variable variable
Adams-Moulton variable variable

15.5 Derivatives

If in addition to state y(t) the user needs to compute the sensitivity of the final state with respect to the initial state (dy/dy0) or the sensitivity of the final state with respect to some parameters of the ODE (dy/dpك), they need to register the variational equations as a set of secondary equations appended to the main state before the integration starts. Then the integration will propagate the compound state composed of both the main state and its partial derivatives. At the end of the integration, the Jacobian matrices are extracted from the integrated secondary state. The JacobianMatrices class can do most of this as long as the local derivatives are provided to it. It will set up the variational equations, register them as secondary equations into the ODE, and it will set up the initial values and retrieve the intermediate and final values as Jacobian matrices.

If for example the original state dimension is 6 and there are 3 parameters, the compound state will be a 60 elements array. The first 6 elements will be the original state, the next 36 elements will represent the 6x6 Jacobian matrix of the final state with respect to the initial state, and the remaining 18 elements will represent the 6x3 Jacobian matrix of the final state with respect to the 3 parameters. The JacobianMatrices class does the mapping between the 60 elements compound state and the Jacobian matrices and sets up the correcsponding secondary equations.

As the variational equations are considered to be secondary equations here, variable step integrators ignore them for step size control: they rely only on the main state. This feature is a design choice. The rationale is to get exactly the same steps, regardless of the Jacobians being computed or not, hence ensuring reproducible results in both cases.

What remains of user responsibility is to provide the local Jacobians df(t, y, p)/dy and df(t, y, p)/dpك corresponding the the main ODE y'=f(t, y, p). The main ODE is as usual provided by the user as a class implementing the FirstOrderDifferentialEquations interface or a sub-interface.

If the ODE is simple enough that the user can implement df(t, y, p)/dy directly, then instead of providing an implementation of the FirstOrderDifferentialEquations interface only, the user should rather provide an implementation of the MainStateJacobianProvider interface, which extends the previous interface by adding a method to compute df(t, y, p)/dy. The user class is used as a constructor parameter of the JacobianMatrices class. If the ODE is too complex or the user simply does not bother implementing df(t, y, p)/dy directly, then the ODE can still be implemented using the simple FirstOrderDifferentialEquations interface and given as such to another constructor of the JacobianMatrices class, but in this case an array hy must also be provided that will contain the step size to use form each component of the main state vector y, and the Jacobian f(t, y, p)/dy will be computed internally using finite differences. This will of course trigger more evaluations of the ODE at each step and will suffer from finite differences errors, but it is much simpler to implement from a user point of view.

The parameters are identified by a name (a simple user defined string), which are also specified at JacobianMatrices class construction. If the ODE is simple enough that the user can implement df(t, y, p)/dpك directly for some of the parameters pك, then they can provide one or more classes implementing the ParameterJacobianProvider interface by calling the JacobianMatrices.addParameterJacobianProvide method. The parameters are handled one at a time, but all the calls to ParameterJacobianProvider.computeParameterJacobian will be grouped in one sequence after the call to MainStateJacobianProvider.computeMainStateJacobian This feature can be used when all the derivatives share a lot of costly computation. In this case, the user is advised to compute all the needed derivatives at once during the call to computeMainStateJacobian, including the partial derivatives with respect to the parameters and to store the derivatives temporary. Then when the next calls to computeParameterJacobian will be triggerred, it will be sufficient to return the already computed derivatives. With this architecture, many computation can be saved. This of course implies that the classes implementing both interfaces know each other (they can even be the same class if desired, but it is not required). If the ODE is too complex or the user simply does not bother implementing df(t, y, p)/dpك directly for some k, then the JacobianMatrices.setParameterStep method should be called so finite differences are used to compute the derivatives for this parameter. It is possible to have some parameters for which derivatives are provided by a direct implementation while other parameters are computed using finite differences during the same integration.

The following example corresponds to a simple case where all derivatives can be computed analytically. The state is a 2D point travelling along a circle. There are three parameters : the two coordinates of the center and the angular velocity.

This ODE is integrated as follows:

Copyright © 2003-2021 The Apache Software Foundation. All Rights Reserved.


شاهد الفيديو: قواعد أساسية في الاشتقاق. رياضيات. التحصيلي علمي. 1441-1442 (ديسمبر 2021).