در این مطلب به بررسی نحوه محاسبه مشتق به صورت پارامتری در پایتون و همچنین نحوه محاسبه مشتق در پایتون به صورت عددی و با مثالهای متنوع میپردازیم!
مثال: تصویر زیر رو در نظر بگیرید تا با هم صحبت کنیم!
همینطور که میبینید یک تابع رو نوشتیم و بعد اومدیم مشتقش رو هم جلوش به صورت دستی حساب کردیم!
حالا در ادامه میخوایم ببینیم آیا پایتون هم به حدی از شعور رسیده که بتونه مشتق رو به این خوبی حساب کنه یا نه؟! برای همین، قطعه کد زیر رو در نظر بگیرید تا در موردش توضح بدم!
import sympy as sp
x= sp.Symbol('x')
print( sp.diff( 5*(x**3) + sp.log(x) ) )
در خط اول که اومدیم پکیج sympy رو وارد برنامه کردیم با نام مستعار sp ! شاید بپرسید «نام مستعار» دیگه چه صیغهای است؟! درواقع چون حوصله نداریم در طووول برنامه اسم sympy رو صدا بزنیم! یک اسم کوتاهتر براش در نظر میگیریم تا صدا زدنش آسوونتر باشه!
نکته: پکیج sympy رو باید نصب کنید! برای آموزش نصب پکیج های مختلف در پایتون مراجعه کنید به مطلب زیر!
آموزش نصب پکیج های مختلف در پایتون !
در خط دوم داریم یک متغیر تعریف میکنیم به اسم x ! یه چیزی حواسمون باشه! اینکه ما میخوایم به صورت پارامتری (به صورت سمبولیک symbolic) برامون حل کنه! یعنی نمیخوایم تَهِش بیاد مشتق رو در یک نقطه حساب کنه! بلکه میخوایم مشتق رو بیاد به صورت پارمتری و برحسب x حساب کنه! پس باید اول به پایتون بفهمونیم که باید برای خودش x رو به عنوان یک «سمبول» (یا همون symbol) در نظر بگیره (اگر اینکار رو نکنیم، نمیتونیم به صورت پارامتری مشتق بگیریزم!)!
پس در خط دوم داریم میگیم از پکیج sympy (اون sp نام مستعار sympy بود دیگه!) از تابع Symbol استفاده کن برای ساخت x به عنوان یک سمبول! (تا بتونه به صورت پارامتری باهاش کار کنه!)
در خط آخر هم داریم میگیم پرینت کن یه چیزی رو! حالا شاید بپرسید چه چیزی رو؟! در واقع داریم از پکیج sympy و از تابع diff (مخففف differentiate به معنی مشتق گرفتن!) استفاده میکنیم واسه مشتق گرفتن از عبارتی که توووی پرانتزِ تابع diff نوشتیم! و اون چیزی که هم که توووی پرانتز تابع diff نوشتیم، درواقع همون عبارتی است که توی تصویر بالا داشتیم!
نکته: باید حواسمون باشه که اووون چیزی که ما بهش میگیم Ln در عموم نرمافزارها و زبانهای برنامه نویسی با log نشون داده میشه! پس اووون log یعنی همووون Ln خودمون!
خروجی کد بالا هم به صورت زیر خواهد بود!
15*x**2 + 1/x
این هم ازاین!
تذکر جدی! اگر یه وقتی خدایی نکرده بیاید برای تابع log در کد بالا، از پکیجی مثلاً مثل numpy یا math و امثال اینها استفاده کنید! یک خطای خوشگل دریافت میکنید! چرا؟! چون این sympy توانایی کار به عبارات پارامتری رو داره! هر پکیجی که عُرضه این کارها رو نداره که! پس حواستون باشه که مثلاً قطعه کد زیر قطعاً خطا میده!
import sympy as sp
import numpy as np
x= sp.Symbol('x')
print( sp.diff( 5*(x**3) + np.log(x) ) )
پس دوباره تاکیدی میکنم که به دلیلی که در بالا توضیح دادم، کد بالا حتماً خطا میده! حواستون به این تذکر باشه!
مثال: برای محاسبه مشتق به صورت عددی، دوباره همون مثالی که در قسمت پارامتری گفتیم رو در نظر بگیرید!
حالا در ادامه قطعه کد زیر رو هم در نظر بگیرید تا بعدش توضیحات رو شروع کنیم!
from scipy.misc import derivative
import numpy as np
def f(x):
return 5*(x**3) + np.log(x)
print( derivative(f,1,dx=0.0001) )
در خط اول داریم میگیم از پکیج scipy و سابپکیج misc (مخفف لغت miscellaneous به معنی «مختلف، گوناگون»!) داریم deravative (به معنی مشتق!) رو وارد برنامه میکنیم!
توجه کنید که اگر دارید تعجب میکنید که این نوع وارد کردن پکیچها باز چه نوعشه! یعنی یک سری پیشنیازها رو بلد نیستید و باید به مطلب زیر مراجعه کنید!
پکیج و راه های مختلف وارد کردن آن در پایتون
در ادامه در خط 2و3 داریم تابعی تعریف میکنیم به اسم f که درواقع همون تابعی است که در عکس داشتیم و قرار بود ازش مشتق بگیریم!
آموزش تعریف تابع در پایتون با دستور def
در خط آخر هم داریم با اووون derivative، مشتق تابع f رو در نقطهی 1 حساب میکنیم! شاید بپرسید اووون dx=0.0001 چیه باز؟! جواب اینه که توووی محاسبه مشتق به روش عددی، این پکیج sympy میاد از یک الگوریتمی واسه خودش استفاده میکنه (برای محاسبه مشتق عددی)! و هرچی اووون dx کوچکتر باشه، جواب دقیقتری بهمون میده! و مثلاً در همین مثال اگر dx=1 در نظر بگیرید چنان جواب پَرت و اشتباهی بهتون میده که خودتون هم تعجب میکنید! پس حواستون به این dx هم باشه!
تعداد دیدگاه | 4 |
تعداد بازدید | 15.9K |
تاریخ انتشار | 01/05/2020 |
تاریخ بروزرسانی | 24/11/2020 |
نویسنده | گروه آموزشی کولاک |