المعادلات والأنظمة الخطية

كتبه بركات يوم الثلاثاء, 06 أيلول 2016

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

المعادلة الخطية linear equation هي أي معادلة جبرية كل حد فيها إما ثابت أو متغير من الدرجة الأولى مضروب بعدد ثابت، أي أنها أي معادلة يمكن كتابتها بالصيغة التالية: $$a_0 x_0 + a_1 x_1 + \cdots + a_{n-1} x_{n-1} = b$$

حيث أن $x_0, x_1, \cdots, x_{n-1}$ متغيرات من الدرجة الأولى مضروبة بعوامل $a_0, a_1, \cdots, a_{n-1}$ لتعطي $b$، يمكن أن تكون هذه القيم حقيقية أو مركبة لكننا في الرسوميات سنستخدم الأعداد الحقيقية $\mathbb{R}$.

طبعاً كما أشرت $x_0, x_1, \cdots, x_{n-1}$ عبارة عن متغيرات، ولايوجد أي شرط على التسمية حيث يمكنك تسميتها أي شيء يناسب المجال الذي تستخدم فيه الجبر الخطي، لذا كوننا نهتم بالرسوميات سنستخدم $x, y, z, w$ إشارة للإحداثيات مثلاً، أو $r, g, b, a$ للألوان، وغيرها من المسميات.

يمكننا صف المعادلات الخطية في مايسمى نظام معادلات خطية أو فقط نظام خطي linear system كالنظام التالي:

$$\begin{matrix} -x & + & 0.5y &= 0 \\ x & + & y &= 6 \end{matrix}$$

مثال بسيط عملي لنظام خطي خارج الرسوميات هو هذا اللغز والذي يسأل كم وزن تلك الحيوانات مجتمعة:

Image

يلزمنا معرفة أوزان الحيوانات تلك مفردة حتى نجمعها لنحصل على مجموع أوزانها، اذا اعتبرنا أن القط $c$ والأرنب $r$ والكلب $d$ فاللغز يمكن نمذجته رياضياً بهذا النظام الخطي:

$$\begin{align*} c + r = 10 \operatorname{kg} \\ r + d = 20 \operatorname{kg} \\ c + d = 30 \operatorname{kg} \end{align*}$$

وهذا يمكن حله يدوياً أو حله بسرعة باستخدام الكمبيوتر كالتالي (سنتحدث بعد قليل عن المصفوفات):

$$\begin{bmatrix} c\\ r\\ d \end{bmatrix} = { \begin{bmatrix} 1 & 1 & 0\\ 0 & 1 & 1\\ 1 & 0 & 1 \end{bmatrix} } ^{-1} \begin{bmatrix} 10 \operatorname{kg}\\ 20 \operatorname{kg}\\ 30 \operatorname{kg} \end{bmatrix} = \begin{bmatrix} 7 \operatorname{kg}\\ 3 \operatorname{kg}\\ 17 \operatorname{kg} \end{bmatrix} \Rightarrow c + r + d = 27 \operatorname{kg} $$ حل المعادلات الخطية تطبيق مهم في الحياة العامة وحتى في الرسوميات أحياناً، لكنه ليس هدفنا.

الصيغة المتجهية للأنظمة الخطية

نظراً لكون $x, y \in \mathbb{R}$، فمن الممكن أن نعيد كتابة المعادلة الأولى باستخدام المتجهات باستخدام الخصائص الجبرية للمتجهات للصيغة التالية:

$$ x\begin{bmatrix} -1\\ 1 \end{bmatrix} + y\begin{bmatrix} 0.5\\ 1 \end{bmatrix} = \begin{bmatrix} 0\\ 6 \end{bmatrix} $$ تسمى هذه الصيغة بالصيغة المتجهية للنظام الخطي، وهي نفسها النظام السابق لكن مكتوب بطريقة أخرى، للتأكد:

