English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

التفاضل في MATLAB

يقدم MATLABمشتقةأمر لتحليل المشتقات السيميولوجية. في أبسط شكل، يتم تقديم الدالة التي يتم التفرقة فيها كمعامل للإمرار diff.

على سبيل المثال، لنحسب مشتقة الدالة f(t)= 3t 2 + 2t -2

مثال على الإنترنت

أنشئ ملف سكريبت واكتب فيه التالي-

syms t
f = 3*t^2 + 2*t^(-2);
مشتقة(f)

بعد تجميع وتنفيذ الكود المذكور أعلاه، سيتم إنتاج النتيجة التالية-

ans =
6*t - 4/t^3

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
مشتقة(f,t)

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

ans =
   -(4.0)*t^(-3.0)+(6.0)*t

التحقق من قواعد الأساس

لنوضح بسرعة أنواع مختلفة من المعادلات أو القواعد المستخدمة في التفرقة ونحقق هذه القواعد. لذلك، سنكتب f'(x) للدالة الأولى阶 مشتقة، وسنكتب f“(x) للدالة الثانية阶 مشتقة.

هناك قواعد لتفرقة

القاعدة الأولى

لأي دالة f و g ولأي عدد صحيح a و b وهو مشتقة هذه الدالة

h(x) = af(x) + bg(x) عن x من

h'(x) = af'(x) + bg'(x)

القاعدة الثانية

جمعوالطرحالقاعدة تشير إلى أن إذا f و g هما函数ين، فإن f' و g' هما مشتقاتهما، فإن

=(f + g)' = f' + g'

=(f - g)' = f' - g'

القاعدة الثالثة

منتج规则指出,如果f和g是两个函数,则f'和g'分别是它们的导数,则,

=(f.g)' = f'.g + g'.f

规则四

quotient规则指出,如果f和g是两个函数,则f'和g'分别是它们的导数,则,

(f/g)' = (f'.g - g'.f)/g2

规则五

polynomial或基本的功率规则指定,如果,那么y = f(x) = xnf' = n. x(n-1)

该规则的直接结果是,任何常数的导数为零,即,如果y = k,任何常数,则

f' = 0

القاعدة السادسة

سلسلةالقاعدة تقول، بالنسبة لx، الدالة الدالة التفاضلية هي:h(x) = f(g(x))

h'(x)= f'(g(x)).g'(x)

مثال

أنشئ ملف سكريبت واكتب فيه التالي-

syms x
syms t
f = (x + 2)*(x^2 + 3)
der1 = diff(f)
f = (t^2 + 3)*(sqrt(t) + t^3)
der2 = diff(f)
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
der3 = diff(f)
f = (2*x^2 + 3*x)/(x^3 + 1)
der4 = diff(f)
f = (x^2 + 1)^17
der5 = diff(f)
f = (t^3 + 3* t^2 + 5*t -9)^(-6)
der6 = diff(f)

عند تشغيل ملف، يظهر MATLAB النتيجة التالية-

f =
   (x^2 + 3)*(x + 2)
 
   der1 =
   2*x*(x + 2) + x^2 + 3
  
f =
   (t^(1/2) + t^3)*(t^2 + 3)
 
   der2 =
   (t^2 + 3)*(3*t^2 + 1/(2*t^(1/2))) + 2*t*(t^(1/2) + t^3)
  
f =
   (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2)
  
der3 =
   (2*x - 2)*(3*x^3 - 5*x^2 + 2) - (- 9*x^2 + 10*x)*(x^2 - 2*x + 1)
 
f =
   (2*x^2 + 3*x)/(x^3 + 1)
  
der4 =
   (4*x + 3)/(x^3 + 1) - (3*x^2*(2*x^2 + 3*x))/(x^3 + 1)^2
  
f =
   (x^2 + 1)^17
  
der5 =
   34*x*(x^2 + 1)^16
  
f =
   1/(t^3 + 3*t^2 + 5*t - 9)^6
  
