Основні команди і функції MATLAB

Інформація про навчальний заклад

ВУЗ:
Інші
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2007
Тип роботи:
Інструкція до лабораторної роботи
Предмет:
Алгоритмізація і програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ УКРАЇНИ Державний університет (Львівська політехніка( Основні команди і функції MATLAB Інструкція до лабораторної роботи ( 1 з дисципліни (Алгоритмізація і програмування( і ”Числові методи і моделювання на ЕОМ, ч.1” для студентів базового напряму 6. 0925 (Автоматизація та комп’ютерно-інтегровані технології( Львів 2007 Мета роботи: вивчити формати основних команд і функцій MATLAB, навчитися застосовувати їх для розв'язування задач лабораторних робіт даної дисципліни. Основні відомості про роботу в середовищі MATLAB для Windows  Запуск системи MATLAB можна здійснити декількома способами, а саме: двічі клацнувши лівою клавішею "мишки" на відповідній іконці, шляхом вибору і запуску файлу matlab-s.exe. В результаті на екрані з'явиться командне вікно: Головне меню містить відповідно п'ять меню: File Edit Options Windows Help, кожне з яких має групу опцій, зміст яких відповідає стандартному інтерфейсу прикладних програм Windows. Так, наприклад, в меню File є опції з допомогою яких можна створити новий файл в редакторі Notepad (при роботі з MATLAB 4.0 в Windows 3.1), чи у власному редакторі MATLAB 5.х, відкрити існуючий, або виконати m-файл та інші. Меню Edit включає, наприклад, групу опцій, необхідних для роботи з виділеними фрагментами тексту, а саме копіювання фрагменту тексту в буфер (copy), вирізання в буфер (сut) і вклейка/вставка (paste) фрагменту тексту із буфера. В головному вікні міститься командна стрічка MATLAB, яка починається символом ». За цим символом можна вводити різні команди, числові вирази, імена m-файлів. MATLAB може працювати в режимі калькулятора, тобто можна обчислювати значення виразів безпосередньо введених в командну стрічку, наприклад: »sin(pi/2)*2^3.2-124+exp(2.2) для виконання обчислень натискаємо клавішу "Enter", в результаті отримаємо: ans = -105.7854 Коли в командній стрічці немає змінної, якій присвоюється результат обчислень, то система MATLAB автоматично створює змінну ans(answer), якій вона і присвоює результат. Довідку на будь-яку команду MATLAB можна отримати, ввівши в командній стрічці команду help спеціальний символ/функцію. Необхідно сказати, що система MATLAB підтримує виконання операцій з векторами, матрицями і масивами даних, основним об'єктом системи є прямокутний числовий масив, тобто будь яка змінна розглядається як масив заданої розмірності, якщо наша змінна є числом, то система розглядає його як матрицю 1(1. Наведемо приклади запису елементарних математичних функцій в MATLAB Елементарна математична функція sin(x) cos(x) (x( ex ln(x) lg(x) log2(x) tg(x) arctg(x) sh(x) ch(x)  Запис у MATLAB sin(x) cos(x) abs(x) exp(x) log(x) log10(x) log2(x) tan(x) atan(x) sinh(x) cos(x)  Значення векторній змінній можна присвоїти різними способами, наприклад, » x=[1 2 3 4 5 6 7 8 9 10] x = 1 2 3 4 5 6 7 8 9 10 або » x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; % символ ; блокує вивід результату виконання команди або »x=[1:10] x = 1 2 3 4 5 6 7 8 9 10 Символи, що розміщені після % сприймаються системою як примітка (не виконуються). Символ двокрапка : в даному випадку системою MATLAB використовується для формування значень вектора в діапазоні 1...10 з кроком 1. Для задання іншого кроку, наприклад, (/3 потрібно ввести наступну стрічку: » x=[1:pi/3:10] x = Columns 1 through 7 1.0000 2.0472 3.0944 4.1416 5.1888 6.2360 7.2832 Columns 8 through 9 8.3304 9.3776 Для доступу до елементів вектора використовують наступне звертання <ім'я змінної>(номер елементу вектора), наприклад, потрібно змінній z присвоїти значення п'ятого елементу вектора х: »z=x(5) z = 5.1888 Можна вибрати всі елементи вектора, використовуючи символ : , наприклад » x(:) ans = 1.0000 2.0472 3.0944 4.1416 5.1888 6.2360 7.2832 8.3304 9.3776 В результаті виводиться стовпчик всіх елементів вектора. Введення матриць здійснюється по стрічках, відділяючи рядок від рядка символом ; , наприклад, ввести матрицю , »A=[12:15; pi: pi:4*pi; 1.1:.1:1.4; 1 25 30 40] A = 12.0000 13.0000 14.0000 15.0000 3.1416 6.2832 9.4248 12.5664 1.1000 1.2000 1.3000 1.4000 1.0000 25.0000 30.0000 40.0000 Вибрати елемент створеного масиву можна за його іменем і індексами, наприклад, вибрати , елементи другого рядка і третього стовпчика: » A(2, 3), A(2,:),A(:,3) ans = 9.4248 ans = 3.1416 6.2832 9.4248 12.5664 ans = 14.0000 9.4248 1.3000 30.0000 Вивести весь масив можна по-різному, наприклад: » A(:,:), A A = 12.0000 13.0000 14.0000 15.0000 3.1416 6.2832 9.4248 12.5664 1.1000 1.2000 1.3000 1.4000 1.0000 25.0000 30.0000 40.0000 A = 12.0000 13.0000 14.0000 15.0000 3.1416 6.2832 9.4248 12.5664 1.1000 1.2000 1.3000 1.4000 1.0000 25.0000 30.0000 40.0000 Для проведення обчислень з використанням векторів, матриць операціям ділення /, множення * і підняття до степеня ^ повинен передувати символ крапка . , тобто, ./ , .* , .^ , наприклад, протабулювати функцію: , послідовність запису в командній стрічці MATLAB є наступною: » x=[-pi:pi/6:pi];, y=x.^2.*sin(x-2)./(x+exp(3*x)) y = Columns 1 through 7 -2.8567 -2.6067 -1.7085 -0.6574 0.1030 0.5031 0 Columns 8 through 13 -0.0512 -0.0370 -0.0091 0.0008 0.0015 0.0007 Побудова графіків, поверхонь в системі MATLAB здійснюється напрочуд легко, на відміну від універсальних мов програмування, таких як Pascal чи C/C++. Наприклад, побудуємо графік функції . В результаті введення наступної командної стрічки табулюємо задану функцію, створюється системою MATLAB графічне вікно, в якому відображається графік функції червоним кольором ('r') на чорному фоні. » x=[-pi/2:pi/24:pi/2]; y=pi/4+x.^3./(sin(x+pi/2)+x+exp(-3*x+pi)); plot(x,y,'r-') Для того, щоби змінити чорний фон у графічному вікні на білий (для включення у інші документи і для друку на чорно-білих принтерах найчастіше використовують білий фон і чорний колір графіка) необхідно ввести команду » whitebg % причому всі графічні вікна повинні бути закритими. Додатково на графік функції можна нанести сітку, використовуючи команду » grid В результаті маємо наступний графік функції:  Використовуючи опцію Copy Metafile/Copy Bitmap меню Edit графічного вікна, можна скопіювати у Буфер обміну графік і вставити його у документ, наприклад, MS Word. Графіки у MATLAB 4.х можна зображати різними типами ліній ('-' - неперервною; ':' - пунктирною; '-.' - штриховою; '-.' - штрих-пунктирною; ), а також точками в залежності від використовуваного символу ('.' - крапкою; 'х' - х-символом; '*' - зірочкою; '+' - символом плюс; 'о' - буквою о; ) в поєднанні з різними кольорами Колір жовтий фіолетовий блакитний червоний зелений синій білий чорний  Символ y m c r g b w k  Декілька графіків можна накласти на одну координатну площину, наприклад, побудуємо на одній координатній площині два (і більше) графіки функцій:  і  Запишемо в командній стрічці відповідні команди для побудови графіків цих функцій: » x=[0:0.05:20]; x1=[2*pi:0.1:8*pi]; » y=sin(x); y1=abs(sin(x1+pi)); » plot(x, y, 'b-', x1, y1, 'ko'); grid В результаті маємо побудовані на одній координатній площині два графіки відповідних функцій.  Для накладання графіків використовується також команда hold on. Для попереднього випадку побудови графіків функцій на одній координатній площині послідовність команд з використанням функції hold on виглядатиме так: »x=[0:0.05:20]; x1=[2*pi:0.1:8*pi]; »y=sin(x); y1=abs(sin(x1+pi)); »plot(x, y, 'b-'); »hold on; »plot(x1, y1, 'ko'); grid Для виключення команди hold on (додавання графіка до активного графічного вікна) використовується функція hold off. Окрім роботи з командною стрічкою система MATLAB пропонує користувачу і інші можливості, а саме: створення і запис у вигляді m-файла послідовності команд і операторів системи MATLAB. M-файли поділяють на файли-сценарії (script-файли) і процедури-функції. Файли-сценарії Команда script задає заголовок сценарію і записується в першій стрічці. Script-файли - це є зовнішній файл, що містить послідовність команд і операторів системи MATLAB. Після введення імені такого файлу-сценарію в командну стрічку починається послідовна інтерпретація його операторів. Файл-сценарій може бути перетворений в процедуру-функцію шляхом зміни заголовку. Імена файлів-сценаріїв не можна використовувати як операнди в виразах чи як аргументи функцій. script % divlab1 x=[-pi:0.002:pi]; y=abs(sin(2*pi*x))+... exp(abs(cos(2*pi*x))); plot(x,y,'b.') grid; Запишемо script-файл divlab1.m, в якому буде міститися послідовність команд для побудови графіку функції . Для цього в командному вікні MATLAB в меню File виберемо опцію New, в якій містяться ще три підопції M-file Figure Model. Вибираємо створення M-file в результаті відкривається вікно редактора Notepad, в яке вводимо текст програми і записуємо у свою директорію під іменем divlab1.m. Процедури-функції Якщо перша стрічка m-файлу починається з визначення function [<перелік вихідних змінних>]=<ім'я функції(<перелік вхідних змінних>) - тоді такий файл є m-функцією. Далі після цієї стрічки Міститься послідовність операторів і команд, а також функцій, що будуть виконуватися при використанні новоствореної функції. Такі файли розширюють можливості системи шляхом додавання нових функцій, написаних користувачем в середовищі MATLAB. Необхідно пам'ятати, що ім'я функції і ім'я m-файлу, в якому буде записана створювана функція повинні співпадати. script % divlab1a x=[-pi:0.002:pi]; figure(1); plot(x, my_func(x),'b.') grid; figure(2); z=my_func(x); plot(x, z, 'b.') grid; function [y]=my_func(x); y=abs(sin(2*pi*x))+... exp(abs(cos(2*pi*x))); Як приклад покажемо застосування m-функції до попереднього завдання. Створимо файл з іменем my_func.m з допомогою редактора Notepad, так як було описано вище. У файлі my_func.m буде записана функція, графік якої потрібно побудувати. Файл divlab1.m можна дещо змінити і записати під новим ім'ям divlab1a.m. Якщо ж вираз не поміщається в межах вікна редактора, то його можна розділити, наприклад, на дві частини використовуючи при переносі три крапки (...) (див. файл my_func.m). У файлі divlab1a.m показані можливі варіанти побудови графіків шляхом безпосереднього використання імені функції my_func(x) з її вхідною змінною х і через проміжну змінну z. Також показано використання команди figure, призначеної для створення графічного вікна, в яке виводиться зображення функції. Розв'язування нелінійних рівнянь function [y]=my_fzero(x); y=sin(2*pi*x)+cos(x); Для розв'язування нелінійних рівнянь в MATLAB 4.х призначена функція fzero. Формат цієї функції такий: fzero('імя функції', x0, tol), де x0 - нульове наближення розв'язку; tol - точність шуканого розв'язку, що задається користувачем. Як приклад знайдемо корені такого нелінійного рівняння: . Для цього запишемо процедуру-функцію у файлі my_fzero.m. Далі з командної стрічки викликаємо fzero з відповідними параметрами і отримаємо результат: »fzero('my_fzero',0) ans = 0.6470 Розв'язування систем нелінійних рівнянь function [y]=my_fsolv(x); y=[x(1)+log(x(2)^2); x(1)+x(3); sin(x(1))+x(3); ]; Для розв'язування систем нелінійних рівнянь в MATLAB 5.х призначена функція fsolve. Формат цієї функції наступний: fsolve('імя функції', x0, tol), де 'імя функції' - процедура-функція, в якій всі рівняння системи представлені у вигляді ,  (- кількість невідомих); x0 - нульове наближення розв'язку; tol - точність шуканого розв'язку, що задається користувачем. Як приклад знайдемо корені такого нелінійного рівняння: . Для цього представимо вихідну систему рівнянь у вигляді  , запишемо процедуру-функцію у файлі my_fsolv.m. Далі з командної стрічки викликаємо fsolve з відповідними параметрами і отримаємо розв'язок: » y=fsolve('my_fsolv', [1 1 3]) y = -0.0002 1.0001 0.0002 Числове інтегрування Для обчислення інтегралів числовим методом використовують дві функції, формати яких є такими: quad('імя функції', a, b, tol) і quad8('імя функції', a, b, tol), function [y]=my_quad(x); y=sin(2*x); де 'імя функції' - ім'я процедури-функції, в якій записано підінтегральний вираз; a, b - відповідно верхня і нижня границі інтегрування; tol - точність обчислення визначеного інтегралу. Як приклад знайдемо значення такого означеного інтегралу, а саме: . Створимо файл my_quad.m, в якому запишемо підінтегральну функцію Запишемо згідно формату в командній стрічці MATLAB функцію quad, в результаті чого отримаємо значення інтегралу з точністю, наприклад, до (=1e-5: »quad('my_quad',0,pi/4,1e-5) ans = 0.5000 »format long » ans 0.50000025834235 Якщо потрібно вивести результат з більше ніж чотирма знаками після коми (по замовчуванню - format short), можна ввести інший формат представлення результату, наприклад, format long. Розв'язування звичайних диференційних рівнянь (систем) Для чисельного інтегрування звичайних диференційних рівнянь (ЗДР) (систем звичайних диференційних рівнянь) в MATLAB є декілька функцій. Розглянемо, наприклад, ode23(ode45). Синтаксис цієї функції наступний: [t, X]=ode23(' ім'я функції', t0, tf, x0, tol), де 'ім'я функції' - ім'я m-файлу, в якому обчислюються праві частини системи рівнянь, розв'язаної відносно перших похідних шуканих функцій; t0 - початкове значення часу; tf - кінцеве значення часу; x0 - вектор початкових умов; tol - задана точність; по замовчуванню для ode23 tol=1е-3, для ode45 tol=1е-3. Функції ode23 і ode45 інтегрують системи диференційних рівнянь, використовуючи формули Рунге-Кутта відповідно 2-го і 3-го або 4-го і 5-го порядку. function y=my_ode23(t, x); y=sin(x*t); Розв'яжемо таку задачу Коші . (*) Створимо m-файл my_ode23.m, в якому буде обчислюватися права частина заданого ЗДР першого порядку.  Також cтворимо файл div_ode23.m, в якому запишемо оператори і команди, необхідні для чисельного інтегрування вихідної задачі Коші і для побудови графіка розв'язку ЗДР на часовому інтервалі, наприклад, [0; 30]. Виконаємо послідовність команд, записаних цьому файлі шляхом набору його імені в командній стрічці %divode23 t0=0;tf=12; x0=10; tol=1e-4; [t, X]=ode23('my_ode23',t0,tf,x0,tol); plot(t, X, 'bo'); grid; Аналогічно розв'язують системи ЗДР. Наприклад, розв'яжемо систему ЗДР  (**) де a=0,5; b=0,5; c=1. Створимо m-файл my_ode45.m, в якому буде обчислюватися права частина системи ЗДР першого порядку.  %my_ode45 function [solv]=my_ode45(t, x); a=0.5; b=0.5; c=6.0; [solv]=[-x(2)-x(2); x(1)+a*x(2); b+x(3).*(x()-c);] Створимо файл div_ode45.m, в якому запишемо оператори і команди, необхідні для чисельного інтегрування задачі Коші і для побудови тривимірного графіка розв'язку системи ЗДР. %divode45 t0=0;tf=20; x0=[-0.7, -0.7, 1]; [t, X]=ode45('my_ode45',t0, tf,x0); plot3(X(:,1), X(:,2), X(:,3)); Апроксимація експериментальних даних поліномом %divappr x=[1.0:0.2:3.0]; y=[10 -0.02 -1.1 0.3 2 4 5.2 5 6.5 8 9.1]; plot(x,y,'ro'); n=2; p=polyfit(x,y,n) x=[1.0:0.02:3.0]; f=polyval(p,x); hold on; plot( x,f,'g.'); hold off; grid; Для апроксимації експериментальних даних в MATLAB використовують функцію polyfit(x, y, n), де y - значення функції при відповідних значеннях аргументу х; n - степінь полінома p(x), яким апроксимують експериментальні дані. Функція polyfit знаходить коефіцієнти полінома p(x) степені n, який апроксимує функцію y(x) методом найменших квадратів. Для обчислення значення полінома у точках х використовують функцію polyval(p, x), де p - вектор значень коефіцієнтів полінома p(x) n -ї степені. Приклад використання вказаних функцій наведено в програмі (файл divappr.m), в якій отримані експериментальні дані апроксимують квадратичною функцією.  Література Потемкин В.Г. Система MATLAB. Справочное пособие. М.: ДИАЛОГ-МИФИ, 1997. Потемкин В.Г. Система MATLAB 5 для студентов. Справочное пособие. М.: ДИАЛОГ-МИФИ, 1998. Порядок виконання роботи Протабулювати функцію і побудувати її графік на заданому інтервалі засобами MATLAB. Розв'язати систему нелінійних рівнянь. Знайти розв'язок задачі Коші на заданому інтервалі. Розв'язати систему ЗДР Апроксимувати експериментальні дані поліномами 1, 2 і 3-го порядків. Оформити звіт з лабораторної роботи. Завдання на самостійну роботу № ч/ч Протабулювати функцію і побудувати її графік на заданому інтервалі Розв'язати систему нелінійних рівнянь   1 2                                                                   3 Чисельним методом знайти значення означеного інтеграла на заданому в 1-му завданні інтервалі для відповідної підінтегральної функції. № ч/ч Знайти розв'язок задачі Коші на заданому інтервалі Розв'язати систему ЗДР   4 5                                                                    Апроксимувати експериментальні дані поліномами 1, 2 і 3-го порядків  6  № ч/ч х у   1 2 3 4 5 6 7 8 9 10 10 21 29 35 51 49 47 38 29 26   10 20 30 40 50 60 70 80 90 100 -1.2 2 1 4 7 5 3 -1 -3 -1   2.2 3.2 4.2 5.2 6.2 7.2 8.2 9.2 10.2 11.2 -10 -12 -15 -9 -7 -3 -1 2 2 4   0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 -1 2 3 7 5 3 4 -1 -3 0   3.2 3.4 3.6 3.8 4.0 4.2 4.4 4.6 4.8 5.0 1.2 1.0 0.7 0.8 0.5 -0.1 0.0 0.1 0.2 0.1   2 4 6 8 10 12 14 16 18 20 -11 -2 -3 1 5 13 14 10 19 30   -1 0 1 2 3 4 5 6 7 8 34 43 44 49 43 51 37 35 34 29   21 22 23 24 25 26 27 28 29 30 -1 -1.2 -1.5 -0.9 -0.7 -0.5 0.5 0.1 0.2 0.1   -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 1 2.1 2.9 3.5 5.5 4.9 5.0 3.8 2.7 2.2   0,5 2,5 3,5 4,5 5,5 6,5 7,5 8,5 9,5 10,5 15 12 11 11 10 6 4 9 9 11   0,5 2,0 3,5 5,0 6,5 8,0 9,5 11,0 12,5 14,0 1 -1 -2 -0.5 0 1.1 1.7 2.0 2.1 3.1   0,25 0,5 0,75 1,0 1,25 1,5 1,75 2,0 2,25 2,5 -19 -11 -8 -5 -10 -12 -19 -23 -20 -18   1 3 5 7 9 11 13 15 17 19 -10 20 30 70 50 30 40 10 -3 0   div  6  № ч/ч х у   1.3 2.3 3.3 4.3 5.3 6.3 7.3 8.3 9.3 10.3 1,4 2,5 2,9 3,5 5,7 4,9 4,7 3,8 2,9 2,7   1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 -1.7 2,4 2 4,1 7,1 5,6 3,3 -1.1 -3 -1   2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 -9 -11 -14 -9 -5 -3 -1 1 2,1 4   0.21 0.41 0.61 0.81 1.01 1.21 1.41 1.61 1.81 2.01 -1 2,1 3,2 7,3 5,5 3 4,2 -1,3 -3 0   3.1 3.4 3.7 4.0 4.3 4.5 4.8 5.1 5.4 5.7 1.1 2.0 1.7 0.5 0.3 -0.2 0.2 0.3 0.2 0.1   2 6 10 14 18 22 26 30 34 38 -10 -4 -1 1 3 8 13 11 18 20   -2 0 2 4 6 8 10 12 14 16 3,4 4,4 4,5 5,0 4,3 5,1 3,7 3,5 3,2 3   21 22 23 24 25 26 27 28 29 30 -1,1 -1.3 -1.6 -0.8 -0.6 -0.7 0.5 0.2 0.3 0.1   -1,2 -1,1 -1,0 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3 2 2.3 2.8 3.3 6.5 4.9 6.0 3.5 1.7 2.3   5 10 15 20 25 30 35 40 45 50 1,5 1,2 1,2 1,3 2 0,6 3 1 2 7   0,5 2,0 3,5 5,0 6,5 8,0 9,5 11,0 12,5 14,0 1,3 -1,3 -2,5 -1.5 0,4 1.8 1.9 2.2 2.1 4.1   0,25 0,5 0,75 1,0 1,25 1,5 1,75 2,0 2,25 2,5 -19 -11 -8 -5 -10 -12 -19 -23 -20 -18   1 3 5 7 9 11 13 15 17 19 -10 20 30 70 50 30 40 10 -3 0  
Антиботан аватар за замовчуванням

07.03.2013 16:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!