English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
يقدم 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.x | ca.x.lnc.a(الناتج الطبيعي هو الصفر) |
ex | ex |
ln x | 1/x |
lncx | 1/x.ln c |
xx | xx(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