$$ \begin{bmatrix} -x\\ x \end{bmatrix} + \begin{bmatrix} 0.5y\\ y \end{bmatrix} = \begin{bmatrix} -x & + & 0.5y \\ x & + & y \end{bmatrix} = \begin{bmatrix} 0\\ 6 \end{bmatrix}$$

الصيغة المتجهية تمثل تركيبة خطية linear combination للمتجهات $\mathbf{v}_0, \mathbf{v}_1,\cdots, \mathbf{v}_{n-1} \in \mathbb{R}^n$:

$$x_0 \mathbf{v}_0 + x_1 \mathbf{v}_1 +\cdots + x_{n - 1} \mathbf{v}_{n-1} = \mathbf{u} \in \mathbb{R}^n$$

القيمة $(0, 6)$ ستنتج إذا كانت قيمة $(x, y) = (2, 4)$، لكن لو رسمنا المتجهين وأخذنا عدة قيم أخرى لـ $x$ و $y$، مثلاً لنأخذ قيم النقاط1 التي تشكّل الشكل التالي:

Image

سنأخذ النقاط ونعوضها في المعادلة السابقة، مثلاً النقطة التي في أعلى الشكل $(0, 3)$ لو عوضناها ستعطينا:

$$0\begin{bmatrix} -1\\ 1 \end{bmatrix} + 3\begin{bmatrix} 0.5\\ 1 \end{bmatrix} = \begin{bmatrix} 1.5\\ 3 \end{bmatrix}$$

لو طبقنا نفس الخطوات مع باقي النقاط مع رسم المتجهين سينتج لك الشكل التالي:

Image

ماعملته تلك المعادلة بالشكل أنها عكسته أفقياً واستطال قليلاً عمودياً، النقاط الأصلية يمكن وصفها بالمعادلة التالية:

$$x\begin{bmatrix} 1\\ 0 \end{bmatrix} + y\begin{bmatrix} 0\\ 1 \end{bmatrix}$$

والتي لاتعمل شيء على النقاط سوى أنها تعيد نفس القيمة:

Image

تلك المتجهات $(1, 0)$ و $(0, 1)$ تسمى أساس قياسي standard basis للإحداثي في الفضاء $\mathbb{R}^2$، يرمز للأساسات القياسية بالمتجه $\mathbf{e}_0 = (1, 0)$ و $\mathbf{e}_1 = (0, 1)$، يمكنك تعميم الفكرة لـ$\mathbb{R}^n$.

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

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

بالمناسبة، تسمى مجموعة المتجهات التي يمكنك الوصول لها عن طريق تغيير قيم $x_0, x_1, \cdots, x_{n-1}$ بالمدى الخطي linear span، ويرمز لها عادةً $\operatorname{Span}\{\mathbf{v}_0, \mathbf{v}_1, \cdots, \mathbf{v}_{n-1}\}$، نظراً لكون الفضاء المتجهي $\mathbb{R}^n$ غير منتهي، فمجموعة المتجهات $\operatorname{Span}\{\mathbf{v}_0, \mathbf{v}_1, \cdots, \mathbf{v}_{n-1}\}$ أيضاً غير منتهية، مثلاً $\operatorname{Span}\{(1, 0), (0, 1)\}$ هو كل كل المتجهات التي تقع على السطح الناتج من المتجهين $(1, 0)$ و $(0, 1)$، تذكر هذه المعلومة لأنها قد ترد في كتب الجبر الخطي والرسوميات.

الاستقلال الخطي

حتى نبني أساسات جديدة، تلك الأساسات يجب أن تكون مستقلة خطياً linearly independent عن بعض، بمعنى أن أي الأساسات لايمكن تركيبه خطياً من أساسات أخرى، فمثلاً المتجهين $\mathbf{v}_0 = (1, 0)$ و $\mathbf{v}_1 = (2, 0)$ ليست مستقلة خطياً، بل تابعة خطياً linearly dependent لأننا يمكننا كتابة $\mathbf{v}_1 = 2\mathbf{v}_0$ أو $0.5\mathbf{v}_1 = \mathbf{v}_0$، لذا هذان المتجهين لايصلحا كأساسات.

