4.2.1 التحويل إلى متقطع (Discretization) 

    اعتبر معادلات فضاء الحالة (state-space) للزمن المستمر (continuous-time)

    $$ \dot {\mathbf {x}} (t) = \mathbf {A} \mathbf {x} (t) + \mathbf {B} \mathbf {u} (t) \tag {4.9} $$
    $$ \mathbf {y} (t) = \mathbf {C x} (t) + \mathbf {D u} (t) \tag {4.10} $$

    إذا أريد حسابها على حاسوب رقمي (digital computer)، فيجب تحويلها إلى متقطعة (discretized). أبسط طريقة هي استخدام التقريب

    $$ \dot {\mathbf {x}} (t) \approx \frac {\mathbf {x} (t + T) - \mathbf {x} (t)}{T} \tag {4.11} $$

    حيث $ T > 0 $ ويُسمى حجم الخطوة (step size). كلما صغر حجم الخطوة كانت الدقة أفضل. باستخدام هذا التقريب يمكننا كتابة (4.9) على النحو

    $$ \mathbf {x} (t + T) = \mathbf {x} (t) + \mathbf {A x} (t) T + \mathbf {B u} (t) T = (\mathbf {I} + \mathbf {A} T) \mathbf {x} (t) + \mathbf {B} T \mathbf {u} (t) $$

    حيث استخدمنا $ \mathbf{x} = \mathbf{x}\mathbf{I} $ و $ \mathbf{I} $ هي مصفوفة الوحدة (unit matrix). إذا حسبنا $ \mathbf{x}(t) $ و $ \mathbf{y}(t) $ فقط عند $ t = kT $ لـ $ k = 0, 1, \ldots $ ، فحينئذ

    $$ \begin{array}{l} \mathbf {x} ((k + 1) T) = (\mathbf {I} + T \mathbf {A}) \mathbf {x} (k T) + T \mathbf {B} \mathbf {u} (k T) \\ \mathbf {y} (k T) = \mathbf {C x} (k T) + \mathbf {D u} (k T) \\ \end{array} $$

    وهذه معادلة فضاء الحالة للزمن المتقطع (discrete-time (DT) state-space equation). إن مخطط التحويل إلى متقطع في (4.11) هو الأبسط ويعطي أقل النتائج دقةً لحجم خطوة $ T $ مُعطى. ومع ذلك، يمكن أن يعطي نتيجة دقيقة مثل أي طريقة إذا اخترنا $ T $ صغيرًا بما يكفي. نناقش الآن تحويلًا متقطعًا مختلفًا.

    إذا كان المدخل $ \mathbf{u}(t) $ مُولَّدًا بواسطة حاسوب رقمي متبوعًا بمحول رقمي-تماثلي (digital-to-analog converter) يستخدم تثبيتًا من الرتبة الصفرية (zero-order hold)، فإن $ \mathbf{u}(t) $ ستكون دالة درجية (staircase function). يحدث هذا الموقف كثيرًا في التحكم الحاسوبي لأنظمة التحكم (computer control of control systems). لنفرض

    $$ \mathbf {u} (t) = \mathbf {u} (k T) =: \mathbf {u} [ k ] \quad \text{for} k T \leq t < (k + 1) T \tag {4.12} $$

    ولـ $ k = 0, 1, 2, \ldots $ . هذا المدخل يغيّر قيمه فقط عند لحظات الزمن المتقطع. لهذا المدخل، يبقى حل (4.9) معطىً بالمعادلة (4.5). إن حساب (4.5) عند $ t = kT $ و $ t = (k + 1)T $ يعطي

    $$ \mathbf {x} [ k ] := \mathbf {x} (k T) = e ^ {\mathbf {A} k T} \mathbf {x} (0) + \int_ {0} ^ {k T} e ^ {\mathbf {A} (k T - \tau)} \mathbf {B} \mathbf {u} (\tau) d \tau \tag {4.13} $$

    و

    $$ \mathbf {x} [ k + 1 ] := \mathbf {x} ((k + 1) T) = e ^ {\mathbf {A} (k + 1) T} \mathbf {x} (0) + \int_ {0} ^ {(k + 1) T} e ^ {\mathbf {A} ((k + 1) T - \tau)} \mathbf {B u} (\tau) d \tau \tag {4.14} $$

    يمكن كتابة المعادلة (4.14) على النحو

    $$ \begin{array}{l} \mathbf {x} [ k + 1 ] = e ^ {\mathbf {A} T} \left[ e ^ {\mathbf {A} k T} \mathbf {x} (0) + \int_ {0} ^ {k T} e ^ {\mathbf {A} (k T - \tau)} \mathbf {B} \mathbf {u} (\tau) d \tau \right] \\ + \int_ {k T} ^ {(k + 1) T} e ^ {\mathbf {A} (k T + T - \tau)} \mathbf {B} \mathbf {u} (\tau) d \tau \\ \end{array} $$

    والتي تصبح، بعد التعويض عن (4.12) و(4.13) وإدخال المتغير الجديد $ \alpha \coloneqq kT + T - \tau $ ،

    $$ \mathbf {x} [ k + 1 ] = e ^ {\mathbf {A} T} \mathbf {x} [ k ] + \left(\int_ {0} ^ {T} e ^ {\mathbf {A} \alpha} d \alpha\right) \mathbf {B u} [ k ] $$

    إذًا، إذا كان المدخل يغيّر قيمته فقط عند لحظات الزمن المتقطع $ kT $ وإذا كنا نحسب الاستجابات فقط عند $ t = kT $ ، فإن (4.9) و(4.10) تصبحان

    $$ \mathbf {x} [ k + 1 ] = \mathbf {A} _ {d} \mathbf {x} [ k ] + \mathbf {B} _ {d} \mathbf {u} [ k ] \tag {4.15} $$
    $$ \mathbf {y} [ k ] = \mathbf {C} _ {d} \mathbf {x} [ k ] + \mathbf {D} _ {d} \mathbf {u} [ k ] \tag {4.16} $$

    مع

    $$ \mathbf {A} _ {d} = e ^ {\mathbf {A} T}, \quad \mathbf {B} _ {d} = \left(\int_ {0} ^ {T} e ^ {\mathbf {A} \tau} d \tau\right) \mathbf {B}, \quad \mathbf {C} _ {d} = \mathbf {C}, \quad \mathbf {D} _ {d} = \mathbf {D} \tag {4.17} $$

    وهذه معادلة فضاء الحالة للزمن المتقطع (discrete-time state-space equation). لاحظ أنه لا يوجد أي تقريب في هذا الاشتقاق، وأن (4.15) تعطي الحل الدقيق لـ(4.9) عند $ t = kT $ إذا كان المدخل درجياً (staircase).

    نناقش الآن حساب $ \mathbf{B}_d $ . باستخدام (3.51) نحصل على

    $$ \begin{array}{l} \mathbf {B} _ {d} = \int_ {0} ^ {T} \left[ \mathbf {I} + \mathbf {A} \tau + \mathbf {A} ^ {2} \frac {\tau^ {2}}{2 !} + \dots \right] d \tau \\ = T \mathbf {I} + \frac {T ^ {2}}{2} \mathbf {A} + \frac {T ^ {3}}{3 !} \mathbf {A} ^ {2} + \frac {T ^ {4}}{4 !} \mathbf {A} ^ {3} + \dots \\ \end{array} $$

    يمكن حساب متسلسلة القوى (power series) هذه بشكل تكراري كما في حساب (3.51). إذا كانت $ \mathbf{A} $ غير منفردة (nonsingular)، فيمكن كتابة المتسلسلة على النحو، باستخدام (3.51)،

    $$ \mathbf {A} ^ {- 1} \left[ T \mathbf {A} + \frac {T ^ {2}}{2} \mathbf {A} ^ {2} + \frac {T ^ {3}}{3 !} \mathbf {A} ^ {3} + \dots + \mathbf {I} - \mathbf {I} \right] = \mathbf {A} ^ {- 1} \left(e ^ {\mathbf {A} T} - \mathbf {I}\right) $$

    وبالتالي نحصل على

    $$ \mathbf {B} _ {d} = \mathbf {A} ^ {- 1} (\mathbf {A} _ {d} - \mathbf {I}) \mathbf {B} \quad (\text{If} \mathbf {A} \text{is non singular.}) $$

    وباستخدام هذه الصيغة يمكننا تجنب حساب متسلسلة لا نهائية.

    تقوم دالة MATLAB ‏[ad, bd] = c2d(a, b, T) بتحويل معادلة الحالة للزمن المستمر في (4.9) إلى معادلة الحالة للزمن المتقطع في (4.15).