Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа4.doc
Скачиваний:
14
Добавлен:
16.04.2015
Размер:
147.97 Кб
Скачать

Лабораторная работа №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. Логические операторы

При вычислении суммы бесконечного ряда имеет смысл ограничить число слагаемых. Если ряд расходится из-за того, что его члены не стремятся к нулю, то условие на малость текущего слагаемого может никогда не выпол­ниться и программа зациклится.