Оператори математичних співвідношень
Як відомо, у математиці та програмуванні при записуванні математичних виразів, крім операторів математичних дій, значну роль відіграють оператори співвідношень. Саме через ці оператори створюються нетривіальні алгоритми реальних математичних задач з розгалуженнями та циклами. Усі оператори математичних співвідношень мають два операнди, числові значення яких порівнюються між собою з використанням шести
операцій порівняння: менше, більше, дорівнює, не дорівнює, менше або дорівнює, більше або дорівнює. У сучасних мовах програмування результати виконання дій порівняння можуть мати два значення булевих змінних: True — істина, та False —хибність. Система MatLab більше орієнтована на роботу з числами, ніж із математичною логікою, тому тут прийнято числове подання результатів порівнянь, яке також широко використовується у програмуванні та у математиці: True –1, та False— 0. Оператори порівняння MatLab схожі з їх реалізацією мовами програмування С та BASIC. У MatLab ті самі дії порівняння можна виконувати і через функції, які аналогічні реалізованим мовами програмування BASIC та FORTRAN. Оператори та функції математичних співвідношень наведені у табл. 2.2, де через x та y позначені математичні вирази.
Якщо для виразів з дійсними числами оператори порівняння не мають ніяких особливостей, то при використанні виразів з комплексними числами застосування операторів порівняння в системі MatLab має свої особливості. Зрозуміло, що операції дорівнює або не дорівнює цілком коректно визначені для них, а операції більше та менше для комплексних чисел не визначаються. Тому розробники системи при введенні операторів порівняння для виразів із комплексними числами визначили всі вищезгаданої дії, але працюють вони по?різному. Оператори < , > , < = , > = можуть бути застосовані з комплексними операндами, але тільки для порівняння їх дійсної частини, уявна частина операндів відкидається. А в разі використання операторів порівняння = = та ~ = порівнюються як дійсні, так і їх частини. Для порівняння модуля двох комплексних чисел можна використовувати функцію модуля abs. Нижче наведено приклад використання операцій порівняння, який показує,що при записуванні уявної частини комплексних чисел між числом та константою і не ставити знак множення.
Приклад
>> eq(5,10)
ans =
>> 5==5
ans =
>> ne (5,10)
ans =
>> 5~=5
ans =
» 5>10
ans =
>> ge(10,5)
ans =
>> (2+3i)==(2+i)
ans =
>> (2+3i)>=(2+i)
ans =
>> abs(2+3i)>=abs(2+i)
ans =
>> (2+3i)~=(2+i)
ans =
>>
Важливо, що оператори порівняння можуть бути використанні для масивів, векторів та текстових констант, тобто, спектр використання цих операторів значно ширший, ніж у класичних мовах програмування. Можна порівняти масив із числовою константою. Результатом порівняння буде масив, розмірність якого відповідає розмірності початкового масиву, а всі елементи дорівнюють нулю або одиниці, залежно від результатів їх порівняння з визначеною константою. Можливим є також присвоєння значення результату виконання операції порівняння іншому масиву через математичні вирази, у яких оператори порівняння використовуються разом з операторами присвоєння.
Формат такого виразу:
>> M2=(M1>n)
Через M2 та M1 тут позначені масиви, а літерою n — числова константа. Такі вирази дуже нагадують програмістам синтаксис мови програмування С. Наведемо приклад використання операторів співвідношень:
>> M1=[1,2;3,4]
M1=
1 2
3 4
>>M2=(M1>1)
M2 =
0 1
1 1
>> M1>=1
ans =
1 1
1 1
>> M1~=1
ans =
0 1
1 1
>>
У MatLab є можливість використання операторів співвідношень з текстовими константами, єдиною умовою коректності цієї операції є однакова кількість символів у константах, які порівнюються. Результат порівняння двох символів відповідає значенням їх ASCII?кодів, а для двох рядкових констант буде вектор, розмірність якого відповідає довжині рядка, а елементи дорівнюють нулю або одиниці залежно від символів, які порівнюють. При порівнянні векторів значення результату можна присвоїти векторній константі або змінній. Розглянемо застосування операторів порівняння у рядкових констант на прикладі:
>> ‘b’>‘a’
ans =
>> ‘b’~=‘a’
ans =
>> ‘ba’~=‘aa’
ans =
1 0
>> ‘bac’>‘aaa’
ans =
1 0 1
>> c=(‘bac’~=‘aaa’)
c =
1 0 1
>> c=(‘bac’=‘aaa’)
??? c=(‘bac’=
A closing right parenthesis is missing.
Check for a missing «)» or a missing operator .
>> c=(‘bac’==‘aaa’)
c =
0 1 0
>>
Як можна побачити з наведеного прикладу, у MatLab, на відміну від мов програмування С та С++, оператори присвоєння і порівняння чітко розрізняються, і в разі їх неправильного використання система видає синтаксичну помилку.
Логічні оператори
Значну роль у системі MatLab відіграють логічні оператори та функції. Під час розв’язання задач з електроніки їх можна ефективно використовувати для аналізу цифрових схем. Але особливо велике значення мають логічні дії при написанні програми мовою MatLab, які будуть розглянуті у розділі 4. Особливість виконання логічних операцій із числовими даними полягає у тому, що логічній одиниці відповідає будь?яке число, крім нуля. При виконанні логічних операцій над рядками, як і для операцій порівняння, усі символи рядка подаються через їх ASCIІ коди.
Функції any та all призначені для оброблення векторів. Якщо аргументом функції є матриця, операція за замовчуванням проводиться з кожним стовпчиком матриці, результат — вектор. Використовуючи формат цих функцій з двома аргументами, одним з яких є число n, можна обрати напрям обробки матриці. Значенню n=1 відповідає обробка рядків матриці (перший напрям), а значенню n=2 — оброблення стовпчиків (другий напрям). Команди можуть використовуватися як для окремих операндів, так і для математичних виразів, що дуже важливо при реалізації функцій програмування. Формат логічних команд під час роботи з виразами такий:
(вираз) оператор (вираз)
або
функція ((вираз), (вираз))
Наведемо приклад використання логічних операторів.
Приклад
>> M1=[1,2,3]
M1 =
1 2 3
>> M2=[0,2,0]
M2 =
0 2 0
>> and(M1,M2)
ans =
0 1 0
>> or(M1,M2)
ans =
1 1 1
>> M1&M2
ans =
Дата добавления: 2016-05-11; просмотров: 931;