العمل مع التوابع الرياضية

الـعمل مع الـتوابـع الـرياضـية

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

  مثال (1) :
syms x y
gx = y*x^2 + x*y + 1;
subs(gx,x,3)
ans = 12*y + 1

subs(gx,y,3)

ans = 3*x^2 + 3*x + 1
 يتم في هذا المثال تعريف متغيرين x,y من نوع رمز symbolic من خلال الاستفادة التابع syms وبعد ذلك يتم وضع صيغة التابع الذي نريد التعامل معه لحساب قيمته عن قيمة x=3 ومن ثم عند قيمة y=3. الصيغة العامة للتابع subs.  

 مثال (2) :
syms x
gx = 2*sin(2*x)*exp(x)
diff(gx)
ans = 4*cos(2*x)*exp(x) + 2*sin(2*x)*exp(x)
 يتم في هذا المثال تعريف تابع لمتحول واحد x , يتم تعريف هذا المتحول كمتغير من نوع رمز symbolic وبعد ذلك وبالاستفادة من  التابع diff يتم إيجاد مشتق التابع.


 مثال (3) :
syms x y
gx = 2*sin(x*y)
diff(gx,x)
ans = 2*cos(x*y)*y

 يتم في هذا المثال تعريف تابع لمتحولين x,y , يتم تعريف هذين المتحولين كمتغير من نوع رمز symbolic وبعد ذلك وبالاستفادة من تابع الاشتقاق يتم إيجاد المشتق بالنسبة لأحد المتحولين. الصيغة العامة للتابع الاشتقاق diff.
كما يمكن أيضاً من خلال هذا التابع إيجاد المشتقات لأحد المتحولات من المرتبة الثانية والثالثة ومافوق وذلك كما يلي :
diff(expr, n, v)


 يمكن بنفس الطريقة و بالاستفادة من التابع int إيجاد تكامل أي تابع حيث أن الصيغة العامة لهذا التابع هي كما يلي : 
int(expr,var) 

إيجاد المشتقات الجزئية :
المشتقات الجزئية أو ما يسمى باليعقوبيات , حيث التوابع هي x, y, z والمتحولات على التوالي هي r, l, f. تتم عملية الاشتقاق هذه باستخدام بيئة الماتلاب بالتابع jacobian وللتوضيح إليكم المثال التالي.

المطلوب إيجاد المشتقات الجزئية للتوابع التالية: 
x=rcos(l)cos(f)
y=rcos(i)sin(f)
z=rsin(l)
الحل : 
>> syms r l f
>> x=r*cos(l)*cos(f);
>> y=r*cos(l)*sin(f);
>> z=r*sin(l);
>> J=jacobian([x;y;z],[r;l;f])
J =
     [ cos(f)*cos(l), -r*cos(f)*sin(l), -r*cos(l)*sin(f) ]
     [ cos(l)*sin(f), -r*sin(f)*sin(l),  r*cos(f)*cos(l) ]
     [        sin(l),         r*cos(l),                0 ]


إيجاد التكامل المحدد/غير المحدد لتابع :
كما سبق و شرحنا لإيجاد التكامل لتابع يتم الاستفادة من التابع int و من أجل ذلك سنقوم بشرح وتوضيح كل ذلك في الأمثلة التالية.

مثال (1)
المطلوب إيجاد تكامل التابع التالي : 
G(x) = sin(5x) + cos(2x) 
الحل :
>> syms x
>> int(sin(5*x) + cos(2*x)) 
 
مثال (2)
المطلوب إيجاد تكامل التابع التالي :
sin(5x) + cos(2x) 
من أجل مجال تابع 1-2.
الحل : 
>> syms x
>> int(sin(5*x) + cos(2*x),1,2) 
>> eval(ans) 

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

مثال (1)
>> syms x
>> collect((x+1)*(x-2)*(x-3)+(x-4)^2)
ans =
                    x^3 - 3*x^2 - 7*x + 22

مثال (2)
>> syms x y 
>> collect((x+1)*(x-2)*(x-3)*y^2+(x-4)^2,x)
ans =
y^2*x^3 + (1 - 4*y^2)*x^2 + (y^2 - 8)*x + 6*y^2 + 16

