Файл: Лабораторна робота 4.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 28.05.2024

Просмотров: 12

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторна робота № 4

Тема: Багатовимірні обчислення і візуалізація результатів в середовищі Matlab|

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

Теоретична частина

Існують чотири основні оператори управління послідовністю виконання інструкцій:

  • оператор умови if|, у поєднанні з оператором else| і elseif| виконує групу інструкцій відповідно до деяких логічних умов;

  • оператор перемикання switch|, у поєднанні з операторами case| і otherwise| виконує різні групи інструкцій залежно від значення деякої логічної умови;

  • оператор умови while| виконує групу інструкцій невизначене число разів, відповідно до деякої логічної умови завершення;

  • оператор циклу for| виконує групу інструкцій фіксоване число разів. Всі оператори управління включають оператор end|, щоб вказати кінець блоку, в якому діє цей оператор управління.

1. Оператор умови

Оператор умови if| .... end| обчислює деякий логічний вираз і виконує відповідну групу інструкцій залежно від значення цього виразу. Якщо логічний вираз істинний, то MATLAB| виконає всі інструкції між if| і end|, а потім продовжить виконання програми в рядку після end|. Якщо умова помилкова, то MATLAB| пропускає всі твердження між if| і end| і продовжить виконання в рядку після end|.

Оператори if| ... else| ... end| і if| ... elseif| ... end| створюють додаткові галуження усередині тіла оператора if|:

Оператор else| не містить логічної умови. Інструкції, пов'язані з ним, виконуються, якщо попередній оператор if| (і можливо elseif| ) помилкові. Оператора elseif| містить логічна умова, яка обчислюється, якщо попередній оператор if| (і можливо elseif|) помилкові. Інструкції, пов'язані з оператором elseif| виконуються, якщо відповідна логічна умова істинна.

Оператор elseif| може багато разів використовуватися усередині оператора умови if|.

2. Оператор перемикання (переключения)

Синтаксис:


switch| <вираз>

% вираз - це обов'язково скаляр або рядок case| <значенняГ|>

інструкції % виконуються, якщо < вираз> =< значення1|> case| <значення2|>

інструкції % виконуються, якщо <вираз> = < значення2|>

otherwise|

інструкції

% виконуються, якщо <вираз> не співпав ні з одним із значень

end|

Оператор switch| ... case| l ... case| до ... otherwise| ... end| виконує галуження, в зависмости| від значень деякої змінної або виразу. Оператор перемикання включає:

  • Заголовок switch|, за яким слідує обчислюваний вираз (скаляр або рядок).

  • Довільна кількість груп case|; Заголовок групи складаються із слова case|, за яким слідує можливе значення виразу, розташоване на одному рядку. Подальші рядки містять інструкції, які виконуються для даного значення виразу. Виконання продовжується до тих пір, поки не зустрінеться наступний оператор case| або оператор otherwise|. На цьому виконання блоку switch| завершується

  • Група otherwise|. Заголовок включає тільки слово otherwise|, починаючи з наступного рядка розміщуються інструкції, які виконуються, якщо значення виразу виявилося не обробленим жодній з груп case|. Виконання завершується оператором end|.

  • Оператор end| є останнім в блоці перемикача.

Оператор switch| працює, порівнюючи значення обчисленого виразу із значеннями груп case|. Для числових виразів оператор case| виконується, якщо <значення>==| <вираз>. Для строкових виразів, оператор case| істинний, якщо strcmp|(значення, вираз) істинно.


3. Оператор циклу з невизначеним числом операцій

Синтаксис:

while| вираз

інструкції end|

Опис:

Оператор циклу з невизначеним числом операцій while| ... end| багато разів виконує інструкцію або групу інструкцій, поки вираз, що управляє, істинний.

Якщо вираз використовує масив, то всі його елементи повинні бути істинні для продовження виконання. Щоб привести матрицю до скалярного значення, слід використовувати функції any| і all|.

Завдання до роботи

Завдання 1 Двовимірна функція і об'ємні графіки в своїх вікнах. Ввести початкові дані.

  • Обчислити двовимірну функцію.

  • Вивести функцію у вигляді 5 тривимірних графіків різного типу.

  • Вивести функцію у вигляді 2 контурних графіків різного типу.

Завдання 2 Двовимірна функція і об'ємні графіки в підвікнах загального вікна.

Варіанти завдань

Функція

Межі зміни

Х

у

1

z = sin|(x) cos|(y)

від -2р до

2р|

від

-2р

до 2р|

2

z = sin|(x/2) cos|(y)

від -2р до

2р|

від

-2р

до 2р|

3

z = sin|(2x|) cos|(y)

від -2р до

2р|

від

-2р

до 2р|

4

z = sin|(x) cos|(y/2)

від -2р до

2р|

від

-2р

до 2р|

5

z = sin|(x/2) cos|(2y|)

від -2р до

2р|

від

-2р

до 2р|

6

z = sin|(2x|) cos|(2y|)

від -2р до

2р|

від

-2р

до 2р|

7

z = (l+sin|(x) /x) (sin|(y) /y)

від -2р до

2р|

від

-2р

до 2р|

8

z = (sin|(x) /x)cos|(y)

від -2р до

2р|

від

-2р

до 2р|

9

z = (sin|(x) /x)|cos(y)|

від -2р до

2р|

від

-2р

до 2р|

10

z = (sin|(x) /x)у

від -2р до

2р|

від

-2р

до 2р|

11

z = (sin|(x) /x)|y|

від -2р до

2р|

від

-2р

до 2р|

12