هندسياً، في الـ$\mathbb{R}^2$، المتجهين يجب أن لايكونا متوازيين، لأننا يمكن أن نضرب أحدهما بعدد ثابت بحيث نغير طوله ليساوي الآخر، لو جربنا مع الشكل السابق مع أساساين تابعان خطياً ستلاحظ أننا فقدنا البعد الثاني وظهر الشكل منكمش:

Image

أما في الـ$\mathbb{R}^3$، فيجب أن لاتقع كل المتجهات الثلاثة على نفس السطح كحالة المتجهات الحمراء والا فإن أحد أو كلا المتجهات ستكون تابعة خطياً للمتجهات الأخرى وستفقد أحد الأبعاد ثم ينكمش المجسّم الثلاثي الأبعاد، أحدهما يجب أن يكون متعامد أو شبه متعامد على المتجهين الآخرين كي تكون مستقلة خطياً كحالة المتجهات الزرقاء (مصدر الصور): Image

Image

رياضياً ولأي $\mathbb{R}^n$، حتى تكون المتجهات $\mathbf{v}_0, \mathbf{v}_1, \cdots, \mathbf{v}_{n-1}$ مستقلة خطياً، يجب أن لايكون هناك أعداد غير الأصفار في كل الثوابت $x_0, x_1, \cdots, x_{n-1} = 0$ تحقق المعادلة:

$$x_0 \mathbf{v}_0 + x_1 \mathbf{v}_1 +\cdots + x_{n - 1} \mathbf{v}_{n-1} = \mathbf{0} \in \mathbb{R}^n$$

مثلاً، المتجهات $(-1, 1)$ و $(0.5, 1)$ مستقلة خطياً فلايوجد هناك غير الأصفار $(x, y) = (0, 0)$ تحقق المعادلة $x(-1, 1) + y(0.5, 1) = (0, 0)$، بينما المتجهات في المعادلة $x(2, 3, 1) + y(1, 0, 1) + z (0, 3, -1) = (0, 0, 0)$ تابعة خطياً، فهناك عدد لانهائي من الحلول تحقق المعادلة.

الضرب المتجهي في $\mathbb{R}^3$

واحدة من الأدوات المهمة والتي تساعدنا في إنشاء الأساسات في $\mathbb{R}^3$ هي الضرب المتجهي cross product، حيث يمثّل بالعملية الثنائية "$\times$" التي تأخذ متجهين مستقلين خطياً لتعيد متجه ثالث $\mathbf{u} \times \mathbf{v} = \mathbf{w} \in \mathbb{R}^3$ عمودي على المتجهين، مثلاً $(1, 0, 0) \times (0, 1, 0) = (0, 0, 1)$، هذا المتجه حسب التعريف مستقل خطياً عن المتجهين الآخرين لكونه عمودي عليهما.

انتبه أن الضرب المتجهي يعيد متجه خلافاً لللضرب القياسي dot product الذي يرمز له "$\cdot$" والذي يعيد كمية قياسية، أيضاً الضرب المتجهي لامعنى له هندسياً سوى في $\mathbb{R}^3$، لكن في الأبعاد الأقل أو الأكثر لامعنى هندسي له يمكن أن يفيدنا بشيء.

الضرب المتجهي معرف هندسياً بأنه:

$$\mathbf{u} \times \mathbf{v} = \left \| \mathbf{u} \right \|\left \| \mathbf{v} \right \| \cos{\theta}\,\hat{\mathbf{n}}$$

