Оператор циклу while - matlab керівництво для початківців - matlab скорочення від англ

5.2. Оператор циклу while


Мова програмування MatLab має два оператора циклу: while і for. З їх допомогою, наприклад, виконується програмування рекурентних алгоритмів. підрахунку суми ряду, перебору елементів масиву і багато іншого.

У найпростішому випадку цикл в програмі організовується за допомогою оператора while, який повинен виглядати так:

Тут означає умовний вираз подібне до того, яке застосовується в операторі if, і цикл while працює до тих пір, поки ця умова істинно.

Слід звернути увагу на те, що якщо умова буде помилковим до початку виконання циклу, то оператори, що входять в цикл, не будуть виконані жодного разу.

Наведемо приклад роботи циклу while для підрахунку суми ряду:

S = 0; % Початкове значення суми
i = 1; % Лічильник суми
while i 20% якщо S> 20,
break; % То цикл завершується
end
end% кінець циклу
disp (S); % Відображення суми 21 на екрані

В даному прикладі друга умова завершення циклу, коли S буде більше 20, записано в самому циклі і за допомогою оператора break здійснюється вихід з циклу на функцію disp (), що стоїть відразу після циклу while.

Другий оператор управління виконанням циклу continue дозволяє пропускати виконання фрагмента програми, що стоїть після нього. Наприклад, потрібно підрахувати суму елементів масиву

a = [1 2 3 4 5 6 7 8 9];

виключаючи елемент з індексом 5. Таку програму можна записати в такий спосіб:

S = 0; % Початкове значення суми
a = [1 2 3 4 5 6 7 8 9]; % масив
i = 0; % Лічильник індексів масиву
while i =.

end

Розглянемо роботу даного циклу на прикладі реалізації алгоритму пошуку максимального значення елемента у векторі:

a = [3 6 5 3 6 9 5 3 1 0];
m = a (1); % Поточне максимальне значення
for i = 1: length (a)% цикл від 1 до кінця вектора з
% Кроком 1 (за замовчуванням)
if m m,
m = a (i); % То m = a (i)
end
end% кінець циклу for
disp (m);

В даному прикладі цикл for задає лічильник i і змінює його значення від 1 до 10 з кроком 1. Зверніть увагу, що якщо величина кроку не вказується явно. то він береться за замовчуванням рівним 1.

У наступному прикладі розглянемо реалізацію алгоритму зсуву елементів вектора вправо, тобто передостанній елемент ставиться на місце останнього, наступний - на місце передостаннього, і т.д. до першого елемента:

a = [3 6 5 3 6 9 5 3 1 0];
disp (a);
for i = length (a): - 1: 2% цикл від 10 до 2 з кроком -1
a (i) = a (i-1); % Зміщуємо елементи вектора а
end% кінець циклу for
disp (a);

Результат роботи програми

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

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

6. Рішення рівняння

6.1. Графічний метод розв'язання рівнянь


Висновок на екран відразу декількох графіків надає найпростіший спосіб знайти приблизне значення рішення.

На даному графіку представлені графіки функцій y = sin (t) / t і (x / 5) 2 + y 2 = 1. Як не важко помітити ці функції мають три точки перетину.

6.2. Пошук рішення рівняння


Графічним методом можна лише приблизно оцінити рішення. Для більш точного знаходження рішення в пакеті MatLAB необхідно скористатися функцією fsolve (рівняння, початкове значення). Пізніше ми познайомимося як за допомогою даної функції вирішувати системи рівнянь. У найпростішому випадку вона вирішується рівняння можна вказати можна вказати в одинарних лапках. наприклад: 'x * x-abs (x)'. Але дана функція має три рішення, представлених на рис.

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

fsolve ( 'x * x-abs (x)', - 2), ans = -1.0000;

fsolve ( 'x * x-abs (x)', 0.6), ans = 1.0000;

fsolve ( 'x * x-abs (x)', 0.4), ans = 7.9062e-008.

Функція fsolve продовжує итерационную процедуру до тих пір поки вона не знайде рішення із заданою точністю. З цього в нашому прикладі ми і отримали 7.9062e-008 а не 0.

У разі більш складних функцій їх зручніше представити у вигляді M файлу. Тоді як перший параметр функції fsolve підставляється в одинарних лапках ім'я цього файлу.

7. М-файли

Оператор циклу while - matlab керівництво для початківців - matlab скорочення від англ

М-файли в MatLab бувають двох типів: файл-програми (Script M-Files), що містять послідовність команд, і файл-функції, (Function M-Files), в яких описуються функції, визначені користувачем.

7.2. Файл-програма

Оператор циклу while - matlab керівництво для початківців - matlab скорочення від англ

Оператор циклу while - matlab керівництво для початківців - matlab скорочення від англ

7.3. Файл-функція


М-функції є M-файлами, які допускають наявність вхідних і вихідних аргументів. Вони працюють зі змінними в межах своєї робочої області, відмінною від робочої області системи MATLAB.

Функція average - це досить простий M-файл, який обчислює середнє значення елементів вектора:
function y = average (x)
% AVERAGE Середнє значення елементів вектора.
% AVERAGE (X), де X - вектор. Обчислює середнє значення елементів вектора.
% Якщо вхідний аргумент не є вектором, генерується помилка.
[M, n] = size (x);
if (

((M == 1) | (n == 1)) | (M == 1 n == 1))
error ( 'Вхідний масив повинен бути вектором')
end
y = sum (x) / length (x); % Власне обчислення

Спробуйте ввести ці команди в M-файл, іменований average.m. Функція average допускає єдиний вхідний і єдиний вихідний аргументи. Для того щоб викликати функцію average, треба ввести такі оператори:

приклад
Рядок визначення функції average має вигляд:
function y = average (x)
тут:

  1. function - ключове слово, яке визначає М-функцію;

  2. y - вихідний аргумент;

  3. average - ім'я функції;

  4. x - вхідний аргумент.

Кожна функція в системі MATLAB містить рядок визначення функції, подібну наведеної.

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

function [x, y, z] = sphere (theta, phi, rho)

Імена вхідних змінних можуть, але не зобов'язані збігатися з іменами, зазначеними в рядку визначення функції.

% AVERAGE Середнє значення елементів вектора

Імена М-функцій. В системі MATLAB на імена М-функцій накладаються ті ж обмеження, що і на імена змінних - їх довжина не повинна перевищувати 31 символу. Більш точно, ім'я може бути і довше, але система MATLAB бере до уваги тільки перші 31 символ. Імена М-функцій повинні починатися з літери; інші символи можуть бути будь-якою комбінацією букв, цифр і підкреслень.

Ім'я файлу, що містить М-функцію, складається з імені функції і розширення ".m".

average.m
Якщо ім'я файлу і ім'я функції в рядку визначення функції різні, то використовується ім'я файлу, а внутрішнє ім'я ігнорується. Хоча ім'я функції, певне в рядку визначення функції, може і не збігатися з ім'ям файлу, настійно рекомендується використовувати однакові імена.