Спеціальні символи та їх використання

Мова MatLab, у якій значною мірою запозичений синтаксис мови С, загалом побудована на використанні символів та символьної логіки. Тому перейдемо до вивчення спеціальних символів, яких у цій мові не бракує, і розробники систематизували їх за категоріями. Основні категорії операторів — це punct (Punctuation, пунктуація), та paren (Parentheses, дужки), але деякі оператори мають окрему категорію. Серед них дуже важливим є двокрапка :, який розробники віднесли до категорії colomn (двокрапка). У наведеній таблиці 2.4 перелік усіх спеціальних символів MatLab. Дії, призначені для виконання спеціальних функцій над матрицями та масивами числових даних. У наведеній таблиці літерою n позначені числові константи, М — матриці, О — оператори, W — вирази, FL — поля структур даних.

Більшість спеціальних операторів ми були розглянули при описанні відповідних операцій оброблення числових структур даних.

Особливе значення у вхідній мові системи MatLab при формуванні векторів має оператор двокрапка (:). За допомогою цього оператора формуються вектори з табульованими значеннями. Тобто, елементи вектора складають арифметичну прогресію з відповідним кроком, і значення кожного наступного елемента відрізняється від попереднього на постійне число.

Вектори з табульованими значеннями необхідні програмістам для формування таблиць математичних функцій та побудови їх графіків. Як указано в табл. 2.4, формат запису оператора визначення векторів з табульованими значеннями має вигляд:

>> n1:n2:n3

де n1 — значення першого елемента вектора, n2 — крок зміни елементів вектора, n3— границя, яку не повинен перевищувати останній елемент вектора при додатному кроці, або менше якого він не повинен бути при від’ємному кроці. У наведеному прикладі параметр n2 може бути пропущеним, тоді вважається що «за замовчуванням» n2=1. Користувачам, які знайомі із вхідною мовою MathCAD, треба звернути увагу на те, що нумерація елементів векторів у MatLab починається з одиниці, а не з нуля.

Це відповідає правилам формування векторів у математиці.

Якщо при написанні наведеного виразу n3<n1 при додатному кроці або n3>n1при від’ємному кроці, то система формує порожній вектор, який не містить жодного елемента, та видає відповідне системне повідомлення. Наведемо приклади формування векторів із табульованими значеннями за допомогою символа (:).

>> format short

>> a=1

a =

>> b=10

b =

>> s=0.1

s =

0.1000

>> v=a:b:s

v =

Empty matrix: 1?by?0

>> v=a:s:b

v =

Columns 1 through 7

1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000

Columns 8 through 14

1.7000 1.8000 1.9000 2.0000 2.1000 2.2000 2.3000

Columns 15 through 21

2.4000 2.5000 2.6000 2.7000 2.8000 2.9000 3.0000

Columns 22 through 28

3.1000 3.2000 3.3000 3.4000 3.5000 3.6000 3.7000

Columns 29 through 35

3.8000 3.9000 4.0000 4.1000 4.2000 4.3000 4.4000

Columns 36 through 42

4.5000 4.6000 4.7000 4.8000 4.9000 5.0000 5.1000

Columns 43 through 49

5.2000 5.3000 5.4000 5.5000 5.6000 5.7000 5.8000

Columns 50 through 56

5.9000 6.0000 6.1000 6.2000 6.3000 6.4000 6.5000

Columns 57 through 63

6.6000 6.7000 6.8000 6.9000 7.0000 7.1000 7.2000

Columns 64 through 70

7.3000 7.4000 7.5000 7.6000 7.7000 7.8000 7.9000

Columns 71 through 77

8.0000 8.1000 8.2000 8.3000 8.4000 8.5000 8.6000

Columns 78 through 84

8.7000 8.8000 8.9000 9.0000 9.1000 9.2000 9.3000

Columns 85 through 91

9.4000 9.5000 9.6000 9.7000 9.8000 9.9000 10.0000

>>

