قراءة
وضع القصص

طرق الـ inverse Z-transform (التحويل العكسي لـ Z)

~15 دقيقة قراءة الدرس 4 من الوحدة 4

ليه محتاجين الـ inverse Z-transform؟

تحويل Z بيحوّل الـ sequence الزمنية المنفصلة x[n] لدالة X(z) في المستوى المركّب، وده بيخلّي التحليل وتصميم الـ filters شغل جبري سهل. بس الفايدة الحقيقية بتبان لما نحتاج العكس: لو معانا transfer function H(z) أو spectrum الخرج Y(z)، نرجّع الـ sequence الزمنية y[n]. ودي مسألة الـ inverse Z-transform (التحويل العكسي لـ Z)، وبتظهر طول الوقت — لما تصمّم filter من مواصفات الـ poles والـ zeros، ولما تحل difference equations، ولما تنفّذ نظام على الـ hardware.

فيه تلات طرق عملية بتسيطر: الـ partial fraction expansion (التوسّع إلى كسور جزئية) (الأكتر منهجية)، والقسمة الطويلة / الـ power series (الأكتر مباشرة)، وعشان الصورة النظرية تكمل الـ contour integral (تكامل المنحنى المغلق) (نادرًا ما بيتحسب بالإيد بس مهم للنظرية). وكل طريقة بتنوّر وش مختلف من علاقة تحويل Z.

الطريقة الأولى — الـ partial fraction expansion

الـ partial fractions بتشتغل كل ما X(z) تبقى نسبة بين polynomialين وليها poles بسيطة. والاستراتيجية إنك تفكّك X(z)/z (أو X(z) على طول) لمجموع حدود من الدرجة الأولى تقدر تعرف التحويل العكسي بتاعها من جدول التحويلات.

التفكيك بالـ partial fractions
X(z) = \sum_{k=1}^{N} \frac{A_k\,z}{z - p_k}, \quad A_k = \left.\frac{X(z)}{z}\,(z-p_k)\right|_{z=p_k}
X(z) بيتوسّع لحدود من الدرجة الأولى. كل residue A_k = (z − p_k) X(z)/z عند z = p_k. والـ region of convergence (ROC) بتحدّد كل حد بيقابل sequence causal (right-sided) ولا non-causal.

الزوج الأساسي اللي لازم تحفظه: الـ exponential sequence الـ causal anu[n] بتتحوّل لـ z/(z−a) مع ROC |z| > |a|. فأول ما تكتب X(z) بصيغة الـ partial fractions، كل حد Akz/(z−pk) بيقابل على طول Akpknu[n] في الحالة الـ causal.

الـ ROC بتحدّد الـ causality

نفس الصيغة الجبرية لـ X(z) ممكن تقابل sequences زمنية مختلفة حسب الـ ROC. دايمًا حدّد الـ ROC جنب X(z) — التحويل العكسي مش وحيد من غيرها.

|z| > |p| ← sequence causal  |  |z| < |p| ← sequence non-causal

أما لو pole اتكرّر بدرجة r، فالتفكيك محتاج حدود بدرجات أعلى ومحتاج الـ entries المقابلة ليها في الجدول. بس أغلب تصميمات الـ DSP filters في الواقع بتعتمد على poles بسيطة (من غير جذور متكرّرة)، فوصفة الـ partial fractions الأساسية كفاية لأغلب الحالات العملية.

الطريقة التانية — الـ power series / القسمة الطويلة

لو محتاج كام sample أوّلانيين بس — أو X(z) مبتتحلّلش بسهولة — القسمة الطويلة للبسط على المقام بتطلّع power series في z−1. ومعاملات الـ series دي هي على طول الـ samples x[0], x[1], x[2], …

توسّع الـ power series
X(z) = \frac{b_0 + b_1 z^{-1} + \cdots}{1 + a_1 z^{-1} + \cdots} = x[0] + x[1]z^{-1} + x[2]z^{-2} + \cdots
قسمة البسط على المقام بقوى z⁻¹ بتزيد بتدّي x[0] + x[1]z⁻¹ + x[2]z⁻² + … ولما تقرا المعاملات بتطلعلك الـ sequence الزمنية sample بـ sample.

القسمة الطويلة مفيدة بالذات للـ sequences الـ causal (power series في z−1) وعشان تتأكد من نتايج الـ partial fractions. وهي كمان الأساس الحسابي لتحويل الـ transfer function لـ difference equation بالـ direct form — الوصفة اللي الـ processor بيمشي عليها sample بـ sample.

الخطوة 1
رتّب الـ polynomialين
اكتب البسط والمقام بقوى z بتنزل (أو قوى z⁻¹ بتزيد للأنظمة الـ causal). اقسم أول حد في البسط على أول حد في المقام.
الخطوة 2
اضرب واطرح
اضرب الناتج الجزئي الحالي في المقام كله واطرحه من اللي فاضل من البسط، وبعدين نزّل الحد اللي بعده. كرّر عشان تطلّع أكبر عدد ممكن من المعاملات.
الخطوة 3
اقرا الـ samples
كل معامل في الـ power series بـ z⁻¹ هو sample زمنية على طول: معامل z⁻ⁿ بيساوي x[n].
الخطوة 4
وقّف لما تكتفي
القسمة الطويلة بتكمّل للانهاية في الأنظمة اللي الـ response بتاعها مش محدود. وقّف لما اللي معاك يكفيك، أو استخدمها تتأكد من نتايج الـ partial fractions.

الطريقة التالتة — الـ contour integral (التعريف الرسمي)

