Відмінності між версіями «Основи роботи в MATLAB»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 129: Рядок 129:
 
     ans =
 
     ans =
 
       Empty matrix: 1-by-0
 
       Empty matrix: 1-by-0
 +
Повний список операторів можна отримати виконавши команду<br>
 +
    >> help ops
 +
==='''Функції'''===
 +
'''''Функції''''' – унікально іменовані об’єкти, що виконують визначені перетворення своїх аргументів, і при цьому повертають результати своїх перетворень. Результат обчислення функції з одним вихідним параметром підставляється на місце її визову, що дозоляє використовувати функції в математичних виразах. Функції в загальному випадку мають список аргументів (параметрів). Якщо функція повертає декілька значень, то вона записується у вигляді<br>
 +
    [Y1, Y2, …] = func(X1, X2, …)
 +
де Y1, Y2, … - список вихідних параметрів, і X1, X2, … - список вхідних аргументів.<br>
 +
Функції можуть бути ''вбудованими'' і ''зовнішніми'', або m-функціями. Вбудованими є найбільш поширені елементарні функції, наприклад, sin(x) і exp(x), тоді як функція sinh(x) є зовнішньою функцією. Зовнішні функції містять свої означення в m-файлах. Вбудовані функції зберігаються в відкомпільованому ядрі системи Matlab, тому вони виконуються дуже швидко.<br>
 +
Мова програмування системи Matlab пропонує ряд ефективних можливостей для задання функцій користувача. Одна з таких можливостей залючається в застосуванні функції '''''inline''''', аргументом якої треба в апострофах задати вираз, що задає функцію однієї чи декількох змінних. В приведеному прикладі задана функція двох змінних:<br>
 +
    >> func1=inline('sin(x).^2+cos(y).^2')
 +
    func1 =
 +
        Inline function:
 +
        func1(x,y) = sin(x).^2+cos(y).^2
 +
    >> func1(1,0)
 +
    ans =
 +
        1.7081
 +
Можна також задавати свої функції у вигляді m-файлів. У вікні редактора
 +
m-файлів (File – Nev – M-File) створити m-файл з ім’ям func3 і лістингом:
 +
    function y=func3(x,y)
 +
    y=sin(x).^2+cos(y).^2
 +
Записавши його на диск, командою<br>
 +
    type func3
 +
вивести лістинг функції. Звертання до функції відбувається як до звичайної, підставляємо в список параметрів потрібні змінні.<br>

Версія за 07:06, 5 червня 2009

Довідка про MatLab

Matlab – одна з найстаріших, ретельно пророблених і провірених часом систем автоматизації математичних розрахунків, побудована на розширеному представленні і застосуванні матричних операцій. Звідси й пішла назва системи – MATrix LABoratory – матрична лабораторія.
Matlab поставляється як комплекс Matlab + Simulink + Toolbox + Blockset, де розділами системи Toolbox і Blockset корпорація MathWorks називає пакети розширення для систем Matlab і Simulink, відповідно.
Однією із основних задач системи Matlab завжди було надання користувачам потужної мови програмування, орієнтованої на технічні і математичні розрахунки і здатної перевершити можливості традиційних мов програмування, котрі багато років використовувались для реалізації чисельних методів. При цьому особлива увага приділялась як підвищенню швидкості обчислень, так і адаптації системи до розв’язку самих різноманітних задач користувачів.

Запуск системи і робота в діалоговому режимі

На початку запуску автоматично виконується команда matlabrc, яка виконує завантажувальний файл matlabrc.m. Цей файл виконує початкове налаштування термінала системи і задає ряд її параметрів. У томі числі, можуть бути вказані шляхи доступу до інших файлів, необхідних для коректної роботи системи.
Сеанс роботи з Matlab прийнято називати сесією (session). Сесія, по суті, являється поточним документом, відображаючим роботу користувача в системі. Вона включає рядки вводу, виводу та повідомлень про помилки. Вхідні в сесію визначення змінних функцій, розміщених в буфері, але не саму сесію, можна записати на диск (файли формату .mat). Фрагменти сесії можна оформити у вигляді щоденника (за допомогою команди diary).
Система створена таким чином, що будь-які обчислення можна виконати в режимі прямих обчислень, тобто без підготовки програми. Такий підхід відбувається по правилу «задав питання, отримав відповідь»:

   >> x=1;
   >> cos(x)^2+sin(x)^2
   ans =
   1
   >> 2*log(ans)^3-...
   5/tan(2*sqrt(4))
   ans =
   -4.3185
   >> w=2*log(1)^3-5/tan(2*sqrt(4))
   w =
   -4.3185

