سبد خرید (0)

تبلیغات

عبارت های رابطه ای در متلب

به عباراتی که از نظر مفهومی، true یا false هستند، عبارت های رابطه ای گفته می شود. همچین این عبارات را، عبارات بولی یا عبارات منطقی می نامند. در این عبارات می توان از عملگرهای رابطه ای و عملگرهای منطقی استفاده نمود. 

عملگرهای رابطه ای در متلب عبارتند از:

عملگر مفهوم
< بزرگتر از
> کوچکتر از
=< بزرگتر یا مساوی
=> کوچکتر یا مساوی
== برابری
=~ نابرابری

لازم است به خاطر داشته باشید که در جدول بالا، برای مفهوم برابری از دو علامت مساوی استفاده شده است نه از یک علامت تنها. 

 برای عملوندهای عددی، استفاده از این عملگرها آسان است. بعنوان مثال عبارت 5>3 همواره مقدار true را برمی گرداند. در متلب نیز همچون بسیاری از دیگر زبان های برنامه نویسی، مقدار true با استفاده از مقدار منطقی 1 بیان می شود و مقدار false با مقدار منطقی 0 بیان می شود. بنابراین اگر عبارت 5>3 را در متلب وارد کنیم، مقدار 1 در پنجره ی command نمایش داده می شود. به مثال زیر توجه کنید:

همان طور که در مثال بالا مشاهده می کنید، نوع خروجی، برابر با مقدار logical(منطقی) شده است نه double. متلب همچنین در داخل خود، از true و false پشتیبانی می کند. به مثال زیر توجه کنید:

به عبارت دیگر، true معادل است با (logical(1 و false برابر است با (logical(0. 

نکته: در برخی از ورژن های متلب، مقدار نشان داده شده بعنوان نتیجه برای این عبارات، در پنجره ی workspace همان true و flase است.

با اینکه 0 و 1 به دست آمده در بالا، مقادیر منطقی هستند اما می توان بر روی آنها، عملیات ریاضی انجام داد. به مثال زیر توجه کنید.

 مقایسه ی کاراکترها نیز امکان پذیر است. کاراکترها، با استفاده از مقدار معادل اسکی شان، می توان مورد مقایسه قرار داد. بعنوان مثال عبارت 'a' < 'c'  یک عبارت true است زیرا کاراکتر 'a' در جدول اسکی، قبل از کاراکتر 'c' قرار دارد. به مثال زیر توجه کنید:

 عملگرهای منطقی عبارتند از:

عملگر مفهوم
|| or - یا
&& and - و
~ not - نقیض

 تمام عملگرهای منطقی، بر روی عملوندهای منطقی یا بولی کار می کنند. علمگر نقیض(~) یک عملگر یگانی(unary) است اما دیگر عملگرها، باینری(دوتایی) هستند. علمگر نقیض، بر روی یک عبارت منطقی که مقدار آن true یا false است عمل می کند و باعث می شود نقیض آن عبارت به دست بیاید. بعنوان مثال (5>3)~ برابر با false است زیرا مقدار (5>3) برابر با true است. 

عملگر or دو عبارت منطقی را بعنوان عملوند می پذیرد. در صورتی که هریک از عملوند های آن یا یکی از آنها true باشند، مقدار true را برمی گرداند و در صورتی که هردو عملوند آن false باشند ، مقدار false را برمی گرداند. 

 عملگر and نیز بر روی دو عملوند کار می کند. در صورتی هر دو عملوند آن true باشند(دارای مقدار true باشند)، مقدار آن برابر با true می شود و در صورتی که یکی یا هردوی عملوندهای آن false باشند، مقدار آن برابر با false می شود. عملگر های and و or که در اینجا به شما نشان دادیم، تنها بر روی اعداد معمولی(اسکالر) عمل می کنند. دیگر علمگرهای and و or، در فصل 2 توضیح داده خواهند شد. 

 از عملگرهای || و && همچنین بعنوان عملگر های اتصال کوتاه یاد می شود. و به این معنی است که اگر نتیجه ی عبارت بتواند با استفاده از قسمت اول، به دست بیاید، فسمت دوم مورد محاسبه قرار نخواهد گرفت. بعنوان مثال به عبارت زیر توجه کنید:

2 < 4 || 'a' == 'c'

چون که قسمت اول، یعنی 4>2 برابر با true است، ارزش کل عبارت برابر با true می شود و قسمت دوم، یعنی 'a'=='c' مورد ارزشیابی قرار نمی گیرد. 

 علاوه بر این عملگرها، متلب یک تابع به نام xor دارد که به آن or انحصاری گفته می شود. این تابع، در صورتی که یک و تنها یک آرگومان آن دارای ارزش true باشد، مقدار منطقی true را برمی گرداند. بعنوان مثال در مثال زیر، تنها اولین آرگومان true است و لذا نتیجه نیز برابر با true شده است:

 در مثال زیر، ارزش هر دو آرگومان از این تابع برابر با true است و بنابراین نتیجه برابر با false شده است:

 در صورتی که مقادیر false و true را در متغیرهای x و y قرار دهیم، جدول 1.1 نشان می دهد که ترکیب مقادیر منطقی دارای چه ارزش هایی هستند. توجه کنید که علمگرهای منطقی، دارای خاصیت جابجایی هستند(مثلا x||y معادل با y||x است).

همانند عملگرهای عددی، لازم است که در اینجا نیز تقدم عملگرها را بیان نماییم. در جدول 1.2 تقدم عملگرها برای آنچه که تا کنون خوانده ایم، نشان داده شده است. 

سوال سریع!

فرض کنید که یک متغیر به نام x داریم که مقداردهی اولیه شده است. در این صورت ارزش عبارت زیر چه خواهد بود؟

$$3<x<5$$

پاسخ:

ارزش این عبارت صرف نظر از مقدار x، همواره برابر با مقدار منطقی true یا 1 است. 

عبارت ها، همواره از سمت چپ به راست مورد ارزیابی قرار می گیرند. بنابراین ابتدا عبارت \(3<x\) مورد ارزیابی قرار می گیرد. حالا تنها دو امکان وجود دارد، یا true را به دست خواهیم آورد و یا flase. این گفته به این معنی است که یا 1 را بدست خواهیم آورد و یا 0. سپس باقی مانده ی عبارت مورد نظر ارزیابی می شود. به عبارت دیگر اکنون یا \(1<5\) و یا \(0<5\). همان طور که می دانید، هر دوی این عبارات true هستند. بنابر آنچه گفته شد، صرف نظر از مقدار x، عبارت \(3<x<5\) همواره true است. 

به آنچه در بالا ذکر شد، خطای منطقی گفته می شود. در صورتی که بخواهیم از لحاظ منطقی تعیین کنیم که آیا x بین 3 و 5 است، باید آن را به صورت \(3<x\quad \& \& \quad x<5\) بنویسیم. 

 

 

تمرین شماره 1.3

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

نکته: در هنگام استفاده از مساوی ها و نامساوی ها برای اعداد، جانب احتیاط را رعایت کنید. زیرا گاهی اوقات ممکن است با خطای roundoff مواجه شوید. این خطا به این معنی است که اعداد مورد نظر به مقادیر اصلی خود نزدیک هستند اما دقیقاً برابر با آنها نیستند. بعنوان مثال عبارت \(cos(\frac { pi }{ 2 } )\)  باید برابر با 0 شود. اما به دلیل خطای roundoff(گرد کردن)، این مقدار برابر با یک عدد بسیار کوچک شده است و دقیقا برابر با 0 نشده است. به مثال زیر توجه کنید: