[آموزش] متغیرها و معادلات سمبلیک در متلب

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
فهرست تاپیک:

  1. تعریف متغیرها در متلب به صورت سمبلیک
  2. دادن مقدار به متغیرهای یک معادله سمبلیک با دستور subs
  3. یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک، با دستور findsym در متلب
  4. یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک و برگرداندن آنها به صورت یک بردار، با دستور symvar در متلب


منبع: kelidestan.com
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
تعریف متغیرها در متلب به صورت سمبلیک

تعریف متغیرها در متلب به صورت سمبلیک

وقتی می گوییم در متلب یک متغیر به صورت سمبلیک تعریف شود، منظور این است که عدد خاصی را به آن متغیر نسبت نمی دهیم و تنها با نماد آن سر و کار داریم. در درس ریاضی، بسیاری از معادلات به همین صورت حل می شوند و رایجترین نمادها، دو نماد x و y می باشند.

دستور syms :

دستور syms در متلب، برای تعریف متغیرها به صورت سمبلیک به کار می رود. به عنوان مثال، اگر بخواهیم دو متغیر x و y را به صورت سمبلیک تعریف کنیم، باید اینگونه بنویسیم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y[/FONT]
[/FONT][/COLOR]
حال می توانیم معادلاتی را به صورت سمبلیک بر حسب دو متغیر x و y بنویسیم.

با مثال زیر این موضوع را بهتر توضیح می دهیم :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y
[COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]*[COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]5[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]ans[/COLOR] =
 