حيث أن $\theta$ هي الزاوية بين المتجهين $\mathbf{u}$ و $\mathbf{v}$، ومتجه الوحدة $\hat{\mathbf{n}}$ هو المتجه العمودي على السطح الناتج من المتجهين $\mathbf{u}$ و $\mathbf{v}$.

لو كانت المتجهات $\mathbf{u}$ و $\mathbf{u}$ متوازية، أي تابعة خطياً، فالزاوية $\theta = 0$ بينهما صفر، لذا فالضرب المتجهي لهما يعطي المتجه الصفري $\mathbf{u} \times \mathbf{v} = \mathbf{0}$ لأن $\sin{0} = 0$.

يمكن حساب الضرب المتجهي جبرياً كالتالي:

$$ \mathbf{u} \times \mathbf{v} = \begin{bmatrix} u_0\\ u_1\\ u_2 \end{bmatrix} \times \begin{bmatrix} v_0\\ v_1\\ v_2 \end{bmatrix} = \begin{bmatrix} u_1 v_2 - u_2 v_1\\ u_2 v_0 - u_0 v_2\\ u_0 v_1 - u_1 v_0\\ \end{bmatrix}$$

ويمكن تذكرها هكذا:

$$ \begin{matrix} \overset{+}{\searrow} & \overset{+}{\searrow} & \overset{+}{\searrow} & & & \overset{-}{\swarrow} & \overset{-}{\swarrow} & \overset{-}{\swarrow}\\ & \mathbf{e}_0 & \mathbf{e}_1 & \mathbf{e}_2 & \mathbf{e}_0 & \mathbf{e}_1 & \mathbf{e}_2 &\\ & u_0 & u_1 & u_2 & u_0 & u_1 & u_2 &\\ & v_0 & v_1 & v_2 & v_0 & v_1 & v_2 &\\ \end{matrix} $$

فقط اتبع الأسهم قطرياً وتذكر أن $\mathbf{e}_0 = (1, 0, 0)$ و $\mathbf{e}_1 = (0, 1, 0)$ و $\mathbf{e}_2 = (0, 0, 1)$، ستجد أن:

$$ \begin{align*} \mathbf{w} &= \mathbf{e}_0 u_1 v_2 - \mathbf{e}_0u_2 v_1\\ & + \mathbf{e}_1 u_2 v_0 - \mathbf{e}_1 u_0 v_2\\ & + \mathbf{e}_2 u_0 v_1 - \mathbf{e}_2 u_1 v_0 \end{align*} $$

كما أشرت، فالضرب المتجهي مفيد لإنشاء الأساسات، فقط نختار متجهين مستقلين خطياً أحدهما يمثل المتجه الأيمن والآخر يمثل المتجه العلوي، ونضربهما ببعض ضرب متجهي لنحصل على متجه ثالث عمودي عليهما، لكن هناك خاصية انتبه لها، فالضرب المتجهي غير إبدالي والترتيب مهم، حيث أن $\mathbf{u} \times \mathbf{v} = - \mathbf{v} \times \mathbf{u}$، لذا عند تبديل الطرفين، ستحصل على نفس المتجه لكن في الاتجاه المعاكس، كي تتذكر، الترتيب استخدم الحيلة:

$$\begin{matrix} & \mathbf{u} & \\ \nearrow & & \searrow\\ \mathbf{w} & \leftarrow & \mathbf{v} \end{matrix} $$

إذا اتبعت السهم ستجد أن:

$$ \begin{align*} \mathbf{u} \times \mathbf{v} &= \mathbf{w} \\ \mathbf{v} \times \mathbf{w} &= \mathbf{u} \\ \mathbf{w} \times \mathbf{u} &= \mathbf{v} \\ \end{align*}$$

إذا سرت عكس اتجاه السهم ستحصل على نفس النتيجة لكن بالإتجاه المعاكس، ولايهم إن كنت تستخدم إحداثي اليد اليمنى أو اليسرى، فأنت من يفسر معنى اتجاه المتجه الثالث.