der6 =
   -(6*(3*t^2 + 6*t + 5))/(t^3 + 3*t^2 + 5*t - 9)^7

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
t = sym("t");
f = (x + 2)*(x^2 + 3) 
der1 = differentiate(f,x) 
f = (t^2 + 3)*(t^(1/2) + t^3) 
der2 = differentiate(f,t) 
f = (x^2 - 2*x + 1)*(3*x^3 - 5*x^2 + 2) 
der3 = differentiate(f,x) 
f = (2*x^2 + 3*x)/(x^3 + 1) 
der4 = differentiate(f,x) 
f = (x^2 + 1)^17 
der5 = differentiate(f,x) 
f = (t^3 + 3* t^2 + 5*t -9)^(-6) 
der6 = differentiate(f,t)

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

f =
(2.0+x)*(3.0+x^(2.0))
der1 =
3.0+x^(2.0)+(2.0)*(2.0+x)*x
f =
(t^(3.0)+sqrt(t))*(3.0+t^(2.0))
der2 =
(2.0)*(t^(3.0)+sqrt(t))*t+((3.0)*t^(2.0)+(0.5)*t^(-0.5))*(3.0+t^(2.0))
f =
(1.0+x^(2.0)-(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))
der3 =
(-2.0+(2.0)*x)*(2.0-(5.0)*x^(2.0)+(3.0)*x^(3.0))+((9.0)*x^(2.0)-(10.0)*x)*(1.0+x^(2.0)-(2.0)*x)
f =
(1.0+x^(3.0))^(-1)*((2.0)*x^(2.0)+(3.0)*x)
der4 =
(1.0+x^(3.0))^(-1)*(3.0+(4.0)*x)-(3.0)*(1.0+x^(3.0))^(-2)*x^(2.0)*((2.0)*x^(2.0)+(3.0)*x)
f =
(1.0+x^(2.0))^(17.0)
der5 =
(34.0)*(1.0+x^(2.0))^(16.0)*x
f =
(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-6.0)
der6 =
-(6.0)*(-9.0+(3.0)*t^(2.0)+t^(3.0)+(5.0)*t)^(-7.0)*(5.0+(3.0)*t^(2.0)+(6.0)*t)

指数,对数和三角函数的导数

下表提供了常用的指数,对数和三角函数的导数-

الظاهرة
ال导数
ca.xca.x.lnc.a(الناتج الطبيعي هو الصفر)
exex
ln x1/x
lncx1/x.ln c
xxxx(1 + ln x)
sin(x)cos(x)
cos(x)-sin(x)
tan(x)sec2(x)، أو 1/cos2(x)، أو 1 + tan2(x)
cot(x)-csc2(x), أو -1/sin2(x), أو -(1 + cot2(x))
sec(x)sec(x).tan(x)
csc(x)-csc(x).cot(x)

مثال

أنشئ ملف سكريبت واكتب فيه التالي-

syms x
y = Exp(x)
diff(y)
y = x^9
diff(y)
y = Sin(x)
diff(y)
y = Tan(x)
diff(y)
y = Cos(x)
diff(y)
y = log(x)
diff(y)
y = log10(x)
diff(y)
y = sin(x)^2
diff(y)
y = cos(3*x^2 + 2*x + 1)
diff(y)
y = exp(x)/sin(x)
diff(y)

عند تشغيل ملف، يظهر MATLAB النتيجة التالية-

y =
   exp(x)
   ans =
   exp(x)
y =
   x^9
   ans =
   9*x^8
  
y =
   sin(x)
   ans =
   cos(x)
  
y =
   tan(x)
   ans =
   tan(x)^2 + 1
 
y =
   cos(x)
   ans =
   -sin(x)
  
y =
   log(x)
   ans =
   1/x
  
y =
   log(x)/log(10)
   ans =
   1/(x*log(10))
 
y =
   sin(x)^2
   ans =
   2*cos(x)*sin(x)
 
y =
   cos(3*x^2 + 2*x + 1)
   ans =
   -sin(3*x^2 + 2*x + 1)*(6*x + 2)
  
