مشتقگیری در متلب
مشتقگیری به عنوان یکی از مباحث بنیادی در ریاضیات، نقش اساسی در تحلیل و مدلسازی پدیدههای مختلف دارد. این عملیات ریاضی در بسیاری از حوزههای مهندسی، فیزیک، اقتصاد و سایر علوم به کار میرود. نرمافزار متلب، با ارائه دستورات متنوعی برای محاسبه مشتق، امکان انجام محاسبات پیچیده را به شکلی ساده فراهم میکند.
در این مقاله از مگ پروژستان انواع مشتق گیری در متلب را توضیح داده و دستورات و کدهای هر یک از آنها را آورده ایم. علاوه بر این خروجی هر کد را هم قرار داده ایم تا بتوانید با نحوه کار کدها بهتر آشنا شوید. مطالعه این مقاله به شما کمک میکند پروژه هایی که مشتق گیری در آنها وجود دارد را بتوانید انجام دهید. در صورتی که به دنبال آموزش های بیشتر از متلب هستید، ما در پروژستان علاوه بر انجام پروژه متلب، محتواها و آموزش های زیادی از متلب را در مگ قرار داده ایم.
مشتق یک تابع، نرخ تغییرات آن تابع نسبت به یک متغیر خاص را نشان میدهد. به عنوان مثال، مشتق تابعf(x) نسبت به x به صورت df/dx نمایش داده میشود. قوانین پایهای مشتقگیری شامل جمع و تفریق توابع، ضرب و تقسیم، زنجیرهای (chain rule)، و مشتقهای ضمنی (implicit differentiation) هستند. هر یک از این دستورات خاص در متلب به مهندسان و محققان کمک میکند تا مشتقهای مختلفی را در مسائل پیچیده به کار گیرند. با استفاده از این دستورات، میتوان به راحتی مسائل بهینهسازی، تحلیل حساسیت و مدلسازی را حل کرد. همچنین، بررسی مشتقهای بالاتر و مشتقهای جزئی در مسائل چندمتغیره، بهخصوص در مهندسی، اهمیت بالایی دارد.
دستورdiff برای مشتقگیری نمادین در متلب کاربرد دارد که برای مشتقگیری توابع یکمتغیره و چندمتغیره استفاده میشود. متلب ابزارهای متعددی برای محاسبات نمادین دارد که یکی از آنها Symbolic Math Toolbox است. دستور diff میتواند برای محاسبه مشتقهای بالاتر نیز به کار رود.
ساختار استفاده از دستور diff به صورت زیر است:
توضیح | دستور |
معرفی متغیرها به صورت نمادین | syms x y |
تعریف تابع (همانند تابع روبرو) | f= x + y; |
تعیین مرتبه مشتق گیری | n=2; |
نوشتن دستور diff و تعیین متغیر مشتق گیری | diff(f, x, n) |
مطابق جدول فوق و به عنوان مثال، مشتق دوم و سوم یک تابع نسبت به متغیر x را میتوان به ترتیب با diff(f, x, 2) وdiff(f, x, 3) محاسبه کرد.
لازم به ذکر است در صورت عدم نوشتن مقدار n بصورت پیشفرض مشتقگیری مرتبه اول انجام می شود. همچنین در صورت عدم تعیین متغیر جهت مشتق گیری، در تابع یک پارامتری نسبت به ان پارامتر و در صورت وجود چند پارامتر نسبت به x محاسبه مینماید.
در مواردی که تابع به صورت صریح در دسترس نیست، از روشهای عددی برای تقریب مشتق استفاده میشود. دستورgradient در متلب برای تقریب مشتق عددی به کار میرود و برای دادههای عددی کاربرد گستردهای دارد. همچنین، دستور jacobian برای محاسبه ماتریس ژاکوبی یک تابع برداری استفاده میشود. این ماتریس شامل مشتقهای جزئی هر مؤلفه تابع نسبت به هر متغیر است و دستورcurl برای محاسبه چرخش (curl) یک میدان برداری در متلب استفاده میشود. این عملیات در فیزیک و مهندسی کاربردهای گستردهای دارد.
مشتقهای جزئی در تحلیل و مدلسازی مسائل چندمتغیره نقش اساسی دارند. در مسائل پیچیده، تحلیل حساسیت با استفاده از مشتقهای جزئی به بررسی تاثیر تغییرات متغیرها بر خروجی سیستم میپردازد. این نوع مشتقگیری برای بررسی تاثیر یک متغیر بر تابع در حالی که سایر متغیرها ثابت نگه داشته میشوند، استفاده میشود.
همچنین مشتقها به طور گسترده در مسائل بهینهسازی برای یافتن نقاط ماکزیمم و مینیمم به کار میروند. مشتق اول برای یافتن نقاط بحرانی و مشتق دوم برای تعیین ماهیت این نقاط (ماکزیمم، مینیمم یا نقطه عطف) استفاده میشود. هر یک از دستورات مشتقگیری در متلب برای کاربردهای خاصی طراحی شدهاند. این دستورات در عین حال که هدفهای مختلفی را دنبال میکنند، میتوانند در شرایط خاص جایگزین یکدیگر نیز شوند. مثلاً در برخی موارد میتوان از diff برای محاسبه مشتقهای جزئی به جای jacobian استفاده کرد.
برای مشتقگیری نمادین توابع یکمتغیره و چندمتغیره | diff |
برای مشتقگیری عددی، به ویژه در مجموعه دادهها | gradient |
برای محاسبه مشتقهای جزئی و ماتریس ژاکوبی | jacobian |
برای محاسبه چرخش یک میدان برداری | curl |
مثال1- مشتق گیری مرتبه اول
clc; clear; close all;
syms x
f = x^3 + 2*x^2 + x;
df = diff(f, x)
خروجی:
df = 3*x^2 + 4*x + 1
توضیح: در این کد، ابتدا متغیر x به صورت نمادین با دستور syms تعریف میشود. سپس تابع f به صورت نمادین تعریف شده و مشتق آن نسبت به x محاسبه میشود.
مثال 2- مشتقگیری مرتبه دو
clc; clear; close all
syms x
f = x^4 – 3*x^3 + 2*x^2 – x + 5;
df = diff(f, x, 2);
disp(df)
خروجی:
12*x^2 – 18*x + 4
توضیح: در این کد، ابتدا متغیر x به صورت نمادین تعریف شده و سپس تابع چندجملهای f ایجاد میشود. مشتق این تابع با استفاده از دستور diff نسبت به x محاسبه میشود.
مثال 3- محاسبه مشتقهای بالاتر
clc; clear; close all
syms x
f = sin(x);
df2 = diff(f, x, 2);
df3 = diff(f, x, 3);
disp(df2)
disp(df3)
خروجی:
-sin(x)
-cos(x)
توضیح: در این مثال، مشتقهای دوم و سوم تابع سینوس محاسبه و نمایش داده میشود.
مثال 4- مشتقگیری عددی با دستورgradient
clc; clear; close all
x = 0:0.1:10;
y = sin(x);
dy = gradient(y, 0.1);
plot(x, dy);
title(‘numerical derivative using gradient’)
خروجی:
توضیح: در این کد، مشتق عددی تابع سینوسی محاسبه و رسم میشود. دستور gradient به طور تقریبی مشتق تابع را با استفاده از روش تفاضل مرکزی محاسبه میکند.
مثال 5- مشتقهای جزئی از یک تابع دو متغیره
clc; clear; close all
syms x y
f = x^2*y + sin(x*y);
df_dx = diff(f, x);
df_dy = diff(f, y);
disp(df_dx)
disp(df_dy)
خروجی:
2*x*y + y*cos(x*y)
x*cos(x*y) + x^2
توضیح: در این کد، مشتقهای جزئی تابع f نسبت به x وy محاسبه میشوند.
مثال 6- محاسبه نقاط عطف
clc; clear; close all
syms x
f = x^4 – 4*x^3 + 6*x^2 – 4*x;
critical_points = solve(diff(f, x) == 0, x)
خروجی:
critical_points =
1
1
1
توضیح: این کد نقاط بحرانی تابع f را که نشاندهنده نقاط ماکزیمم، مینیمم یا نقاط عطف هستند محاسبه میکند.
مثال 7- محاسبه ماتریس jacobina
clc; clear; close all
syms x y
f = [x^2 + y^2; x*y + y];
J = jacobian(f, [x, y]);
disp(J)
خروجی:
[ 2*x, 2*y]
[ y, x + 1]
توضیح: در این مثال، تابع برداریf شامل دو مؤلفه تعریف شده و ماتریس ژاکوبی آن نسبت به متغیرهایx و y محاسبه میشود.
مثال 8- محاسبه چرخش یک میدان برداری با دستور curl
clc; clear; close all
syms x y z
f = [y*z; x*z; x*y];
c = curl(f, [x, y, z]);
disp(c)
خروجی:
0
0
0
توضیح: در این کد، میدان برداریF تعریف شده و چرخش آن نسبت به مختصات x، y و z محاسبه میشود.
مثال 9- بهینهسازی و یافتن نقاط بحرانی و بررسی آنها
برای تغییر این متن بر روی دکمه ویرایش کلیک کنید. لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است.
clc; clear; close all
syms x
f = x^3 – 6*x^2 + 9*x + 15;
critical_points = solve(diff(f, x) == 0, x);
second_deriv = diff(f, x, 2);
disp(critical_points)
disp(subs(second_deriv, x, critical_points))
خروجی:
1
3
-6
6
توضیح: در این مثال، نقاط بحرانی تابع f محاسبه و سپس مشتق دوم در این نقاط برای تعیین ماهیت آنها ارزیابی میشود.
مثال 10- تحلیل حساسیت یک تابع
clc; clear; close all
syms x y z
f = x^2 + y*z + exp(x*y);
df_dx = diff(f, x);
df_dy = diff(f, y);
df_dz = diff(f, z);
disp(df_dx)
disp(df_dy)
disp(df_dz)
خروجی:
2*x + y*exp(x*y)
z + x*exp(x*y)
y
توضیح: در این کد، مشتقهای جزئی یک تابع سهمتغیره نسبت به هر یک از متغیرها محاسبه و نمایش داده میشود.


