Лабораторнаробота №8
Закурсом «Інструментальні засоби комп’ютерного моделювання»
Тема.Основи роботи в системі символьної математики MATLAB 5.2
Черкаси2009
Зміст
1. Мета роботи
2. Теоретична частина
3. Практична (розрахункова) частина
4. Висновки за результатами виконання роботи
5. Бібліографічний список
1. Мета
Освоїти основні моменти роботи з операторами та функціями.
Навчитисякористуватися основними функціями роботи з матрицями.
Обладнання: МATLAB5.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 2j2+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 orvariable'M'.
Зверніть увагу на те, що спочатку вибірково стерта змінна V, а потімкомандою clear без параметрів стерті інші змінні. Оператор — це спеціальне позначеннядля певної операції над даними — операндами. Наприклад, найпростішимиарифметичними операторами є знаки суми +, віднімання -, множення * і розподілу/. Оператори використовуються спільно з операндами. Наприклад, у вираженні 2+3 знак+ є оператором складання, а числа 2 і 3 — операндами. Потрібно зазначити, щобільшість операторів відноситься до матричних операцій, що може служитипричиною серйозних непорозумінь. Наприклад, оператори множення * і розподілу / обчислюютьдобуток і частку від ділення двох масивів, векторів або матриць. Є рядспеціальних операторів, наприклад: оператор \ означає поділ справаналіво, а оператори. .* і ./ означають почленне множення і діленнямасивів.
Повний список операторів можна отримати, використовуючи команду » helpops.Функції в загальному випадку мають список аргументів (параметрів),взятий в круглі дужки. Наприклад, функція Бесселя записується як 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
При роботі з числовими даними можна задавати різні формати представленнячисел. Однак в будь-якому випадку всі обчислення проводяться з подвійноюточністю. Для установки формату представлення чисел використовується команда »formatname, де 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 с.