آموزش برنامه نویسی متلب
موضوع:ادامه محاسبات نمادین در متلب
جلسه:بیستم(آخر)
مدرس : پدرام مشهدی زاده
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه [اینجا کـــــلیک کــــنید]
جلسه نوزدهم به مباحث ابتدایی محاسبات نمادین پرداختیم. هم چنین راه های تعریف یک تابع نمادین و نحوه محاسبه این توابع به ازای مقادیر مختلف را یادگرفتیم. این جلسه به ادامه مباحث جلسه گذشته و علمیات های ریاضی روی توابع از جمله حد و مشتق و انتگرال میپردازیم.
برای درک بهتر اینکه محاسبات نمادین متلب به مبحث تبدیل مقادیر عددی به نمادین می-پردازیم. فرض کنیم یک بردار a مانند زیر تعریف کرده باشیم. با دستور sym() این بردار را می-توان به یک بردار نمادین تبدیل کرد:
>>a = 1:10 >>sym(a) ans = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] |
تک تک عناصر بردار a به صورت نمادین درمی آیند. اما اگر این مقادیر به صورت اعشاری باشند متلب برای تبدیل آنها به متغیر نمادین نزدیک ترین مقدار به آن را تخمین میزند. به مثال زیر توجه کنید:
>> a = pi a = 3.1416 >> sym(a) ans = pi >> a = 2/3 a = 0.6667 >> sym(a) ans = 2/3 |
sym(a,’e’) مقدار خطای حاصل، یعنی اختلاف بین مقدار تخمین زده شده و مقدار واقعی را برمیگرداند:
>> sym(a,'e') ans = 2/3 - eps/6 |
- ماتریس نمادین:
با دستور sym میتوان به شکل زیر ماتریسی از نمادها را ایجاد کرد:
>> A = sym('m',[2 3]) A = [ m1_1, m1_2, m1_3] [ m2_1, m2_2, m2_3] |
A نام ماتریس بوده و ‘m’ نام درایه ها و [2 3] ابعاد ماتریس مدنظر است. با این دستور نام هر درایه به طور خودکار تعیین میشود. مانند دستورات ماتریس عددی میتوان با درایه-های این ماتریس عمل نمود:
>> A(1) ans = M1_1 >> A(:) ans = m1_1 m2_1 m1_2 m2_2 m1_3 m2_3 |
بنابراین میتوان به راحتی به این درایه ها مقادیر موردنظر را تخصیص داد.
- diff(expr) :
از عبارت expr به طور نمادین مشتق میگیرد.
>> syms x y >> diff(3*x^2) ans = 6*x >> diff(sin(x)) ans = cos(x) |
- diff(expr,var) :
اگر expr برحسب بیش از یک متغیر باشد میتوان مشتق جزئی آن را برحسب متغیر موردنظر v گرفت:
>> diff(x^2+2*x*y+y^2,y) ans = 2*x + 2*y |
- diff(…,n) :
اگر با آرگومان های بالا به کار رود، مشتق مرتبه nام را برمی گرداند:
>> diff(sin(x),2) ans = -sin(x) >> diff(x^2+2*x*y+y^2,y,2) ans = 2 |
- int(expr,v) :
انتگرال نامعین عبارت expr را نسبت به متغیر v اخذ میکند.
>> int(cos(x)) |
- int(expr,v,a,b) :
انتگرال را مشابه قبل از a تا b اخذ میکند. a و b میتوانند
یک عدد یا عبارت نمادین که شامل inf و –inf نیز هست، باشند.
>> int(exp(-x),0,inf) ans = 1 >>int(sin(y),y,x,1) ans = cos(x) - cos(1) |
- symsum(expr) :
اگر expr بیانگر جملات یک سری باشد، مجموع جملات آن را از 0 تا n-1 محاسبه میکند:
>> syms n >> symsum(n+1) ans = n^2/2 + n/2 |
برای این که مجموع جملات حسابی از 1 تا n را حساب کنیم، به جای expr، n+1 گذاشتیم، که حاصل همان مقدار مورد انتظار n (n+1)/2 گردید.
- symsum(expr,a,b) :
مقادیر a و b محدوده محاسبه سری expr را بیان میکنند:
>> symsum(1/n^2,1,inf) ans = pi^2/6 |
- symsum(expr,v) :
مجموع سری expr که برحسب بیش از یک متغیر بیان شده است را به ازای v از 0 تا v-1 حساب میکند.
>>syms n k >>symsum(n^k/sym('k!'),k,0,inf) ans = exp(n) |
- نکته: برای محاسبه فاکتوریل میتوان از sym(‘k!’) استفاده کرد.
- solve(eqn) :
معادله eqn را که یک معادله جبری است، حل میکند. مثال:
>> solve( x == sin(x)) ans = 0 |
این دستور به شکل زیر نیز میتواند به کار رود:
>>solve(x-sin(x)) |
هرگاه عبارت سمت راست نداشته باشد، به طور پیش فرض معادله را برای حالت مساوی با 0 حل میکند.
- مثال: به دست آوردن ریشه های چندجمله ای معادله زیر:
(x-2)(x+1)=0 >> solve( (x-2)*(x+1) ) ans = 2 -1 |
- solve(eqn,var) :
متغیری که قرار است برحسب آن معادله حل شود، توسط آرگومان var تعیین شده در غیر این مانند حالات قبل یک مقدار پیش فرض را انتخاب میکند.
-مثال: حل معادله زیر:
(ax^2+bx+c=0) >> syms a b c x >> solve(a*x^2+b*x+c) ans = -(b + (b^2 - 4*a*c)^(1/2))/(2*a) -(b - (b^2 - 4*a*c)^(1/2))/(2*a) >> pretty(ans) +- -+ | 2 1/2 | | b + (b - 4 a c) | | -------------------- | | 2 a | | | | 2 1/2 | | b - (b - 4 a c) | | -------------------- | | 2 a | +- -+ |
- assume() :
در حل معادلات میتوان فرض هایی را برای متغیر دلخواه خود درنظر بگیریم. برای مثال اگر بخواهیم معادله ای را به ازای تنها مقادیر مثبت x حل کنیم، باید فرض مثبت بودن x را برای متلب تعریف کنیم. برای این منظور به طریق زیر عمل میکنیم:
معادله زیر را درنظر بگیرید:
(x-2)(x+1)=0,x>0 >>syms f(x) >>f(x) = (x-1)*(x+2); >>assume(x>0) >>solve(f,x) ans = 1 |
شرط فرضی برای متغیرهای نمادین، هنگام تعریف آنها از طریق دستور sym() یا syms نیز امکان پذیر است:
>> syms x 'positive' >> sym('x','real') - assumeAlso(var,’’) : |
شرط های ثانویه به بعد را میتواند به یک متغیر اضافه کند:
>> syms f(x) >> f(x) = (x-1)*(x+2); >> assume(x>0) >> solve(f,x) ans = 1 >> f(x) = (x-1)*(x+2)*(x-.5); >> solve(f,x) ans = 1 1/2 >> assume(x,'integer') >> solve(f,x) ans = 1 -2 >> assumeAlso(x>0) >> solve(f,x) ans = 1 - assumptions : |
فرضیات تعریف شده را برمی گرداند:
>> assumptions ans = [ 0 < x, x in Z_] |
پیروز و موفق باشید
جلسه بیستم(آخر) | ادامه محاسبات نمادین در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690