Як бачимо, за великої кількості елементів вектора вони виводяться на екран не одним рядком, а розташовуються як таблиця чисел, при цьому для кожного рядка цієї таблиці вказуються номери елементів, розташованих у ньому. Така систематизація інформації значно спрощує роботу зі структурами числових даних. Сам по собі вектор з табульованими значеннями нібито не надає ніяких переваг для проведення подальших обчислень.Але в MatLab є можливість використовувати векторні змінні як параметри математичних функцій, і при цьому значення функції обчислюється для кожного з елементів вектора. Тоді досить просто розв’язати задачу обчислення значень функції для відповідного вектора аргумента, і результатом таких обчислень буде вектор значень функції. У більшості мов програмування для розв’язання такої задачі необхідно формувати циклічну структуру, а у MatLab вона розв’язується за допомогою кількох простих командних рядків.

У попередньому прикладі було табульовано вектор значень у числовому діапазоні [1;10] з кроком 0,1. Тепер, використовуючи сформований вектор як параметр функції, легко знайти значення функції cos (x) у визначеному числовому діапазоні:

>> b=cos(v)

b =

Columns 1 through 7

0.5403 0.4536 0.3624 0.2675 0.1700 0.0707 ?0.0292

Columns 8 through 14

?0.1288 ?0.2272 ?0.3233 ?0.4161 ?0.5048 ?0.5885 ?0.6663

Columns 15 through 21

?0.7374 ?0.8011 ?0.8569 ?0.9041 ?0.9422 ?0.9710 ?0.9900

Columns 22 through 28

?0.9991 ?0.9983 ?0.9875 ?0.9668 ?0.9365 ?0.8968 ?0.8481

Columns 29 through 35

?0.7910 ?0.7259 ?0.6536 ?0.5748 ?0.4903 ?0.4008 ?0.3073

Columns 36 through 42

?0.2108 ?0.1122 ?0.0124 0.0875 0.1865 0.2837 0.3780

Columns 43 through 49

0.4685 0.5544 0.6347 0.7087 0.7756 0.8347 0.8855

Columns 50 through 56

0.9275 0.9602 0.9833 0.9965 0.9999 0.9932 0.9766

Columns 57 through 63

0.9502 0.9144 0.8694 0.8157 0.7539 0.6845 0.6084

Columns 64 through 70

0.5261 0.4385 0.3466 0.2513 0.1534 0.0540 -0.0460

Columns 71 through 77

-0.1455 ?0.2435 ?0.3392 -0.4314 -0.5193 ?0.6020 -0.6787

Columns 78 through 84

-0.7486 ?0.8111 ?0.8654 -0.9111 -0.9477 ?0.9748 -0.9922

Columns 85 through 91

-0.9997 ?0.9972 ?0.9847 -0.9624 -0.9304 ?0.8892 -0.8391

>>

Маючи такі числові результати, тобто вектор аргументу функції v та вектор значень функції b, можна використати їх у подальших обчисленнях. За отриманими результатами обчислень нескладно побудувати графік функції y(x)=cos(x), використовуючи графічні засоби системи MatLab. Зрозуміло, що під час роботи з векторами та матрицями великої надмірності часто немає сенсу виводити всі результати на екран. Слід мати на увазі, що при обчисленні складних математичних функцій з великою кількістю аргументів виведення результатів на екран не тільки ускладнює їх аналіз, але й значно уповільнює роботу програми. Щоб не виводити на екран результати обчислень, треба у кінці рядка ставити символ ; (крапку з комою).

Розглянемо інший цікавий приклад використання векторів з табульованими значеннями параметрів функції.

>> x=0:5

x=

0 1 2 3 4 5

>> sin(x)/x

ans=

-0.0862

>>

Видно, що обчислення функції sin(x)/x у даному випадку виконано неправильно. Річ у тому, що ми використали не поелементне ділення, а розділили один вектор на інший за правилами лінійної алгебри. Тепер ви бачите, до яких грубих помилок призводить пропущення крапки у поелементних операторах! Реультатом ділення двох векторів є скаляр. Система провела обчислення саме таким чином, і цілком правильно. У даному випадку зрозуміло, що замість матричного оператора / треба використовувати поелементний оператор ./ .

>> sin(x)./x

Warning: Devide by zero

ans=

NaN

0.8415 0.4546 0.0470 ?0.1892 ?0.1918

>>

Тут теж не обійшлося без помилки, оскільки для х = 0 вираз невизначений. Зверніть увагу на те, що такому діленню відповідає не машинна нескінченність (Inf), а невизначеність (NaN).

 

 








Дата добавления: 2016-05-11; просмотров: 590;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.016 сек.