Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы ПП all-in-one.docx
Скачиваний:
10
Добавлен:
14.11.2019
Размер:
2.64 Mб
Скачать

Первой строки на три (б), объединение 3-й и 2-й строк (в)

18. Вычисляемое выражение сразу после завершения вычисления можно ввести вновь в текущее место ввода нажатием кнопки «стрелка вверх» ↑ (для изменения величин аргументов или коррекции выражения) .

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

Ранее вычислявшееся выражения можно быстро вставить в место ввода путем выделения его левой кнопкой мышки (кнопка далее отпускается) и небольшого протягивания его вниз повторно нажатой левой кнопкой: MATHLAB сам вставит выделенное выражение.

19. Ранее примененную функцию можно вставить в командное окно через копирование её из окна Command History (Протокола команд), в котором все ранее использованные команды и функции сохраняются до тех пор, пока пользователь не удалит их.

20. Чтобы сохранить данные вычислений в окне управления (выражения, программы, результаты или их части) для повторного вызова и работы, необходимо:

• выделить данные,

• скопировать их в буфер,

• вызвать редактор-отладчик m-файлов через меню «Файл-Создать-m-файл», либо командой edit в командном окне,

• вставить скопированные данные в открывшийся новый m-файл и сохранить его через меню редактора File-Save AsФайл-Сохранить как»).

21. Для продолжения вычислительной работы в окне управления с данными, сохраненными по правилам п.20, необходимо через меню «Файл-Открыть» открыть требуемый файл, выделить в нем требуемые для работы фрагменты, скопировать их в буфер и вставить в текущее место ввода окна управления.

Рассмотрим применение перечисленных выше правил для выполнения вычислений.

Использование переменных. Результат вычислений можно присвоить любой переменной, определенной пользователем. Имя переменной должно начинаться с буквы и может состоять из букв, цифр и символа подчеркивания. Система MATHLAB различает строчные и прописные буквы в именах переменных (A и a – это разные переменные). Знак = соответствует операции присваивания. Значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим пространством (Workspace). Использование переменных рассмотрено в примере 1.

Пример 1. Использование переменных

Комментарии к вычислениям:

Если в конце строки ставится точка с запятой, то результат не будет выведен после нажатия Enter.

Здесь нет точки с запятой, и после нажатия Enter результат выводится и присваивается переменной c.

Для того чтобы узнать значение переменной достаточно ввести ее имя в командную строку и нажать Enter.

Использование MATHLAB как калькулятора иллюстрирует также пример 2.

Пример 2. Использование MATHLAB как калькулятора

Комментарии к вычислениям:

Нажатие клавиши Enter.

Результат присваивается переменной с именем ans

Результат выводится в формате с плавающей точкой. Такая запись означает 1.5031·103.

Длинные выражения можно записать в нескольких строках с использованием в качестве знака переноса символа многоточия .

Использование массивов. В системе MATHLAB также используются массивы, математической формой представления которых являются матрицы. Напомним основные действия над матрицами и их реализацию в MATHLAB.

1. Присвоение значений матрице. Простейшей операций с матрицей является ее создание. Для создания столбца необходимо указать его имя, знак равенства и в квадратных скобках через запятую или через пробел перечислить значения элементов. Например: А=[1 2 3 4 5]. В случае если необходимо создать столбец чисел, то в качестве разделителя выступает символ точка с запятой, например: B=[1;3;5;7]. Для создания квадратной или прямоугольной матрицы необходимо чередовать оба этих способа, например:

С=[ 1 2 3 ; 4 5 6 ; 7 8 9 ].

2. Создание матриц специального вида. В математике встречаются матрицы специального вида, часто используемые при решении прикладных задач. Ниже приведен ряд из них:

Единичная матрица, рис. 5, а. В единичной матрице все элементы равны нулю, кроме элементов стоящих на главной диагонали и равных единице. Для создания единичной матрицы необходимо подать команду

<Имя матрицы>=eye(<Размер>).

Например: A=eye(4,4).

Единичная матрица может быть только квадратной.

Матрица со всеми единицами, рис. 5, б. Эта матрица содержит единицы во всех ячейках. Для создания матрицы необходимо указать

<Имя матрицы>=ones(<Кол-во строк>, <Кол-во столбцов>).

Например: A=ones(3, 4).

Нулевая матрица, рис. 5, в. Эта матрица содержит во всех своих ячейках одни нули. Для создания необходимо выполнить следующую команду:

<Имя матрицы>=zeros(<Кол-во строк>, <Кол-во столбцов>).

Например: A=zeros(4, 2).

