جلسه 3.1
2.بررسی Diff:
هشدار:حروف کوچک و بزرگ در این زبان خیلی باهم فرق دارن!
-اگر بنویسم :
Diff(sin(x)*exp(x), x)
در صفحه ی نمایش فقط شکل اون دیفرانسیل رو نشون میده ولی هیچ مشتقی نمیگیره.
-اگر بنویسم
diff(sin(x)*exp(x), x)
مشتق رو حساب میکنه و جواب رو در خروجی نشون میده:
cos(x)*exp(x)+sin(x)*exp(x)
میتونستم تابع رو اول تعریف کنم . و بعد بدم داخل دیفرانسیل. اینطوری:
f := sin(x)*exp(x); diff(f, x);
نکته:
unapply(f,x)
برای میپل مشخص میکنه که متغییر تابع من x است. ولی چون در دستور diff مستقیما باید پارامتر مشتق گیری رو وارد کنیم از دستور unapply برای تعریف تابعمون استفاده نکردیم.
-مشتق مرتبه های بعد:
میتونیم به این صورت مشتق مرتبه ی 2رو تعریف کنیم :
diff(diff(sin(x)*exp(x), x), x)
که جواب میده:
2*cos(x)*exp(x)
برای مشتق های بعدی هم میتونیم مثل احمق ها پشت سر هم diff بزاریم و یا از دستور زیر استفاده کنیم:
این کد نشون میده که ما از تابع داریم 15 بار نسبت به متغییر x مشتق میگیریم .
diff(sin(x)*exp(x),x$15);
-مشتق جزیی:
در مثال زیر اول 2 بار نسبت x مشتق میگیرم . بعد 2بار نسبت به y و 1بار هم نسبت به z.
diff(sin(x*z)*exp(x+y),[x$2,y$2,z]);
که جواب میده:
-cos(x*z)*x*z^2*exp(x+y)-2*sin(x*z)*z*exp(x+y)-2*sin(x*z)*x*z*exp(x+y)+2*cos(x*z)*exp(x+y)+cos(x*z)*x*exp(x+y)
-مقدار دهی در تابع مشتق:
برای تابع مشتق اسم f1 انتخاب میکنم.که بعدا بتونم راحت باهاش کار کنم.
f := sin(x*z)*exp(x+y)
f1 := diff(f, [`$`(x, 2), `$`(y, 2), z])
دستور subs برای مقدار دهیست.
f2 := subs({x = 1/2, y = 1, z = 2}, f1)
تابلویه که در یک نقطه ی خاص مشتق رو به دست آوردم. جواب میشه:
f2 := (1/2)*cos(1)*exp(3/2)-6*sin(1)*exp(3/2)
برای اینکه یک مقدار به من بده دستور evalf رو میچسبونم پشتش.
f3 := evalf(f2)
جواب نهایی: -21.41653442
----------------
خوب دیگه . خسته نباشم.