- •Глава 3. Инструментальные средства моделирования
- •3.2.2 Пользовательский интерфейс
- •3.2.3. Создание, редактирование и отладка м-файлов
- •3.2.3 Простейшие вычисления
- •Элементарные математические функции
- •Функции, определенные пользователем
- •3.2.4 Массивы в matlab
- •3.2.5 Основные матричные операции
- •3.2.6 Графики в matlab Построение двумерных графиков
- •Операторы цикла Оператор for … end
- •Цикл while
- •Обработка массивов и матриц средствами м-языка
- •Отладка м-программ в matlab
- •Численное решение математических задач в matlab
- •Численное интегрирование
- •Символьные вычисления в matlab
- •Вычисление производной
Операторы цикла Оператор for … end
Цикл for … end применяют в тех случаях, когда заранее известно, сколько раз нужно выполнить цикл. Синтаксис оператора for … end:
for x = xn: hx: xk
операторы
end
Здесь х – имя переменной – счетчика цикла, xn – начальное значение счетчика цикла, xk – конечное значение счетчика цикла, hx – шаг приращения счетчика цикла. Если шаг цикла равен 1, то hx можно опустить.
Выполнение цикла начинается с присвоения счетчику начального значения. Далее выполняется проверка, не превосходит ли счетчик конечное значение. Если результат проверки положительный, то цикл считается завершенным и управление передается следующему за циклом оператору. В противном случае выполняются операторы цикла. После чего счетчик меняет свое значение на величину шага и алгоритм повторяется. Для досрочного выхода из цикла используется оператор break.
Цикл while
Цикл while используется, когда количество проходов заранее не известно, но известно условие завершения цикла. Синтаксис оператора while:
while условие
операторы
end
Обработка массивов и матриц средствами м-языка
Пример 3-10. Требуется поэлементно ввести матрицу А размером NM. Программа ввода матрицы А размером NM на М-языке:
N = input( ‘N=’);
M = input( ‘M=’);
for i = 1:N
for j = 1:M
a(i, j) = input(‘введите элемент’);
end
end
Пример 3-11. Требуется упорядочить элементы массива А, состоящего из N элементов, в порядке их возрастания.
Приведем фрагмент программы на М-языке, реализующий алгоритм упорядочения по возрастанию:
for i = 1:N-1
for j = 1:N-i
if A(j)>A(j+1)
B=A(j);
A(j) = A(j+1);
A(j+1) = B;
end
end
end
Отладка м-программ в matlab
Отладка программ – одна из самых трудоемких задач при программировании. Matlab располагает довольно развитыми инструментами отладки: точками останова, пошаговым выполнением, отображением текущих значений переменных. Рассмотрим основные возможности Matlab для выявления и устранения ошибок в М-файлах.
Основные средства отладки находятся в меню Debug.
Отладку программы целесообразно начинать с расстановки в тексте М-файла точек останова. Точки останова устанавливаются (кликом мышью) напротив тех строк М-файла, на которых выполнение программы прерывается. В строке 5 М-файла (Рис. 3-3.) установлена точка останова.
Рис. 3- 3.
В командной строке при этом появляется символы К>> (Рис. 3-4.). Чтобы продолжить выполнение программы, необходимо выполнить команду Run/Continue или нажать на клавишу F5.
Рис. 3- 4.
В момент останова программы в окне Workspace можно посмотреть значение любой переменной (Рис. 3-5).
Рис. 3- 5.
При необходимости, кликнув мышью на переменной, можно открыть окно редактора массивов Array Editor (Рис. 3-6.)
Рис. 3- 6.
Убрать точку останова можно, кликнув по ней мышью.
Чтобы программа останавливалась в точке останова только при выполнении определенного условия, необходимо ввести это условие в соответствующее окно (Рис. 3- 7.). Вызвать это окно можно с помощью команды Debug/Set/Modify Conditional Breakpoint.
Рис. 3- 7.
Кроме точек останова при отладке М-файла можно использовать режим пошагового выполнения программы: Debug/Step (F10).
Задание 3-3. Написать М-программу для реализации следующих алгоритмов.
1. Задана последовательность А из n целых чисел. Сформировать из нее новую последовательность В по следующему правилу: первое число последовательности А становится первым числом последовательности В, каждое следующее число последовательности А становится элементом последовательности В только в том случае, если оно больше предыдущего числа последовательности В (например, исходные числа – 1, 2, 1, 4, 3, 1, 7, 5, результат – 1, 2, 4, 7).
2. Задана последовательность А из n целых чисел. Сформировать из нее новую последовательность В, состоящую из чисел массива А, которые больше среднего арифметического чисел массива А.
3. Задана матрица А(n, n). Поменяйте в ней местами максимальный и минимальный элементы.