Случайная матрица, рис. 5, г. Все значения этой матрицы получаются с генератора случайных чисел. Для создания такой матрицы необходимо задать следующую команду:

<Имя матрицы>=rand(<Кол-во строк>, <Кол-во столбцов>).

Например: A=rand(6, 3). По умолчанию в качестве элементов матрицы используются вещественные числа.

а б в г

Рис.5. Специальные матрицы

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

<Имя массива>(<Номер строки>, <Номер столбца>).

Например: A(1,2).

Умножение матрицы на скаляр. В математике для всех матриц определена операция умножения матрицы на скаляр (число). Все значения матрицы в этом случае умножаются на это число:

Сложение, вычитание скаляра из матрицы. Кроме операции умножения матрицы на скаляр для матрицы и скаляра определены операции сложение и вычитания. Действия так же выполняются с каждой ячейкой матрицы отдельно:

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

Произведение матриц. При выполнении операции перемножения матриц выполняется последовательное умножение строки на вектор. При этом количество столбцов в первой матрице должно равняться количеству строк во второй матрице. Матрица результата будет иметь количество столько же строк, сколько и в первой матрице, и количество столбцов равное количеству столбцов во второй матрице:

Присвоение матрице математического выражения. Организация всех переменных системы MATHLAB как матрицы вызывает следующие ограничения применения их в выражениях.

Пример 3.

t=1:5

t= 1 2 3 4 5

y=cos(t)

y=1 0.5 –0.4 –1 –0.6 0.2

z=y/t

z=–0.08

Результат – получается единственное число, а ожидали функцию z(t)=cos(t)/t!

Для организации поэлементного выполнения арифметических операций предусмотрена специальная форма их записи: «.op». Для приведенного выше примера применение операций деления одного массива на другой в виде «./» дает следующий результат:

z=y ./ t

z= 0.5403 –0.2081 –0.3300 –0.1634 0.0567.

Использование массивов рассмотрено в примере 4.

Пример 4. Использование массивов.

Комментарии к вычислениям:

Элементы массива задаются в квадратных скобках.

Другой способ задать массив в виде x:y:z, где x – первый элемент массива, z – последний элемент массива, y – приращение каждого следующего элемента над предыдущим. Здесь элементами массива будут 2 2,5 3 3,5 4.

Сложение и вычитание массивов осуществляется поэлементно.

Операции поэлементного умножения и деления массивов обозначаются: .* и . /

Взятие функции от каждого элемента массива. В результате получится массив той же размерности.

Использование отдельных элементов массива. Номер элемента указывается после имени переменной массива в круглых скобках. Нумерация элементов начинается с единицы.

Сложение и умножение всех элементов массива на число.

Для генерации векторов пользователю предоставляется следующая команда:

<Имя вектора>=<Начальное значение>:<Шаг>:<Конечное значение>.

Например: Х=6:0.2:26.

Ответ: X=

6.0000 6.2000 6.4000 6.6000 6.8000 7.000

Программирование в ППП MATHLAB. Приемы разработки программ в MATHLAB в своей основной форме совпадают с аналогичными программами, разрабатываемыми в большинстве языков программирования.

Цикл for…end. Для данного n ,оператор

x =[];for i =1:n x=[x,i .2 ],end

или

x =[];for i =1:n x =[x,i .2 ],end

создает определенный вектор размерности n ,а оператор

x =[];for i =n:-1:1,x=[x,i .2 ],end

создает вектор с теми же элементами, но размещенными в обратном порядке.

Заметим, что матрица может быть пустой (например, в случае оператора x=[].)

Последовательность операторов

for i =1:m

for j =1:n

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

end

end

H

создаст и напечатает на экране матрицу Гильберта размерности m×n . Точка с

запятой, которая завершает внутренний оператор, предотвращает вывод на экран ненужных промежуточных результатов, в то время как последний оператор H выводит на экран окончательный результат.

Цикл while…end. В общем виде цикл while записывается в виде

while <условие>

<операторы>

end

<Операторы> будут повторяться до тех пор, пока <условие> будет оставаться истинным. Например, для заданного числа a приведенная далее последовательность операторов вычислит и выведет на дисплей наименьшее неотрицательное число n ,такое что 2n < a:

n=0;

while 2 ^n <a

n=n +1;

end

n

Условный оператор if…end. В общем виде простой оператор if используется следующим образом:

if <условие>

<операторы>

end

<Операторы>будут выполняться только если <условие> истинно. Возможно также множественное ветвление, что демонстрируется приведенным далее примером.

if n <0

parity =0;

elseif rem(n,2)==0

parity =2;

else

parity =1;

end

При использовании двухвариантного условного оператора часть, связанная с elseif , конечно, не используется.

