Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Matlab.doc
Скачиваний:
20
Добавлен:
03.11.2018
Размер:
630.27 Кб
Скачать

Содержание.

5.1 Оператор цикла for.

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

5.3 Оператор ветвления if.

5.4 Функции от функций.

5.5 Способы ввода данных и вывода результатов.

5.6 Задания.

__________________

5.1 Оператор цикла for:

for count = start:step:final

команды MatLab

end

Здесь count – переменная цикла; start – её начальное значение; final – конечное значение; step – шаг на который увеличивается (или уменьшатся) переменная count. Если шаг равен 1, то его можно не указывать.

Например, создадим матрицу Q, размера , элементы которой вычисляются по формуле: , для этого в М-файле hil создадим цикл:

------------------------------------------------------------------------------------------------------------------------

% Задание размера матрицы Q

n = 4;

% Инициализируем матрицу Q и заполняем её нулями

Q = zeros(n);

% Вычисляем элементы матрицы Q

for i = 1:n

for j = 1:n

Q(i, j) = 1/(i + j - 1);

end

end

% Отображаем матрицу на экране

disp('Матрица Q = ')

disp(Q)

------------------------------------------------------------------------------------------------------------------------

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

while условие цикла

команды MatLab

end

В условии цикла используются операции отношения или логические операторы:

Обозначение

Операции отношения

= =

равенство

< (>)

Меньше (больше)

< = (> =)

Меньше или рано (больше или равно)

~ =

Не равно

Логические операторы

Условие

Запись в MatLab

Эквивалентная запись

Логическое « и »

and (x<3, k = = 4)

(x<3) & (k = = 4)

Логическое « или »

or (x = = 1, x = = 2)

(x = = 1) | (x = = 2)

Логическое « нет »

not ( x = =2)

~ (x = = 2)

Пример. Найдем сумму диагональных элементов матрицы Q. Набираем команды внимательно, чтобы не произошло зацикливание программы. В случае зацикливания надо принудительно прервать выполнение M-файла. Для этого следует нажать клавиши Ctrl+C или Ctrl+Break.

Продолжаем М-файл hil.

------------------------------------------------------------------------------------------------------------------------

s = 0;

k = 1;

while k <= n

s = s + Q(k, k);

k = k+1;

end

% Отображаем сумму на экане

disp('Сумма диагональных элементов матрицы Q = ')

disp( s );

-----------------------------------------------------------------------------------------------------------------------

У цикла while нет переменной цикла, в отличие, от цикла for, поэтому пришлось до начала цикла присвоить переменной k значение нуль, а затем увеличивать k на единицу.

5.3. Оператор ветвления if.

Оператор if может применяться в простом виде

if условие

команды MatLab

end

Например, напишем файл-функцию Rfun для вычисления выражения

проверяющую значение аргумента.

------------------------------------------------------------------------------------------------------------------------

function f = Rfun(x);

if abs(x) < 1

warning ('результат комплексный')

end

f = sqrt(x^2-1);

-----------------------------------------------------------------------------------------------------------------------

Команда warning служит для вывода предупреждения в командное окно.

Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приведет к выводу в командное окно предупреждения:

>> y = Rfun(0.2)

Warning: результат комплексный

y =

0 + 0.9798i

В общем виде оператор ветвления представляет конструкцию

if - elseifelse

Напишем файл-функцию ifdem, демонстрирующую работу if - elseifelse.

-----------------------------------------------------------------------------------------------------------------------

function ifdem(a);

if (a == 0)

disp('a равно нулю')

elseif a == 1

disp('a равно 1')

elseif a == 2

disp('a равно 2')

elseif a >= 3

disp('a больше или равно 3')

else

disp('a меньше 3, но не равно 0, 1, 2')

end

----------------------------------------------------------------------------------------------------------------------

В зависимости от выполнения того или иного условия работает соответствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else.

Вызовем функцию ifdem с аргументом 1.2:

При организации циклических вычислений следует, позаботься о том, чтобы внутри цикла не возникало ошибок, и не было зацикливания программы. Для досрочного прерывания цикла можно использовать команду break. Оператор break прерывает цикл и происходит выполнение операторов, расположенных в строках следующих за последним end.

Например, напишем программу prch, определяющую является ли заданное число N простым.

------------------------------------------------------------------------------------------------------------------------

N = input('Ведите число: ')

% Предполагаем, что число простое (pr=1)

pr = 1;

% Перебираем все возможные делители числа N от 2 до N/2

for i=2:N/2

% Если N делится на i,

if mod(N,i) == 0

% то число N не является простым (pr=0)

pr =0;

% и прерывается выполнение цикла

break;

end

end

% Если pr равно 1, то N - простое число

if pr == 1

disp('ПРОСТОЕ ЧИСЛО')

else

disp('НЕ ЯВЛЯЕТСЯ ПРОСТЫМ ЧИСЛОМ')

end

------------------------------------------------------------------------------------------------------------------------

Прервать не только цикл, но и программу можно также оператором error.

Например, изменим начало программы prch.

------------------------------------------------------------------------------------------------------------------------

N = input('Ведите число: ')

ost = round(N)- N;

if (N > 0) & (ost == 0)

% Предполагаем, что натуральное число простое (pr=1)

pr = 1;

else

error('ЧИСЛО N НЕ ЯВЛЯЕТСЯ НАТУРАЛЬНЫМ')

end

% Перебираем все возможные делители числа N от 2 до N/2

........

------------------------------------------------------------------------------------------------------------------------

Теперь, если ввести число, не являющимся натуральным, то программа прервется и укажет об ошибке ввода.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]