Лабораторна робота №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 с.