y =
   exp(x)/sin(x)
   ans =
   exp(x)/sin(x) - (exp(x)*cos(x))/sin(x)^2

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
y = Exp(x)
differentiate(y,x)
y = x^9
differentiate(y,x)
y = Sin(x)
differentiate(y,x)
y = Tan(x)
differentiate(y,x)
y = Cos(x)
differentiate(y,x)
y = Log(x)
differentiate(y,x)
% symbol pack does not support this feature
% y = Log10(x)
% differentiate(y,x)
y = Sin(x)^2
differentiate(y,x)
y = Cos(3*x^2 + 2*x + 1)
differentiate(y,x)
y = Exp(x)/Sin(x)
differentiate(y,x)

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

y =
exp(x)
ans =
exp(x)
y =
x^(9.0)
ans =
(9.0)*x^(8.0)
y =
sin(x)
ans =
cos(x)
y =
tan(x)
ans =
1+tan(x)^2
y =
cos(x)
ans =
-sin(x)
y =
log(x)
ans =
x^(-1)
y =
sin(x)^(2.0)
ans =
(2.0)*sin(x)*cos(x)
y =
cos(1.0+(2.0)*x+(3.0)*x^(2.0))
ans =
-(2.0+(6.0)*x)*sin(1.0+(2.0)*x+(3.0)*x^(2.0))
y =
sin(x)^(-1)*exp(x)
ans =
sin(x)^(-1)*exp(x)-sin(x)^(-2)*cos(x)*exp(x)

حساب النسبة المئوية العالية

لحساب الدérivative المرتفعة لـ الدالة f، نستخدم نحويةdiff(f, n).

دعونا نحسب ثاني دérivative الدالة y = f(x) = x. -3x

f = x*exp(-3*x);
diff(f, 2)

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

ans =
9*x*exp(-3*x) - 6*exp(-3*x)

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
f = x*Exp(-3*x);
differentiate(f, x, 2)

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

ans =
(9.0)*exp(-(3.0)*x)*x-(6.0)*exp(-(3.0)*x)

مثال

في هذا المثال، دعونا نحل مشكلة.تمثل وظيفة معينة.سنكون مجبرين على إيجاد ما إذا كانت المعادلة صحيحة.y = f(x) = 3 sin(x) + 7 cos(5x)f" + f = -5cos(2x)

أنشئ ملف سكريبت واكتب فيه التالي-

syms x
y = 3*sin(x)+7*cos(5*x);%تعريف الدالة
lhs = diff(y, 2) + y;%تقدير lhs من المعادلة
rhs = -5*cos(2*x);%rhs من المعادلة
if(isequal(lhs,rhs))
   disp('نعم، المعادلة صحيحة');
else
   disp('لا، المعادلة ليست صحيحة');
end
disp('قيمة LHS هي:'), disp(lhs);

عند تشغيل الملف، يتم عرض النتيجة التالية-

لا، المعادلة ليست صحيحة
قيمة LHS هي: 
-168*cos(5*x)

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x);%تعريف الدالة
lhs = differentiate(y, x, 2) + y;%حساب معادلة lhs
rhs = -5*Cos(2*x);%معادلة rhs
if(lhs == rhs)
   disp('نعم، المعادلة صحيحة');
else
   disp('لا، المعادلة ليست صحيحة');
end
disp('قيمة LHS هي:'), disp(lhs);

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

لا، المعادلة ليست صحيحة
قيمة LHS هي: 
-(168.0)*cos((5.0)*x)

البحث عن القيم القصوى والنقوى للخط

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

للمعادلة y = f(x)، النقاط التي لها ميل صفر في الرسم البياني تُسمىstationary pointsنقاط التوازن/النقاط الحرجة). بمعنى آخر، النقاط الثابتة هي f'(x) = 0.

للعثور على نقاط التوازن للوظيفة التي نحسبها، يجب علينا إعداد النسبة المئوية و حل المعادلة.

مثال

دعونا نجد النقاط الثابتة للوظيفة f(x) = 2x 3 + 3x 2 - 12x + 17

اتبع الخطوات التالية-

دعونا ندخل الوظيفة ونرسم رسمها.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % تعريف الوظيفة
ezplot(y)