التعريف الرسمي للـ inverse Z-transform هو contour integral في المستوى المركّب. نادرًا ما بيتحسب بالإيد، بس بيثبّت النظرية وبيوضّح ليه الـ ROC بتفضل مهمة جدًا.

الـ inverse Z-transform — التعريف الرسمي
x[n] = \frac{1}{2\pi j}\oint_{C} X(z)\,z^{n-1}\,dz = \sum_{\text{أقطاب داخل }C}\operatorname{Res}\bigl[X(z)z^{n-1}\bigr]
المنحنى C دايرة عكس عقارب الساعة جوه الـ ROC بتلف حوالين الأصل. وبنظرية الـ residues بتاعة كوشي، x[n] بيساوي مجموع residues X(z)z^{n−1} عند كل الـ poles اللي جوه C — وده اللي بيطلع لوحده من الـ partial fractions.

عمليًا، المهندسين بيحسبوا التكامل ده بالـ residues مش بالتكامل العددي. ومنظور الـ contour integral بيوضّح حاجتين: (1) الـ ROC هي اللي بتحدّد أنهي poles المنحنى بيلف حواليها، وبالتالي أنهي حدود من الـ partial fractions بتساهم في النتيجة، و(2) الحل المقفول ممكن بالظبط لأن X(z) الـ rational ليها poles معزولة بـ residues ممكن تتحسب.

مثال محلول — filter من الدرجة التانية

خلّي الـ transfer function H(z) = z2 / (z2 − 0.9z + 0.81) مع ROC |z| > 0.9. المقام ليه جذور عند z = 0.9e±j60°، يعني زوج poles conjugate عند نص قطر 0.9 وزاوية ±π/3. وعايزين نلاقي الـ impulse response h[n].

تفكيك H(z) بالـ partial fractions
H(z) = \frac{z^2}{z^2 - 0.9z + 0.81} = \frac{A\,z}{z - 0.9e^{j\pi/3}} + \frac{A^*\,z}{z - 0.9e^{-j\pi/3}}
مع poles عند p = 0.9e^{jπ/3} وp* = 0.9e^{−jπ/3}، الـ residues بتطلع complex conjugate. ولما تدمج الزوج الـ conjugate بيطلعلك impulse response حقيقي: h[n] = (2/√3) · (0.9)n · cos(nπ/3 − π/6) u[n]. والـ amplitude 2/√3 والـ phase −π/6 مش زخرفة: مع بسط z² بس الـ residues مبتبقاش تخيلية صافية، ولو شلتهم هيطلعلك h[1] = 0.45 بدل القيمة الصح 0.9.

المثال ده بيوضّح النمط العام: أزواج الـ poles الـ conjugate عند نص قطر r وزاوية θ دايمًا بتطلّع responses شكلها rncos(nθ + φ)u[n] — damped sinusoids (موجات جيبية خامدة). نص القطر بيتحكّم في سرعة الخمود والزاوية بتحدّد frequency التذبذب. ودي الـ response النموذجية لكل IIR section بيعمل resonance.

تختار الطريقة المناسبة

إمتى تستخدم
الـ partial fractions
لما تحتاج تعبير مقفول لـ x[n] لكل قيم n. أحسن حاجة للنسب الـ rational اللي poles بتاعتها بسيطة؛ بتربط الـ poles على طول بالمكوّنات الـ exponential.
إمتى تستخدم
القسمة الطويلة
لما تحتاج كام sample أوّلانيين بس، أو X(z) صعب تتحلّل. ممتازة كمان للتأكيد ولفهم الـ filter بيبني خرجه بشكل recursive إزاي.
إمتى تستخدم
جداول التحويلات
لما X(z) تطابق صيغة معيارية على طول (unit impulse، exponential، ramp، sinusoid). ابدأ دايمًا بالجدول — ممكن يوفّر عليك جبر كتير.
إمتى تستخدم
الـ contour integral
للتبرير النظري أو للشغل في إطار الـ complex analysis. وعمليًا، حساب الـ residues بيدّي نفس نتيجة الـ partial fractions.

بخلاص الوحدة 4، بقى معاك أدوات تحويل Z كلها: التحويل للأمام، والـ ROC، والـ poles والـ zeros، والتحويل العكسي. وهتطبّق الأدوات دي في الوحدة 5 على تصميم الـ filters الرقمية وتنفيذها.

أهم المفاهيم
  • الـ inverse Z-transform بيرجّع الـ sequence الزمنية x[n] من تمثيلها في الـ z-domain؛ والـ ROC ضرورية — نفس الصيغة الجبرية بتقابل sequences مختلفة لـ ROCs مختلفة.
  • الـ partial fractions: فكّك X(z)/z لحدود من الدرجة الأولى واقرا معكوسها من الجدول (exponentials، sinusoids، ramps).
  • القسمة الطويلة: معاملات الـ power series = samples الـ time domain على طول؛ مفيدة لما مش محتاج غير عدد محدود من الـ samples.
  • الـ contour integral: التعريف الرسمي، بيتلخّص في مجموع الـ residues = نتيجة الـ partial fractions.
  • أزواج الـ poles الـ conjugate عند (r, ±θ) بتطلّع response على شكل damped sinusoid rncos(nθ + φ)u[n].
  • |z| > |p| ← sequence causal؛ |z| < |p| ← sequence non-causal لنفس الـ pole.
  • لو شاكك، استخدم القسمة الطويلة عشان تتأكد من أول القيم اللي طلعت بالـ partial fractions.
اللي فات الـ poles والـ zeros والـ frequency response نظرة عامة على الموديول اللي بعده من الـ time domain للـ frequency domain