z = (sin|(x) /x) sin|(y)

від -2р до

2р|

від

-2р

до 2р|

13

z = (sin|(x) /x) |sin(y)|

від -2р до

2р|

від

-2р

до 2р|

14

z = (sin|(x) /x) (l-y|)

від -2р до

2р|

від

-2р

до 2р|

15

z = (sin|(x) /x)|y+0.5|

від -2р до

2р|

від

-2р

до 2р|


Методичні вказівки

  1. У роботі передбачено 2 завдання, в кожній з яких обчислюється двовимірна функція, що описує об'ємну фігуру, і будуються поверхневі і контурні графіки з використанням різних графічних функцій. У перше завданню кожен графік виводиться в своє вікно, в другій в підвікна загального вікна.

  2. Для формування поверхневого або контурного графіка необхідно:

    • задати число крапок по координатах X і Y

    • створити вкладені цикли по X і Y, і обчислити функцію

    • Z=f|(X,Y|)

    • ввести номер графічного вікна, вивести туди графік вибраного типу.

3. Слід використовувати графіки:

  • тривимірний з аксонометрією, функція plot3|(X,Y,Z|)

  • тривимірний з функціональним забарвленням, функція mesh|(X,Y,Z|)

  • тривимірний з функціональним забарвленням і проекцією, функція meshc|(X,Y,Z|)

  • тривимірний з функціональним забарвленням і проекцією, функція surf|(X,Y,Z|)

  • контурний, функція contour|(X,Y,Z|)

  • об'ємний контурний, функція contour3|(X,Y,Z|)

  • тривимірний з освітленням, функція surfl|(X,Y,Z|).

4. У кожному вікні можна малювати декілька графіків з накладенням один на одного. У списку параметрів для кожного графіка параметри перераховуються групами послідовно (у роботі графік для вікна один). До кожної групи входять:

  • X - перша координата майданчика підстави

  • Y - друга координата майданчика підстави

  • Z - значення функції.

Приклад виконання

Завдання||

Функція Межі зміни аргументів -2π...

Завдання 1

% Завдання 1

% Число крапок і крок

N=40|;

h=pi/20;

% Розрахунок матриці

for| n=1:2*N+1|

if| n==N+1| A(n)=1; else| A(n)=sin(h*|(n-N-1|))/(h*|(n-N-1|));

end|;

end|;

for| n=1:2*N+1|

for| m=1:2*N+1| Z(n,m|)=A(n)*A(m);

end|; end|;

% Завдання майданчика [X,Y|]=meshgrid([-N:1:N]); % Виведення графіка в аксонометрії у вікно 1 figure|(1); plot3|(X,Y,Z|);

% Виведення тривимірного графіка з функціональним забарвленням у вікно 2 figure|(2); mesh|(X,Y,Z|);

% Виведення тривимірного графіка з функціональним забарвленням і проекцією у вікно 3 figure|(3); meshc|(X,Y,Z|);

% Виведення тривимірного графіка з проекцією у вікно 4 figure|(4); surf|(X,Y,Z|);

% Виведення контурного графіка у вікно 5 figure|(5); contour|(X,Y,Z|);

% Виведення об'ємного контурного графіка у вікно 6 figure|(6); contour3|(X,Y,Z|);


% Виведення об'ємного графіка з освітленням у вікно 7 figure|(7); surfl|(X,Y,Z|);

Мал. 3.1. Результат виконання програми (завдання 1) - графіки| виводяться в

окремих вікнах

Завдання 2

% Завдання 2

% Число точок і крок

N=40|;

h=pi/20;

% Розрахунок матриці

for| n=1:2*N+1|

if| n==N+1| A(n)=1; else| A(n)=sin(h*|(n-N-1|))/(h*|(n-N-1|));

end|;

end|;

for| n=1:2*N+1|

for| m=1:2*N+1| Z(n,m|)=A(n)*A(m);

end|; end|;

% Завдання майданчика

[X,Y|]=meshgrid([-N:1:N]);

% Виведення графіка в аксонометрії в підвікно 1 subplot|(3,3,1),plot3|(X,Y,Z|);

% Виведення тривимірного графіка з функціональним забарвленням в підвікно 2

subplot|(3,3,2),mesh|(X,Y,Z|);

% Виведення тривимірного графіка з функціональним забарвленням і проекцією в підвікно 3

subplot|(3,3,3),meshc|(X,Y,Z|);

% Виведення тривимірного графіка з проекцією в підвікно 4

subplot|(3,3,4),surf|(X,Y,Z|);

% Виведення контурного графіка в підвікно 5

subplot|(3,3,5),contour|(X,Y,Z|);

% Виведення об'ємного контурного графіка в підвікно 6

subplot|(3,3,6),contour3|(X,Y,Z|);

% Виведення об'ємного графіка з освітленням в підвікно 7

subplot(3,3,7),surfl(X,Y,Z);

Мал. 3.2. Результат виконання програми (завдання 2) - графіки| виводяться в

одному вікні

Контрольні питання

  1. Організація вкладених циклів.

  2. Правила завдання багатовимірних функцій.

  3. Зв'язок двовимірної функції з матрицею для виведення графіків.

  4. Виведення багатовимірних результатів у формі таблиці.

  5. Тривимірна графіка в аксонометрії.

  6. Тривимірна графіка з функціональним розфарбовуванням

  7. Тривимірна графіка з функціональним розфарбовуванням і проекцією.

  8. Контурна графіка.

  9. Об'ємна контурна графіка.

  10. Об'ємна графіка з освітленням.

8