مشخصات مقاله
-
2028
-
0.0
-
43078
-
0
-
0
دستورات مشتق
Differential
دستورات مشتق
متلب برای مشتق گیری از دستور diff استفاده می کند.
مثال
می خواهیم مشتق تابع f(t) = 3t2 + 2t-2 را در متلب محاسبه کنیم. یک فایل اسکریپت ایجاد کرده و کد های زیر را در آن می نویسیم.
syms t
f = 3*t^2 + 2*t^(-2);
diff(f)
وقتی کد بالا را اجرا می کنیم نتیجه به صورت زیر نمایش داده می شود.
ans =
6*t - 4/t^3
عبارت زیر هم ارز کد نویسی در Octave می باشد.
pkg load symbolic
symbols
t = sym("t");
f = 3*t^2 + 2*t^(-2);
differentiate(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) به صورت 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
قانون چهارم
اگر f و g دو تابع و f' و g' به توتیب مشتق این دو تابع باشند، آنگاه قانون مشتق تقسیم دو تابع به صورت زیر می باشد.
(f/g)' = (f'.g - g'.f)/g2
قانون پنجم
در قانون چند جمله ای ها اگر y = f(x) = xn آنگاه f' = n. x(n-1).
مشتق هر عدد ثابت برابر صفر می باشد یعنی اگر y = k باشد آنگاه f' = 0.
قانون ششم
در قانون زنجیره ای، مشتق تابع به صورت 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)
بعد از اجرا، نتیجه به صورت زیر نوشته می شود.
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)
بعد از اجرا، نتیجه به صورت زیر نوشته می شود.
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.ln c.a (ln is natural logarithm) |
|
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), or 1/cos2(x), or 1 + tan2(x) |
|
cot(x) |
-csc2(x), or -1/sin2(x), or -(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)
متلب کد های بالا را اجرا کرده و به صورت زیر نمایش می دهد.
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)
% symbolic packages does not have this support
%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)
محاسبه مشتق مراتب بالاتر
برای محاسبه مشتقات مراتب بالاتر تابع f(x) از سینتکس diff(f,n) استفاده می کنیم.
مثال
مشتق دوم تابع f(x) = x .e-3x را در متلب بدست آورید.
f = x*exp(-3*x);
diff(f, 2)
متلب بعد از اجرای کد بالا، عبارت زیر را به عنوان نتیجه بر می گرداند.
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); % defining the function
lhs = diff(y,2)+y; %evaluting the lhs of the equation
rhs = -5*cos(2*x); %rhs of the equation
if(isequal(lhs,rhs))
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
نتیجه اجرای عبارت بالا به صورت زیر است.
No, the equation does not hold true
Value of LHS is:
-168*cos(5*x)
هم ارز کد های بالا در Octave به صورت زیر می باشد.
pkg load symbolic
symbols
x = sym("x");
y = 3*Sin(x)+7*Cos(5*x); % defining the function
lhs = differentiate(y, x, 2) + y; %evaluting the lhs of the equation
rhs = -5*Cos(2*x); %rhs of the equation
if(lhs == rhs)
disp('Yes, the equation holds true');
else
disp('No, the equation does not hold true');
end
disp('Value of LHS is: '), disp(lhs);
Octave اجرای عبارت بالا را به صورت زیر نمایش می دهد.
No, the equation does not hold true
Value of LHS is:
-(168.0)*cos((5.0)*x)
پیدا کردن ماکزیمم و مینیمم یک منحنی
اگر می خواهیم ماکزیمم و مینیمم محلی یک منحنی را پیدا کنیم باید به بزرگترین و کوچکترین عرض نقطه روی منحنی در بازه کوچک از همان نقطه دقت کنیم.
برای تابع y = f(x) نقاطی از نمودار که شیب در آن نقاط صفر می باشد، نقاط ایستا نام دارد. به عبارت دیگر در نقاط ایستا f'(x) = 0 می باشد.
برای پیدا کردن نقاط ایستا، از تابع یک بار مشتق گرفته و برابر صفر قرار می دهیم و سپس معادله را حل می کنیم.
مثال
نقاط ایستا تابع f(x) = 2x3 + 3x2 − 12x + 17 را بیابید.
ابتدا تابع را نوشته و سپس نمودار آن را رسم می کنیم.
syms x
y = 2*x^3 + 3*x^2 - 12*x + 17; % defining the function
ezplot(y)
متلب کد را اجرا کرده و به صورت زیر نتیجه را بر می گرداند.
هم ارز کد بالا در 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; % defining the function
ezplot(y, [-2, 2])
متلب برنامه بالا را اجرا کرده و نتیجه زیر را بر می گرداند.
کد 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)
متلب برنامه بالا را اجرا کرده و نتیجه زیر را بر می گرداند.
g =
6*x^2 + 6*x - 12
کد زیر هم ارز کد بالا در Octave می باشد.
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)
متلب کد بالا را اجرا کرده و نتیجه به صورت زیر خواهد بود.
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
بنابراین نقاط بحرانی تابع، x = 1, -2 می باشد.می توان با استفاده از دستور subs مقدار یک نماد را عوض کرد.
subs(y, 1), subs(y, -2)
متلب عبارت بالا را به صورت زیر برمی گرداند.
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) = 2x3 + 3x2 − 12x + 17 در بازه [-2,2] اعداد 10 و 37 می باشد.
حل معادلات دیفرانسیل
با دستور dsolve، می توان معادله دیفرانسیل را حل کرد. حالت اصلی دستور dsolve به صورت زیر می باشد.
dsolve('eqn')
eqn رشته متنی می باشد که باید معادله را به جای آن نوشت.
در متلب جواب این معادلات با ضرایب ثابت C1 و C2 و مانند آن نشان می دهد.
می توان برای معادلات شرایط مرزی و اولیه قرار داد.
dsolve('eqn','cond1', 'cond2',…)
به عنوان مثال معادله f'(t) = -2*f + cost(t) را به صورت زیر تعریف می کنیم.
'Df = -2*f + cos(t)'
همچنین برای مشتق مرتبه بالاتر معادله، به عنوان مثال معادله f"(x) + 2f'(x) = 5sin3x به صورت زیر نوشته می شود.
'D2y + 2Dy = 5*sin(3*x)'
مثال
معادله دیفرانسیل y' = 5y را حل کنید.
s = dsolve('Dy = 5*y')
متلب عبارت بالا را اجرا کرده و نتیجه زیر را بر می گرداند.
s =
C2*exp(5*t)
مثال
معادله مرتبه دوم با شرایط اولیه زیر را حل کنید.
y" - y = 0, y(0) = -1, y'(0) = 2
کد مربوط را در متلب به صورت زیر می نویسیم.
dsolve('D2y - y = 0','y(0) = -1','Dy(0) = 2')
نتیجه عبارت بالا در متلب به صورت زیر می باشد.
ans =
exp(t)/2 - (3*exp(-t))/ 2
تعداد رای ها: 25
تعداد نظرات: 7