Лабораторна робота №8
За курсом «Інструментальні засоби комп’ютерного моделювання»
Тема. Основи роботи в системі символьної математики MATLAB 5.2
Черкаси 2009
Зміст
1. Мета роботи
2. Теоретична частина
3. Практична (розрахункова) частина
4. Висновки за результатами виконання роботи
5. Бібліографічний список
1. Мета
Освоїти основні моменти роботи з операторами та функціями.
Навчитися користуватися основними функціями роботи з матрицями.
Обладнання:МATLAB 5.2.
2. Теоретичні відомості
Система MATLAB створена таким чином, що будь-які обчислення можна виконувати в режимі прямих обчислень, тобто без підготовки програми. Це перетворює MATLAB в надзвичайно могутній калькулятор, який здатний виконувати не тільки звичайні для калькуляторів обчислення (наприклад, виконувати арифметичні операції і обчислювати елементарні функції), але і операції з векторами і матрицями, комплексними числами, рядами і поліномами. Можна майже вмить задати і вивести графіки різних функцій - від простої синусоїди до складної тривимірної фігури.
Робота з системою в режимі прямих обчислень носить діалоговий характер. Користувач набирає на клавіатурі вираження, що обчисляється, редагує його в командному рядку і завершує введення натисненням клавіші ENTER.
При цьому:
•для вказівки введення початкових даних використовується символ »;
•дані вводяться за допомогою найпростішого рядкового редактора;
•для блокування виведення обчислень деякого виразу після нього треба встановити знак ; ( крапка з комою);
•якщо не вказана змінна зі значенням результату обчислень, то MATLAB призначає таку змінну з ім’ям ans;
•знаком привласнення є звичний математиці знак рівності =, а не комбінований знак: =, як в багатьох інших математичних системах;
•вбудовані функції (наприклад, sin) записуються малими буквами і їх аргументи вказуються в круглих дужках;
•результат обчислень виводиться в рядках висновку (без знаку »);
•діалог відбувається в стилі «задав питання - отримав відповідь».
Центральним поняттям всіх математичних систем є математичний вираз. Ось приклади простих математичних виразів:
2+3 2.301*sin(х) 4+exp(3)/5 sqrt(у)/2 sin(pi/2)
Математичні вирази будуються на основі чисел, констант, змінних, операторів і функцій і різних спецзнаків. Числа найпростіший об’єкт мови MATLAB, що представляє кількісні дані. Числа можна вважати константами, ім’я яких співпадає з їх значеннями. Числа використовуються в загальноприйнятому уявленні про них. Вони можуть бути цілими, дробовими, з фіксованою точкою і плаваючою точкою. Можливе представлення чисел з вказівкою мантиси і порядку числа. Нижче приведені приклади представлення чисел: 02-3 2.301 0.00001 123.456e.24 -234.456е10
Легко помітити, в мантисі чисел ціла частина відділяється від дробової не коми, а точкою, що прийнято в більшості мов програмування. Для відділення порядку числа від мантиси використовується символ е. Знак “ плюс” у чисел не проставляється, а знак “ мінус” у числа називають унарним мінусом. Пропуски між символами в числах не допускаються. Числа можуть бути комплексними z=Re(х)+Im(х)*i. Такі числа містять дійсну Re(z) і уявну Im(z) частини. Уявна частина має множник i або j: 3i 2j 2+3i -3.141i -123.456+2.7е-3
Функція real(z) повертає дійсну частину комплексного числа Re(z), а функція imag(z) - уявну Im(Z). Для отримання модуля комплексного числа використовується функція abs(z), а для обчислення фази - angle(z).
У MATLAB не прийнято ділити числа на ціле і дробові, короткі і довгі і так далі, як це прийняте в більшості мов програмування. Хоч задавати їх в таких формах можна. Взагалі ж операції над числами виконуються в форматі, який прийнято вважати форматом чисел з подвійною точністю. Такий формат задовольняє переважній більшості вимог до чисельних розрахунків, але абсолютно не підходить для символьних обчислень з довільною (абсолютної) точністю. Символьні обчислення MATLAB може виконувати за допомогою спеціального пакету розширення Symbolic. Константа - це заздалегідь визначене числове або символьне значення, представлене унікальним ім’ям. Числа (наприклад: 1, -2 і 1.23) є безіменними числовими константами.
Основні системні змінні, що застосовуються в системі MATLAB, вказані нижче: i або j - уявна одиниця; pi - 3.1415926...; eps - погрішність для операцій над числами з плаваючою крапкою ( 52 2. ); realmin - найменше число з плаваючою точкою ( 1022 2. ); realmax – найбільше число з плаваючою точкою ( 1023 2 ); inf - значення машинної нескінченності; ans - змінна, що зберігає результат останньої операції і зазвичай спричиняє його відображення на екрані дисплея; NaN - вказівка на не числовий характер даних (Not-a-Number).
Як відмічалося, системні змінні можуть перевизначити. Можна задати системної змінної eps інше значення, наприклад eps=0.0001.
Однак важливе те, що їх значення по замовчуванню задаються відразу після завантаження системи. Тому невизначеними, на відміну від змінних, системні змінні не можуть бути ніколи. Символьні константи - це ланцюжок символів, взятих в апострофи, наприклад: ’Hello my friend!’ ’Привіт’ ’2+3’.Якщо в апострофи вміщене математичне вираження, то воно не обчислюється і розглядається просто як ланцюжок символів. Оскільки MATLAB використовується для досить складних обчислень, важливе значення має наглядність їх опису. Вона досягається, зокрема, використанням текстових коментарів. Текстові коментарі вводяться за допомогою оператора –
Символа %, наприклад: %.
Нижче представлено задання функції обчислення факторіалу
Знищення виділених змінних - команда clear.
У пам’яті змінні займають певне місце, котре носить назву:
робочий простір – workspace. Для очищення робочого простору використовується функція clear в різних формах, наприклад:
clear - знищення визначень всіх змінних; clear х - знищення визначення змінної х; clear a, b, с - знищення визначень змінних списку і так далі.
Знищена (стерта в робочому просторі) змінна стає невизначеною. Використати такі змінні не можна і такі спроби будуть супроводитися видачею повідомлень про помилку. Приведемо приклади завдання і знищення змінних:
»х=2*р1 х=
6.2832 » V=[12345] V=
12345 »МАТ
??? Undefined function or variable '
MAT'. »
MAT=[1 2 3 4; 5 6 7 8] МАТ=1234
5678 »
clear V»V
??? Undefined function or variable 'V. »clear »х
??? Undefined function or variable 'x'. »M???Undefined function or variable'M'.
Зверніть увагу на те, що спочатку вибірково стерта змінна V, а потім командою clear без параметрів стерті інші змінні. Оператор - це спеціальне позначення для певної операції над даними - операндами. Наприклад, найпростішими арифметичними операторами є знаки суми +, віднімання -, множення * і розподілу /. Оператори використовуються спільно з операндами. Наприклад, у вираженні 2+3 знак + є оператором складання, а числа 2 і 3 - операндами. Потрібно зазначити, що більшість операторів відноситься до матричних операцій, що може служити причиною серйозних непорозумінь. Наприклад, оператори множення * і розподілу / обчислюють добуток і частку від ділення двох масивів, векторів або матриць. Є ряд спеціальних операторів, наприклад: оператор \ означає поділ справа наліво, а оператори. .* і ./ означають почленне множення і ділення масивів.
Повний список операторів можна отримати, використовуючи команду » help ops.Функції в загальному випадку мають список аргументів (параметрів), взятий в круглі дужки. Наприклад, функція Бесселя записується як bessel(NU, X). У цьому випадку список параметрів містить два аргументи - NU у вигляді числа і Х у вигляді вектора.
Багато які функції допускають ряд форм запису, наприклад, відмінних списком своїх параметрів. Якщо функція повертає декілька значень, то вона записується у вигляді:
[Y1, Y2,...]=func(X1, X2,...),де Y1, Y2,... - список вихідних аргументів і X1, Х2, ... – список вхідних аргументів (параметрів).Зі списком елементарних функцій можна ознайомитися, виконавши команду help elfun, а зі списком спеціальних функцій - help specfun. Функції можуть бути вбудованими (внутрішніми) і зовнішніми, або М-функціями. Так, вбудованими є найбільш поширені елементарні функції, наприклад sin(х) і ехр(у), тоді як функція sinh(х) є зовнішньою функцією. Зовнішні функції містять свої визначення в М-файлах. Задання таких функцій за допомогою спеціального редактора М-файлів ми розглянемо пізніше. Дуже часто необхідно зробити формування впорядкованих числових послідовностей. Такі послідовності потрібні для створення векторів або значень абсциси при побудові графіків. Для цього в MATLAB використовується оператор : (двокрапка) у Наступній конструкції:
Початкове_значення:Крок:Кінцеве_значення
Дана конструкція породжує послідовність чисел, яка починається з початкового значення, йде із заданим кроком і завершується кінцевим значенням. Якщо крок не заданий, то він приймає значення 1 або – 1 у вказаних співвідношеннях. Як відмічалося, приналежність MATLAB до матричних систем вносить корективи в визначення операторів і приводить, при невмілому їх використанні, до казусів.
Розглянемо наступний характерний приклад:
»х=0:5
х=
0 1 2 3 4 5
»cos(х)
ans =
1.0000 0.5403 -0.4161 -0.9900 -0.6536 0.2837
»sin(х)/х
ans =
-0.0862
Обчислення масиву косинусів тут пройшло коректно. А ось обчислення масиву функції sin(х)/х дає на перший погляд несподіваний ефект замість масиву з шістьма елементами обчислено єдине значення. Причина “парадоксу” тут в тому, що оператор / обчислює відношення двох матриць, векторів або масивів. Якщо вони однієї розмірності, то результат буде одним числом, що в цьому випадку і видала система. Щоб дійсно отримати масив значень sin(х)/х, треба використати спеціальний оператор почленного ділення масивів -./.
Тоді буде отримано масив чисел:
»sin(х)./х
Warning: Divide by zero.
ans =NaN 0.8415 0.4546 0.0470 -0.1892 -0.1918
Проте, і тут без особливостей не обійшлося. Так, при х=0 значення sin(х)/х дає невизначеність вигляду 0/0=1. Однак, як і всяка чисельна система, MATLAB класифікує спробу розподілу на 0 як помилку і виводить відповідне попередження. А замість очікуваного чисельного значення виводиться символьна константа NaN, що означає, що невизначеність 0/0 все ж не звичайне число. Формати чисел - команда format