Оператор переключения case…end. При необходимости построить конструкцию ветвления с более чем двумя логическими условиями удобнее использовать не вложенные операторы if ,а оператор переключения switch ...case . Этот оператор имеет следующую структуру:

switch <выражение>

%<выражение>-это обязательно скаляр или строка

case <значение1>

операторы

%выполняется, если <выражение>=<значение1>

case <значение2>

операторы

%выполняется, если <выражение>=<значение2>

...

otherwise

операторы

%выполняется, если <выражение>не совпало

%ни с одним значением

end

Условия (операторы отношения). В MATLAB используются следующие операторы отношения:

Обозначение

Значение

<

меньше чем

>

больше чем

<=

меньше или равно

>=

больше или равно

==

равно

=

не равно

Отметим, что знак =используется в операторах присваивания, в то время как

знак ==используется в операторах отношения. Операторы отношения (или, другими словами, логические переменные, которые они создают) могут объединяться с помощью логических операторов:

Обозначение

Значение

&

И

|

ИЛИ

НЕ

Когда эти операторы применяются к скалярам, то результатом является тоже

скаляр 1 или 0 в зависимости от того, является ли результат истиной или ложью. Попробуйте вычислить 3 <5, 3>5, 3==5 и 3==3. Когда операторы отношения применяются к матрицам одного размера, результатом является матрица того же размера, у которой в качестве элементов стоят 0 или 1, в зависимости от соотношения между соответствующими элементами исходных матриц. Попробуйте вычислить a=rand(5), b=triu(a), a ==b .Операторы while и if интерпретируют отношение между матрицами как истинное в том случае, если результирующая матрица не имеет нулевых элементов.

Так, если вы хотите выполнить оператор в том случае, когда матрицы A и B

полностью совпадают, вы можете написать

if A ==B <операторы>end

но если вы хотите выполнить оператор в том случае, когда матрицы A и B не равны, вы должны ввести

if any(any(A .=B))<оператор>end

или, что проще,

if A ==B else <оператор>end .

Заметим, что конструкция

if A .=B, <оператор>, end

почти наверняка не даст того, что нужно, поскольку оператор будет выполняться, только если каждый элемент матрицы A будет отличаться от соответствующего элемента матрицы B. Для сведения матричных отношений к вектору или скаляру можно воспользоваться функциями any и all .В предыдущем примере необходимо использование функции any два раза, поскольку эта функция – векторная.

Функция find. Оператор k=find(x) возвращает вектор k номеров ненулевых элементов вектора/матрицы x .Если x – матрица, то при определении индексов она рассматривается как вектор, образованный последовательно соединенными столбцами матрицы. Вектор find(x) можно использовать совместно с операторами отношения, поскольку результатом применения оператора отношения к матрицам является матрица из 0 и 1 (ложь или истина ). Таким образом, можно с помощью одного оператора find определить и записать сразу все индексы матрицы, удовлетворяющие некоторому условию. Если при этом вспомнить, что оператор цикла for допускает форму for k=KK ,где KK – целый вектор, то удобно использовать их вместе. Например, если вам необходимо выполнить <оператор>только для тех элементов матрицы, которые больше 3 ,то удобно это сделать следующим образом:

for i=find(A>3)

<оператор>

end;

При отладке выражений и программ в окне Редактора-отладчика сообщения об ошибках выдаются в командное окно MATLAB.

М-файлы бывают двух типов: сценарии и функции. Для их создания необходимо вызвать редактор m-файлов командой edit в командном окне либо последовательностью FileNewM-file из меню командного окна

M-файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру:

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

Важны следующие свойства файлов-сценариев:

– они не имеют входных и выходных аргументов;

– работают с данными из рабочей области;

– в процессе выполнения не компилируются;

– представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии при работе в командном окне.

Основным комментарием является первая строка текстовых комментариев, а дополнительным – последующие строки. Основной комментарий выводится при выполнении команд lookfor и help имя_каталога. Полный комментарий выводится при выполнении команды help Имя_файла.

Использование m-файла-сценария состоит в вызове его в заданное место файла для выполнения определяемых им действий.

М-файл-функция является типичным объектом языка программирования системы MATHLAB. Одновременно он является полноценным модулем с точки зрения структурного программирования, поскольку содержит входные и выходные параметры и использует аппарат локальных переменных. Структура такого модуля с одним выходным параметром выглядит следующим образом:

function vаг = f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями

vаг=выражение

М-файл функции имеет следующие свойства:

– он начинается с объявления function, после которого указывается имя переменной var – выходного параметра, имя самой функции и список ее входных параметров;

– функция выдает значение и может использоваться в виде