فك الأقواس و نشر كثير الحدود أو المعادلة  :
نصادف في بعض الأحيان كثيرات حدود أو معادلات تحتوي أقواساً ومتحولات بصيغ معقدة. لذلك زودت بيئة الماتلاب بإمكانية تبسيط هذه اليغة من خلال التابع expand, هذه التعليمة تصلح في حالة معادلات بمتحولات مثل x,y أو معادلات تحوي توابع مثلثية وللتوضيح إليكم الأمثلة التالية.

مثال (1)
>> syms x y 
>> expand((x+1)*(x-2)*(x-3)*y^2+(x-4)^2)
ans =
     y^2*x^3 + (1 - 4*y^2)*x^2 + (y^2 - 8)*x + 6*y^2 + 16

مثال (2)
>> syms x y 
>> expand(cos(x-y))   
ans =
     cos(x)*cos(y) + sin(x)*sin(y)

مثال (3)
>> syms x y 
>> expand(cos(x+y))   
ans =
     cos(x)*cos(y) - sin(x)*sin(y)

مثال (4)
>> syms x y 
>> expand(exp(x+y))
ans = 
      exp(x)*exp(y)

يمكن أيضاً الاستفادة من التابع simplify لتبسيط التوابع والمعادلات و كثيرات الحدود, حيث وظيفة هذا التابع تبسيط الصيغ المعقدة للتوابع الكسرية و المثلثية, أو الحصول على صيغ أخرى تكون أسهل للمعالجة في الحلول الرياضية.


التوابع الكسرية :
يعرف التابع الكسري بأنه النسبة بين كثيري حدود, وهذا النوع من التوابع غالباً ما يستخدم في التحكم الآلي و تطبيقاته. تعطى التوابع الكسرية في التحكم بشكلها اللابلاسي حيث يُشار للمتحول بـ (s) في كثيري حدود البسط و المقام.
يعرف البسط بالنسبة للبرنامج بالتعليمة numenator ومختصرها num, و المثام بالتعليمة يenumenator ومختصرها den, وبالتالي يتم التعبير عن أمر الاشتقاق للتابع الكسري f(x)=px/qx بالشكل التالي :
[num , den] = polyder(p,q)
حيث p,q هما نسقي كثيري الحدود للبسط و المقام على التوالي.
يمكن بطريقة اخرى التعامل مع التوابع الكسرية بالاستفادة من المتغيرات الرمزية symbolic وبالتالي تعريف التابع الكسري بشكل مباشر. 

مثال  
 %f(x)=(2*x+3)/(x^2+3*x-5)
>> p=[0 2 3]; %num
>> q=[1 3 -5]; %den
>> [num , den] = polyder(p,q)
  num =
    -2    -6   -19
den =
     1     6    -1   -30    25
بطريقة ثانية يمكن اشتقاق هذا التابع الكسري : 
>> syms x y
>> fx=(2*x+3)/(x^2+3*x-5);
>> diff(fx)
ans =
     2/(x^2 + 3*x - 5) - (2*x + 3)^2/(x^2 + 3*x - 5)^2
ويمكن تبسيط الصيغة الناتجة بالاستفادة من التابع simplify كما يلي : 
>> simplify(ans)
 ans =
       -(2*x^2 + 6*x + 19)/(x^2 + 3*x - 5)^2
وبالتالي نلاحظ أن النتائج نفسها في الحالتين.

بالإضافة لذلك لابد من الإشارة لعملية تفريق الكسور كونها من أهم التطبيقات الرياضية في نظم التحكم. تستعمل عملية تفريق الكسور في تبسيط التوابع الكسرية للحصول على الأقطاب والرواسب, حيث يعطى عادة التابع الكسري من هذه النماذج بدلالة المتحول (s) لابلاس. ويتم ذلك بالاستفادة من التابع residue.



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

إيجاد حل معادلة من الشكل sqrt(x^2+y^2) كما يلي :

>> syms x y

>> s = x + y;

>> r = sqrt(x^2 + y^2);

إيجاد سلسلة تايلور للتابع الأسي :

>> syms x
>> f = exp(x);
>> taylor(f,4)


وأخيراً : نتمنى لكم المتعة والفائدة