Лабораторна робота №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
При роботі з числовими даними можна задавати різні формати представлення чисел. Однак в будь-якому випадку всі обчислення проводяться з подвійною точністю. Для установки формату представлення чисел використовується команда »format name, де name
– ім’я формату. Для числових даних name може бути наступним повідомленням: short
- коротке представлення в фіксованому форматі (знаків), short е
- коротке представлення в експонентному форматі (5 знаків мантиси і 3 порядки), long
– довге представлення в фіксованому форматі (15 знаків), long е
– довге представлення в експонентному форматі (15 знаків мантиси і 3 порядки), hex
- представлення чисел в шістнадцятеричній формі; bank
- представлення для грошових одиниць.
Основи роботи з векторами і матрицями.
Якщо необхідно задати вектор з трьох елементів, то їх значення треба перерахувати в квадратних дужках, розділяючи пропусками.
Задання матриці вимагає вказівки різних рядків. Для розрізнення рядків використовується знак - ; (крапка з комою). Цей же знак (або знак коми) в кінці введення запобігає виведенню матриці або вектора на екран дисплея. Так, введення.Можливе введення елементів матриць і векторів у вигляді арифметичних виразів, що містять будь-які доступні системі функції, наприклад:
»V=[2+2/(3+4) exp(5) sqrt(10)];
»V
V=
2.2857 148.4132 3.1623
Для вказівки на елемента вектора або матриці використовуються вирази вигляду V(i) або M(i;j). Якщо потрібно привласнити елементу M(i;j) нове значення х, потрібно використати вираз M(i;j)=х. Можливе завдання векторів і матриць з комплексними елементами.
Нарівні з операціями над окремими елементами матриць і векторів система дозволяє виробляти операції множення, розподілу і зведення в міру відразу над всіма елементами масивами. Для цього перед операцією ставиться знак точка. Наприклад, знак * означає знак множення для векторів або матриць, а знак .* - множення всіх елементів у вигляді масиву. Так, якщо М - матриця, то М.*2 дасть матрицю, всі елементи якої помножені на скаляр - число 2.
Об’єднання малих матриць у велику. Описаний спосіб завдання матриць дозволяє виконати операцію конкатенації – об’єднання малих матриць у велику. Для знаходження суми стовпчиків матриці використовується функція sum(A)
, а суми рядків sum(A’)
. Запис А’ означає транспонування матриці А. Видалення стовпців і рядків матриць. Для формування матриць і виконання ряду матричних операцій виникає необхідність видалення окремих стовпців і рядків матриці. Для цього використовуються пусті квадратні дужки
Для роботи з матрицями використовуються основні команди:
det
(Х)- знаходження визначника матриці;
inv
(X) – знаходження оберненої матриці.
3. Практична робота
1.Задаємо матриці:
2. Визначаємо визначники і множення А·В і В·А:
3.Знаходимо обернені матриці.
4. Задаємо матриці і знаходимо матрицю Х.
4. Висновок
На даній роботі ми ознайомилися з пакетом Matlab. Навчилися знаходити матриці обернені і їх визначники. Знаходити матрицю Х з ВХ=А, також множити матриці на скаляр.
5. Література
1. В.П.Дьяконов, И.В. Абраменкова MATLAB 5.0/5.3 Система символьной математики, М, «Нолидж», 1999 634 с.
|