- •Лабораторная работа №4
- •Цикл for
- •Цикл while, суммирование рядов
- •4.2.2 Операторы ветвления
- •Условный оператор if
- •Организация ветвления
- •4.2.3 Приоритет операций
- •4.2.4 Текстовые файлы
- •Открытие файла, считывание данных и закрытие файла
- •Запись в текстовый файл
- •Запись строк
- •Форматный вывод
- •Считывание информации из текстового файла
- •3.3. Порядок выполнения работы
- •3.4 Контрольные вопросы
Лабораторная работа №4
Основы Программирования в MatLab 6.0
4.1 Цель работы.
Получить навыки программирования в среде пакета MatLab, а также навыки работы с файлами. Научиться записывать и считывать информацию в/из файла.
4.2 Теоретическая часть
4.2.1 Операторы цикла
Файл-функции и файл-программы, являются самыми простыми примерами программ. Все команды MatLab, содержащиеся в них, выполняются последовательно. Для решения многих более серьезных задач требуется писать программы, в которых действия повторяются циклически, в зависимости от некоторых условий выполняются различные части программы.Операторы, задающие последовательность выполнения команд, можно использовать как в файл-процедурах, так и в файл-функциях, что позволяет создавать функции со сложной разветвленной структурой.
Выполнение схожих повторяющихся действий в MatLab осуществляется при помощи операторов циклов for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, a while — для действий, число которых заранее не известно, но известно условие продолжения цикла.
Цикл for
Самое простое использование for осуществляется следующим образом:
for count = start: step: final
команды MatLab
end
Здесь count — переменная цикла, start — ее начальное значение, final — конечное значение, a step — шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака. Если шаг цикла равен 1, то его можно не указывать.
Цикл for оказывается полезным при выполнении повторяющихся похожих действий в том случае, когда их число заранее определено. Обойти это ограничение позволяет более гибкий цикл while, применение которого разобрано в следующем разделе.
Цикл while, суммирование рядов
Рассмотрим пример на вычисление суммы. Требуется найти сумму ряда для заданного х (разложение в ряд sin х):
Конечно, до бесконечности суммировать не удастся, но можно накапливать сумму, пока слагаемые являются не слишком маленькими, скажем больше 10-10 (по модулю). Циклом for здесь не обойтись, т. к. заранее неизвестно значение k, обеспечивающее малость текущего слагаемого. Выход состоит в применении цикла while, который работает, пока выполняется условие цикла:
while условие цикла
команды MatLab
end
В данном примере условием цикла является то, что текущее слагаемое
хk / к больше 10-10. Для записи условия в форме, понятной MatLab, следует использовать знак больше (>).
function s = mysin(x)
% Вычисление синуса разложением в ряд
% Использование: у = mysin(x), -pi<x<pi
s = 0;
k = 0;
while abs( x.^(2*k+l)/factorial(2*k+l) ) > l.0e-10
s = s + (-l)^k*x.^(2*k+l)/factorial(2*k+l) ;
k = k + 1;
end
Обратите внимание, что у цикла while, в отличие от for, нет переменной цикла, поэтому до начала цикла k присвоили ноль, а внутри цикла увеличивали k на единицу.
Условие цикла while может содержать не только знак >. Для задания условия выполнения цикла допустимы также другие операции отношения, приведенные в табл. 1.
Таблица 1. Операции отношения
Задание более сложных условий производится с применением логических операторов. Например, условие -1 < х < 2 состоит в одновременном выполнении неравенств х>-1 и х<2 и записывается при помощи логического оператора and
аnd (x > -1 , х < 2)
или эквивалентным образом с символом &
(х > -1) & (х < 2)
Логические операторы и примеры их использования приведены в табл. 2.
Таблица 2. Логические операторы
При вычислении суммы бесконечного ряда имеет смысл ограничить число слагаемых. Если ряд расходится из-за того, что его члены не стремятся к нулю, то условие на малость текущего слагаемого может никогда не выполниться и программа зациклится.