[COLOR=#008800]([/COLOR]x + y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]6[/COLOR][/FONT]
[/FONT][/COLOR]
نکته :

فرض کنید x و y را به صورت سمبلیک تعریف نکنیم و تنها دستور زیر را اجرا نماییم (چنانچه قبلا آن دو را در متلب تعریف کرده باشیم، باید ابتدا دستور clear all را اجرا کنیم) :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]*[COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]5[/COLOR][/FONT]
[/FONT][/COLOR]
در این صورت با پیغام خطای زیر مواجه می شویم :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]Undefined [COLOR=#0000FF]function[/COLOR] or variable [COLOR=#A020F0]'x'[/COLOR].[/FONT]
[/FONT][/COLOR]
این پیغام خطا به این دلیل است که نرم افزار متلب، به طور پیش فرض برای متغیر x و y مقدار می خواهد، مگر آنکه قبلا این دو متغیر به صورت سمبلیک تعریف شده باشند.

دستور expand :


مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y
A=[COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]2[/COLOR]
B=expand[COLOR=#008800]([/COLOR]A[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]A =
 
[COLOR=#008800]([/COLOR]x + y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]2[/COLOR]
 
 
B =
 
x^[COLOR=#3333FF]2[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x*y + y^[COLOR=#3333FF]2[/COLOR][/FONT]
[/FONT][/COLOR]
دستور factor :


مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y
A=[COLOR=#008800]([/COLOR]x+y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]2[/COLOR]
B=expand[COLOR=#008800]([/COLOR]A[COLOR=#008800])[/COLOR]
C=[COLOR=#0000FF]factor[/COLOR][COLOR=#008800]([/COLOR]B[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]A =
 
[COLOR=#008800]([/COLOR]x + y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]2[/COLOR]
 
 
B =
 
x^[COLOR=#3333FF]2[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x*y + y^[COLOR=#3333FF]2[/COLOR]
 
 
C =
 
[COLOR=#008800]([/COLOR]x + y[COLOR=#008800])[/COLOR]^[COLOR=#3333FF]2[/COLOR][/FONT]
[/FONT][/COLOR]
دستور simplify :

دستور simplify در متلب، فرمول هایی را که بر حسب متغیرهای سمبلیک هستند، تا حد ممکن ساده می کند.

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y
simplify[COLOR=#008800]([/COLOR][COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR]-y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x-y[COLOR=#008800])[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]ans[/COLOR] =
 
x^[COLOR=#3333FF]2[/COLOR] + x*y + y^[COLOR=#3333FF]2[/COLOR][/FONT]
[/FONT][/COLOR]
دستور simple :

در متلب، دستور simple نیز برای ساده تر کردن عبارت های سمبلیک به کار می رود. به مثال زیر توجه کنید :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms x y
simple[COLOR=#008800]([/COLOR][COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR]-y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x-y[COLOR=#008800])[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]simplify:
 
x^[COLOR=#3333FF]2[/COLOR] + x*y + y^[COLOR=#3333FF]2[/COLOR]
 
 
radsimp:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
simplify[COLOR=#008800]([/COLOR][COLOR=#3333FF]100[/COLOR][COLOR=#008800])[/COLOR]:
 
x^[COLOR=#3333FF]2[/COLOR] + x*y + y^[COLOR=#3333FF]2[/COLOR]
 
 
combine[COLOR=#008800]([/COLOR]sincos[COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
combine[COLOR=#008800]([/COLOR]sinhcosh[COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
combine[COLOR=#008800]([/COLOR]ln[COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
[COLOR=#0000FF]factor[/COLOR]:
 
x^[COLOR=#3333FF]2[/COLOR] + x*y + y^[COLOR=#3333FF]2[/COLOR]
 
 
expand:
 
x^[COLOR=#3333FF]3[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR] - y^[COLOR=#3333FF]3[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
combine:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
rewrite[COLOR=#008800]([/COLOR][COLOR=#0000FF]exp[/COLOR][COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
rewrite[COLOR=#008800]([/COLOR]sincos[COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
rewrite[COLOR=#008800]([/COLOR]sinhcosh[COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
rewrite[COLOR=#008800]([/COLOR][COLOR=#0000FF]tan[/COLOR][COLOR=#008800])[/COLOR]:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
mwcos2sin:
 
[COLOR=#008800]([/COLOR]x^[COLOR=#3333FF]3[/COLOR] - y^[COLOR=#3333FF]3[/COLOR][COLOR=#008800])[/COLOR]/[COLOR=#008800]([/COLOR]x - y[COLOR=#008800])[/COLOR]
 
 
collect[COLOR=#008800]([/COLOR]x[COLOR=#008800])[/COLOR]:
 
x^[COLOR=#3333FF]2[/COLOR] + y*x + y^[COLOR=#3333FF]2[/COLOR]
 
 
[COLOR=#0000FF]ans[/COLOR] =
 
x^[COLOR=#3333FF]2[/COLOR] + x*y + y^[COLOR=#3333FF]2[/COLOR][/FONT]
[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
دادن مقدار به متغیرهای یک معادله سمبلیک با دستور subs

دادن مقدار به متغیرهای یک معادله سمبلیک با دستور subs

زمانی که یک معادله را به صورت سمبلیک تعریف کنید، ممکن است بخواهید به یکی از متغیرهای معادله، مقداری دلخواه را نسبت بدهید. مثلا فرض کنید که مقدار متناظر با یک متغیر را یافته اید و می خواهید مقدار آن در معادله جایگذاری شود تا معادله ساده شده را ببینید، برای این منظور باید از دستور subs استفاده کنید. به مثال زیر توجه کنید :

مثال :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms f x y
f=[COLOR=#3333FF]2[/COLOR]*x+y^[COLOR=#3333FF]2[/COLOR]
subs[COLOR=#008800]([/COLOR]f,x,[COLOR=#3333FF]5[/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]f =
 
y^[COLOR=#3333FF]2[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x
 
 
[COLOR=#0000FF]ans[/COLOR] =
 
y^[COLOR=#3333FF]2[/COLOR] + [COLOR=#3333FF]10[/COLOR][/FONT]
[/FONT][/COLOR]
مشاهده می کنید که مقدار متغیر x در تابع f جایگذاری شده است.

نکته :

ممکن است بخواهیم برای هر دو متغیر x و y ، مقدار تعیین کنیم. نحوه استفاده از دستور subs برای این منظور، در مثال زیر شرح داده شده است :

مثال :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]syms f x y
f=[COLOR=#3333FF]2[/COLOR]*x+y^[COLOR=#3333FF]2[/COLOR]
subs[COLOR=#008800]([/COLOR]f,[COLOR=#008800][[/COLOR]x,y[COLOR=#008800]][/COLOR],[COLOR=#008800][[/COLOR][COLOR=#3333FF]5[/COLOR],[COLOR=#3333FF]2[/COLOR][COLOR=#008800]][/COLOR][COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
نتیجه :


کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]f =
 
y^[COLOR=#3333FF]2[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x
 
 
[COLOR=#0000FF]ans[/COLOR] =
 
    [COLOR=#3333FF]14[/COLOR][/FONT]
[/FONT][/COLOR]
با عبارت subs(f,[x,y],[5,2]) تعیین کرده ایم که در f ، مقدار x برابر 5 و مقدار y برابر 2 ، قرار داده شود.
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک، با دستور findsym در متلب

یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک، با دستور findsym در متلب

فرض کنید یک عبارت سمبلیک (symbolic) داریم و می خواهیم تمامی متغیرهای سمبلیک موجود در آن عبارت را نمایش بدهیم. برای این منظور، می توانیم از دستور findsym در متلب، استفاده کنیم.

به مثال زیر توجه کنید :

[h=4]مثال :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]

syms x y z
f = [COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]z[COLOR=#008800])[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x + x^[COLOR=#3333FF]4[/COLOR] + y^[COLOR=#3333FF]2[/COLOR];
findsym[COLOR=#008800]([/COLOR]f[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]ans[/COLOR] =

x,y,z[/FONT]


[/FONT][/COLOR]
 

P O U R I A

مدیر مهندسی شیمی مدیر تالار گفتگوی آزاد
مدیر تالار
یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک و برگرداندن آنها به صورت یک بردار، با دستور symvar در متلب

یافتن تمامی متغیرهای سمبلیک (symbolic) موجود در یک عبارت سمبلیک و برگرداندن آنها به صورت یک بردار، با دستور symvar در متلب

چنانچه دستور symvar را برای یک عبارت سمبلیک (symbolic) به کار ببریم، آنگاه دستور symvar ، تمامی متغیرهای سمبلیک موجود در آن عبارت سمبلیک را پیدا کرده و یک بردار حاوی آن متغیرهای سمبلیک را بر می گرداند.

به مثال زیر توجه کنید :

[h=4]مثال :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace][COLOR=#0000FF]clear[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]close[/COLOR] [COLOR=#0000FF]all[/COLOR]
[COLOR=#0000FF]clc[/COLOR]

syms x y z 
f = [COLOR=#0000FF]sin[/COLOR][COLOR=#008800]([/COLOR]z[COLOR=#008800])[/COLOR] + [COLOR=#3333FF]2[/COLOR]*x + x^[COLOR=#3333FF]4[/COLOR] + y^[COLOR=#3333FF]2[/COLOR];
A = [COLOR=#0000FF]symvar[/COLOR][COLOR=#008800]([/COLOR]f[COLOR=#008800])[/COLOR][/FONT]
[/FONT][/COLOR]
[h=4]نتیجه :[/h]
کد:
[COLOR=#000000][FONT=Tahoma][FONT=monospace]A =
 
[COLOR=#008800][[/COLOR] x, y, z[COLOR=#008800]][/COLOR][/FONT]
[COLOR=#008800]
[/COLOR]
[/FONT][/COLOR]
 
بالا