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

Лабораторная работа № 6

ПРОГРАММИРОВАНИЕ В MATLAB.

УПРАВЛЕНИЕ ПРОЦЕССОМ ВЫЧИСЛЕНИЯ.

ПРИКЛАДНЫЕ ЗАДАЧИ ПРОГРАММИРОВАНИЯ

Цель. Ознакомление с основными способами программирования всреде MATLAB, возможностями управления процессом вычисления, организации диалога и ввода данных.

6.1. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Программа в MATLAB представляется последовательностью предложений (команд, функций), входящих в алфавит языка. После ввода команды и нажатия Enter она выполняется и результаты выводятся на экран. Если вывод результатов не нужен, то после предложения ставится ";". Таким образом можно последовательно наращивать программу, отслеживая результаты вычислений.

1. Управление процессом вычислений осуществляется с помощью ряда конструкций.

Цикл for (цикл с параметром). Формат оператора:

for <параметр цикла> = <начальное значение>:<конечное значение>;

<тело цикла>

end;

Например, для формирования матрицы Гильберта размерностью M×N можно использовать такую последовательность предложений:

for i=1:m;

for j=1:n;

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

end; % конец цикла по j

end; % конец цикла по i

MATLAB запускает циклы с нецелочисленным приращением.

for <параметр> = <нач. значение>:<шаг>:<конечное значение>;

<тело цикла>;

end;

Цикл while (цикл с предусловием). Выполнение тела цикла производится до тех пор, пока некоторое логическое условие является истинным.Простой пример: чему равно первое положительное число, факториал которого содержит 100 десятичных цифр?

n=1;

while prod(1:n)<1.e100;

n=n+1;

end

Ветвление if – else. Формат оператора:

if <условие> Оператор1; else Оператор2; end;

Если условие истинно, то выполняется группа: Оператор1, иначе – Оператор2.

Переключатели switch. Для осуществления множественного выбора (или ветвления) используется конструкция с переключателем типа switch:

switch Bыражение1

case Выражение2

Список инструкций

case {Выражение3, Выражение4, Выражение5....}

Список инструкций

otherwise Список инструкций end

Если выражение после заголовка switch имеет значение одного из выражений, то выполняется блок операторов case, в противном случае – список инструкций после оператора otherwise. При выполнении блока case исполняются те списки инструкций, для которых Выражение совпадает с Выражением1. Обратите внимание на то, что Выражения 2–5 могут быть числами, константами, переменными, векторами ячеек и строчными переменными. В последнем случае оператор case истинен, если функция strcmp (значение, выражение) возвращает логическое значение «истина».

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

% Вычисление длины окружности с диалоговым вводом радиуса

r=0;

while r>=0,

r = input('Введите радиус окружностиr=');

if r>=0 disp(' Длина окружности L='); disp(2*pi*r), end

end

Обратите внимание на то, что здесь показывается пример организации простейшего диалога. Он реализован с помощью команды input:

input('Введите радиус окружностиr=');

При выполнении этой команды вначале выводится запрос в виде строки, затем происходит остановка работы программы и ожидается ввод значения радиуса r (в общем случае числа). Ввод подтверждается нажатием клавиши Enter, после чего введенное число присваивается переменной г. C помощью команды disp при r>=0 выводится надпись «Длина окружности L=» и вычисленное значение длины окружности.

Приведенные строки включены в управляющую структуру while...end. Это необходимо для циклического повторения вычислений вводом значений r. Пока r>=0, цикл повторяется. Но стоит задать r<0, вычисление длины окружности перестает выполняться, а цикл завершается.

Функция Input может использоваться и для ввода произвольных строковых выражений. При этом она задается в следующем виде:

input('Комментарий', V)

При выполнении этой функции она останавливает вычисления и ожидает ввода строкового комментария. После ввода возвращается набранная строка. Это иллюстрирует следующий пример:

» S=input('Введите выражение ','s') Введите выражение (Вводим)

2*sin(l)

S =

2*sin(l)

» eval(S)

ans =

1.6829

Обратите внимание на то, что функция eval позволяет вычислить выражение, заданное (полученное от функции input) в символьном виде.

3. Функции с переменным числом аргументов. Часто имеется необходимость создавать универсальные функции, производящие те или иные действия в зависимости от числа входных переменных.

При создании таких функций весьма полезны две приведенные ниже функции:

nargin – возвращает число входных параметров данной функции;

nargout – возвращает число выходных параметров данной функции.

Пусть, к примеру, мы хотим создать функцию, вычисляющую сумму квадратов пяти аргументов xl, х2, хЗ, х4 и х5.

Обычный путь состоит в следующем – создаем функцию с именем sum2_5:

function f=sum2_5(x1,x2,x3,x4,x5) ;

f=x1^2+x2^2+x3^2+x4*2+x5^*2;

При наличии всех пяти аргументов функция работает корректно. Но если аргументов менее пяти, она выдает сообщение об ошибке. С помощью функции nargin можно создать функцию sum2_5m, которая работает корректно при любом числе заданных входных аргументов в пределах от 1 до 5:

function f=sum2m_5(x1 ,x2 , хЗ ,x4 , x5) ;

n=nargin;

if n==1 f=x1^2; end

if n==2 f=x1^2+x2^2;end

if n==3 f=x1^2+x2^2+x3^2; end

if n==4 f=x1^2+x2 ^ 2+x3^2+x4 ^ 2: end

if n==5 f=x1^2+x2^2+x3^2+x

Итак, можете проверить, что при изменении числа входных параметров от 1 до 5 вычисления проходят корректно. При большем числе параметров выводится сообщение об ошибке. Это уже действуетвстроенная в интерпретатор MATLAB система диагностики ошибок

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