صيغة المصفوفات

كما أشرنا أن هناك طريقتين لتمثيل نظام خطي، هناك الصيغة التقليدية:

$$\begin{matrix} -x & + & 0.5y &= 0 \\ x & + & y &= 6 \end{matrix}$$

وهناك الصيغة المتجهية:

$$x\begin{bmatrix} -1\\ 1 \end{bmatrix} + y\begin{bmatrix} 0.5\\ 1 \end{bmatrix} = \begin{bmatrix} 0\\ 6 \end{bmatrix}$$

وهناك صيغة ثالثة وهي باستخدام المصفوفات كالتالي:

$$ \begin{bmatrix} -1 & 0.5\\ 1 & 1 \end{bmatrix} \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} 0\\ 6 \end{bmatrix} $$

تسمى:

$$ \begin{bmatrix} -1 & 0.5\\ 1 & 1 \end{bmatrix} $$

بالمصفوفة matrix وجمعها matrices، حيث توصف هذه المصفوفة $\mathbb{R}^{2\times2}$ أنها مربعة وذات الحجم $2\times2$، وتكتب المصفوفات كمتغيرات عادةً بحرف كبير عريض مثل $\mathbf{M}$، وتمثل أعمدة المصفوفة متجهات الأساسات.

يمكن أن تأخذ المصفوفة أي حجم $\mathbb{R}^{m\times n}$ حيث أن $m$ تمثل عدد الصفوف و $n$ تمثل عدد أعمدة المصفوفة، لكن غالباً لن نستخدم في الرسوميات سوى المصفوفات المربعة وعلى الأكثر $\mathbb{R}^{4\times 4}$.

في الصيغة التي تستخدم المصفوفات، فالمتجه $(x, y)$ مضروب بالمصفوفة، ويمكن الوصول للمعادلات الأصلية التي تمثلها المصفوفة عن طريق ضرب صفوف المصفوفة بعمود المتجه المضروب فيها ضرب قياسي:

$$ \begin{bmatrix} -1 & 0.5\\ 1 & 1 \end{bmatrix} \begin{bmatrix} x\\ y \end{bmatrix} = \begin{bmatrix} -x + 0.5y\\ x + y \end{bmatrix} = \begin{bmatrix} 0\\ 6 \end{bmatrix} $$

المتجهين $(x, y)$ و $(0, 6)$ يمكن اعتبارهما مصفوفتين ذات الحجم $\mathbb{R}^{2\times1}$.

المصفوفة التي تمثل المتجهات القياسية تسمى بمصفوفة الوحدة identity matrix ويرمز لها $\mathbf{I}$:

$$\mathbf{I} = \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} \in \mathbb{R}^{2\times2}$$

هذه المصفوفة كما أشرنا في الصيغة المتجهية لن تعمل شيء سوى أنها تعيد المتجه نفسه $\mathbf{I}\mathbf{v}=\mathbf{v}$، فكأنها العدد 1.

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

$$\begin{bmatrix}x & y\end{bmatrix}\begin{bmatrix}-1 & 1\\ 0.5 & 1\end{bmatrix}=\begin{bmatrix}0 & 6\end{bmatrix}$$

منقول المصفوفة $\mathbf{M}^T$ يعمل بالمصفوفات نفس عمله بالمتجهات، حيث يجعل العمود الأول الصف الأول وهكذا في باقي الأعمدة، أو بصيغة أخرى يجعل الصف الأول العمود الأول وهكذا في باقي الصفوف.

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

في المقال القادم سنتحدث عن التحويلات الخطية، والإحداثيات المتجانسة، والتحويلات التآلفية.


  1. تسمى عادةً النقاط التي تشّكل شكل ما بالنقاط الهندسية vertices ومفردها vertex، وهي تسمية خاصة للنقاط التي يلتقي عندها خط أو ضلع، هذا المصطلح يتكرر كثيراً في الرسوميات.