يتم تنفيذ الكود بواسطة MATLAB ويتم إرجاع الرسم التالي-

هذا هو الكود المقابل لـ Octave للنموذج السابق-

pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y)
print -deps graph.eps

هدفنا هو العثور على القيم الذاتية القصوى والنقاط القصوى على الرسم البياني، لذا دعونا نجد القيم الذاتية القصوى والنقاط القصوى في نطاق [-2،2] للوظيفة.

syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % تعريف الوظيفة
ezplot(y, [-2, 2])

يتم تنفيذ الكود بواسطة MATLAB ويتم إرجاع الرسم التالي-

هذا هو الكود المقابل لـ Octave للنموذج السابق-

pkg load symbolic
symbols
x = sym('x');
y = inline("2*x^3 + 3*x^2 - 12*x + 17");
ezplot(y, [-2, 2])
print -deps graph.eps

لنحسب النسبة المئوية الآن.

g = diff(y)

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

g =
   6*x^2 + 6*x - 12

هذا هو المعدل الترددي للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

g =
   -12.0+(6.0)*x+(6.0)*x^(2.0)

دعونا نحل وظيفة النسبية g والحصول على القيم التي تصبح فيها صفرًا.

s = solve(g)

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

s =
   1
   -2

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)
roots([6, 6, -12])

يتم تنفيذ الكود بواسطة Octave ويتم إرجاع النتائج التالية-

g =
-12.0+(6.0)*x^(2.0)+(6.0)*x
ans =
  -2
   1

وهذا يتطابق مع رسمنا، لذا دعونا نقوم بحساب وظيفة f عند النقاط الحرجة x = 1, -2.

subs(y, 1), subs(y, -2)

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

ans =
   10
ans =
   37

هذا هو المكافئ لـ Octave للعمليات السابقة-

pkg load symbolic
symbols
x = sym("x");
y = 2*x^3 + 3*x^2 - 12*x + 17;
g = differentiate(y, x)
roots([6, 6, -12])
subs(y, x, 1), subs(y, x, -2)
ans =
   10.0
ans =
   37.0-4.6734207789940138748E-18*I

لذلك، القيمة الأدنى والقيمة الأعلى للوظيفة f(x) = 2x 3 + 3x 2 - 12x + 17، في نطاق [-2,2] يساوي 10 و 37.

حل المعادلات التفاضلية

يقدم MATLABdsolveهو الأمر المستخدم لحل المعادلات التفاضلية.

dsolveأبسط شكل للبحث عن حل معادلة واحدة هو الأمر

dsolve('eqn')

حيثeqnهي نصوص نصية تستخدم لتحديد المعادلة.

يرجع إلى مجموعة من الكسور التفاضلية غير المعروفة، ويقوم MATLAB بتمييزها بكتابة C1،C2،الخ.

يمكنك أيضًا تحديد الشروط الأولية والحدودية للمشكلة كقائمة منفصلة بعد المعادلة بالكلمات المفردة المفصولة بالكلمات المفردة، كالتالي-

dsolve('eqn','cond1', ..., 'cond2')

لغرض استخدام الأمر dsolve، يتم تمثيل الدوال التفاضلية بأحرف D. على سبيل المثال، يجب إدخال المعادلة f'(t)= -2 * f + cost(t) كالتالي-

'Df = -2*f + cos(t)'

يتم تمثيل الدوال العالية الدرجة بعدة أرقام بعد D.

على سبيل المثال، يجب إدخال المعادلة f“(x)+ 2f'(x)= 5sin3x كالتالي-

'D2y + 2Dy = 5*sin(3*x)'

لنأخذ مثالا بسيطا على معادلة تفاضلية خطية: y'= 5y.

s = dsolve('Dy = 5*y')

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

s =
   C2*exp(5*t)

لنأخذ مثالا آخر على معادلة تفاضلية ثنائية الدرجة: y”-y = 0،y= -1،y'= 2.

dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')

تنفيذ MATLAB للكود وإرجاع النتيجة التالية-

ans =
   exp(t)/2 - (3*exp(-t))/2