З цього лістінгу можна зробити висновки:

  • Для вказання вводу початкових даних використовується символ >>;
  • Дані вводяться за допомогою простого строкового редактора;
  • Для блокування виводу результату обчислень деякого виразу, після нього треба ставити знак ; (крапка з комою);
  • Якщо не вказана змінна для значення результату обчислень, то Matlab автоматично назначить змінну ans;
  • Знаком присвоєння є звичний математичний знак = ;
  • Вбудовані функції (наприклад cos) пишуться строковими буквами, а їх аргументи вказуються в круглих дужках;
  • Результати обчислень виводяться в рядках виводу (без знаку >>);

    В деяких випадках зручно записати математичне значення декількома рядками. Це можна зробити використовуючи знак переносу «…» (багатокрапка).

    Основні об’єкти Matlab

    Центральним поняттям всіх математичних систем являється математичний вираз. Він задає те, що має бути обчислене в числовому (рідше в символьному) вигляді. Приклади простих математичних виразів:

       2-4
       3.256*exp(8)
       2+sin(x)/(4*cos(y))
    

    Математичні вирази будуються на основі чисел, констант, змінних, операторів, функцій та різних спец знаків.

    Числа

    Число – найпростіший об’єкт мови Matlab, який представляє кількісні дані. Числа можна вважати константами, імена яких співпадають з їх значеннями. Вони можуть бути цілими, дробовими, з фіксованою і плаваючою крапкою. Можливе представлення з вказанням мантиси та порядку числа. В мантисі ціла частина відділяється від дробової комою, а не крапкою. Для відокремлення порядку числа від мантиси використовується символ е.
    Числа можуть бути комплексними : z = Re(x) + Im(x) * i. Уявна частина має множник i або j, що означає корінь квадратний з -1:

       >> i
       ans =
           0 + 1.0000i
       >> j
       ans =
           0 + 1.0000i
       >> k=3+7i
       k =
       3.0000 + 7.0000i
       >> real(k)
       ans =
        3
       >> imag(k)
       ans =
        7
    

    За замовчуванням Matlab повертає числа в короткому записі в форматі з фіксованою комою (5 знаків). Тому при роботі з числовими даними можна задавати різні формати представлення чисел. Але обчислення завжди проводяться в форматі чисел з подвійною точністю. Для установки формату представлення чисел використовується команда

       >> format name
    

    де name – ім.’я формату. Для числових даних name може бути наступним:

    Short (default) - Короткий запис в форматі з фіксованою комою (5 знаків)
    Long - Довгий запис в форматі з фіксованою комою (15 знаків)
    Short e - Короткий запис в форматі з плаваючою комою (5 знаків +3 знаки порядку)
    Long e - Довгий запис в форматі з плаваючою комою (15 +3 знаки)
    Hex - Запис в вигляді шістнадцяткового числа
    Bank - Запис до сотих частин (грошові одиниці)
    + - Записується тільки знак числа
    Rational - Запис у вигляді раціонального дробу

    Число всередині системи зберігається з усіма введеними цифрами. Виводяться на екран числа у формі встановленого формату. Введене значення і результати обчислень зберігаються з похибкою, що становить приблизно (точне значення в 15-ти десяткових розрядах). Діапазон дійсних чисел знаходиться в межах від Неможливо розібрати вираз (невідома помилка): 10 ^-308)

    до Неможливо розібрати вираз (невідома помилка): 10 ^308)
    

    .

    Константи

    Константа – наперед визначене числове або символьне значення, представлене унікальним іменем. Числа (наприклад 1, -256 і 0.024) являються безіменними числовими константами. Інші види констант в Matlab прийнято називати системними змінними. Вони задаються системою при завантаженні, але можуть переозначатись. Основні системні змінні:

    i, j – уявна одиниця;
    Pi – число π (пі);
    Eps – похибка операцій над числами з плаваючою комою (2-52);
    Realmin – найменше число з плаваючою комою (2-1022);
    Realmax - найбільше число з плаваючою комою (21023);
    Inf – значення машинної нескінченності;
    Ans – результат останньої операції;
    NaN – вказує на нечисловий характер даних (Not-a-Number);

       >> 2*pi
       ans =
        6.28
       >> eps %формат bank
       ans =
        0.00
       >> format short e
       >> eps
       ans =
        2.2204e-016
       >> 1/0
       Warning: Divide by zero.
       ans =
       Inf
       >> 0/0
       Warning: Divide by zero.
       ans =
       NaN
    

    Символьна константа – це ланцюжок символів, записаних між апострофами, наприклад:

       >> '3+cos(z)/log(5)'
       ans =
       3+cos(z)/log(5)
       >> '25.05.2009 о 14:00 - здача курсової роботи'
       ans =
       25.05.2009 о 14:00 - здача курсової роботи
    

    Текстові коментарі

    Оскільки Matlab використовується для достатньо складних обчислень, важливе значення має їх наглядний опис. Це досягається за допомогою текстових коментарів. Коментарі вводяться за допомогою символа %, наприклад так:

       %it is factorial function
    

    Зазвичай перші рядки m-файлів служать для опису їх призначення, яке виводиться на екран після команди

       >> help Ім’я_файлу
    

    Змінні

    Змінні – це іменовані об’єкти, здатні зберігати деякі дані. В залежності від цих даних змінні можуть бути числовими або символьними, векторними або матричними. Щоб присвоїти змінній деяке значення, треба виконати операцію присвоювання:

       Ім’я_змінної = Вираз
    

    Типи змінних наперед не декларуються. Вони приймають тип присвоюваного виразу. Ім’я змінної (її ідентифікатор) може містити яку завгодно кількість символів, але запам’ятовуються і ідентифікуються тільки перші 31.
    Ім’я має бути унікальним, повинне починатися з букви, може містити букви, цифри та символ підкреслювання _. Недопустимо включать в імена змінних пробіли і спеціальні знаки, наприклад +,-,/,* і т. п.
    В пам’яті комп’ютера змінні займають місце - робочу область. Для очистки робочої області використовується функція clear:

       >> clear – знищує означення всіх змінних;
       >> clear x – знищує означення змінної x;
       >> clear a, y, z – знищує означення декількох змінних.
    

    Оператори

    Оператор – це спеціальне позначення для певної операції над даними – операндами. Найпростішими арифметичними операторами є знак суми +, віднімання –, множення * та ділення /. Слід відмітити, що більшість операторів відноситься до матричних операцій. Наприклад, оператори множення * та ділення / обчислюють добуток та частку від двох масивів, векторів або матриць. Є ряд спеціальних операторів, наприклад оператор \ означає ділення справа наліво, а оператори .* і ./ означають поелементне множення та поелементне ділення масивів.
    Дуже часто необхідно виконати формування впорядкованих числових послідовностей. Такі послідовності потрібні для створення векторів чи значень абсциси при побудові графіків. Для цього в Matlab використовується оператор : (двокрапка).

       Початкове_значення:Крок:Кінцеве_значення;
    

    Дана послідовність створює зростаючу послідовність чисел, котра починається з початкового значення, йде з вказаним кроком і завершується кінцевим значенням. Якщо крок не задано, то по замовчуванню він рівний 1. Якщо початкове значення більше за кінцеве, то виводиться повідомлення про помилку. Приклади застосування даного оператора:

       >> i=1:4
       i =
            1     2     3     4
       >> i=0:0.2:1
       i =
                0    0.2000    0.4000    0.6000    0.8000    1.0000
       >> j=5:-1:1
       j =
            5     4     3     2     1
       >> 4:2
       ans =
          Empty matrix: 1-by-0
    

    Повний список операторів можна отримати виконавши команду

       >> help ops
    

    Функції

    Функції – унікально іменовані об’єкти, що виконують визначені перетворення своїх аргументів, і при цьому повертають результати своїх перетворень. Результат обчислення функції з одним вихідним параметром підставляється на місце її визову, що дозоляє використовувати функції в математичних виразах. Функції в загальному випадку мають список аргументів (параметрів). Якщо функція повертає декілька значень, то вона записується у вигляді

       [Y1, Y2, …] = func(X1, X2, …)
    

    де Y1, Y2, … - список вихідних параметрів, і X1, X2, … - список вхідних аргументів.
    Функції можуть бути вбудованими і зовнішніми, або m-функціями. Вбудованими є найбільш поширені елементарні функції, наприклад, sin(x) і exp(x), тоді як функція sinh(x) є зовнішньою функцією. Зовнішні функції містять свої означення в m-файлах. Вбудовані функції зберігаються в відкомпільованому ядрі системи Matlab, тому вони виконуються дуже швидко.
    Мова програмування системи Matlab пропонує ряд ефективних можливостей для задання функцій користувача. Одна з таких можливостей залючається в застосуванні функції inline, аргументом якої треба в апострофах задати вираз, що задає функцію однієї чи декількох змінних. В приведеному прикладі задана функція двох змінних:

       >> func1=inline('sin(x).^2+cos(y).^2')
       func1 =
            Inline function:
            func1(x,y) = sin(x).^2+cos(y).^2
       >> func1(1,0)
       ans =
           1.7081
    

    Можна також задавати свої функції у вигляді m-файлів. У вікні редактора m-файлів (File – Nev – M-File) створити m-файл з ім’ям func3 і лістингом:

       function y=func3(x,y)
       y=sin(x).^2+cos(y).^2
    

    Записавши його на диск, командою

       type func3
    
    вивести лістинг функції. Звертання до функції відбувається як до звичайної, підставляємо в список параметрів потрібні змінні.