Справочник от Автор24
Поделись лекцией за скидку на Автор24

Прикладные пакеты моделирования.

  • 👀 269 просмотров
  • 📌 243 загрузки
Выбери формат для чтения
Загружаем конспект в формате docx
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Прикладные пакеты моделирования.» docx
Прикладные пакеты моделирования. Тема 2. Операции с матрицами: Общая информация о разделе В MATLAB любая переменная по умолчанию считается матрицей. Тип матрицы определяется типом ее элементов. В этой работе по умолчанию под матрицей будем подразумевать числовую матрицу. Матрица задается своим именем и размером. Имя матрицы выбирается так же, как и имя простой переменной, а размер указывается произведением m ´ n, где m, n — число строк и столбцов соответственно. Нижняя граница индексов матрицы равна единице. Хранение матриц в оперативной памяти организовано по столбцам. Вектор (вектор-строка) представлен матрицей размером 1 · n, вектор-столбец — матрицей размером n · 1, а скаляр — матрицей размером 1 · 1. Ввод матриц рассматривался в теме 1. Вектор, формирующий регулярную сетку, вводят в виде:   <начальное значение>:[<шаг>:]<конечное значение> Шаг, равный единице, можно не указывать, условным признаком чего служат квадратные скобки. Например: >> y=0:pi/4:pi y =          0    0.7854    1.5708    2.3562    3.1416 >> x=0:9 x =      0     1     2     3     4     5     6     7     8     9 Элементы матрицы могут быть представлены численными константами, простыми переменными, арифметическими выражениями и, в свою очередь, матрицами, например: >> A=[5.3 sin(pi/4) 3+4*i] A =    5.3000             0.7071             3.0000 + 4.0000i >> a=[1 2;3 4],  b=[4 5;6 7] a =      1     2      3     4 b =      4     5      6     7 >> B=[a b] B =      1     2     4     5      3     4     6     7 Обращение к элементу матрицы происходит по ее имени с указанием индексов строки и столбца в круглых скобках: >> B(2,4) ans =      7 По обращению B(i) матрица B воспринимается как вектор, элементы которого сформированы по столбцам: >> B(5) ans =      4 Размер матрицы — число строк m и столбцов n — определяется с помощью функции: size(x) Длина вектора определяется с помощью функции: length(x) Матрица нулевой размерности — пустая матрица — обозначается как A=[]: >> A=[]; size(A) ans =      0     0 Имя пустой матрицы сохраняется в Workspace и в дальнейшем может использоваться для формирования матрицы любого размера. Последнее изменение: Четверг, 31 Март 2016, 14:48 2.1. Функции генерации типовых матриц В MATLAB можно генерировать большое разнообразие типовых матриц с помощью встроенных функций, список которых может быть выведен по команде: help elmat Некоторые из них приведены в табл. 2.1.  Таблица 2.1. Функции генерирования типовых матриц Функция Типовая матрица zeros(M,N) Нулевая матрица M×N ones(M,N) Матрица единиц M×N eye(N) Единичная матрица порядка N rand(M,N) Матрица M×N случайных чисел размера в диапазоне от 0 до 1, распределенных по равномерному закону randn(M,N) Матрица M×N случайных чисел, распределенных по нормальному закону с математическим ожиданием, равным 0, и дисперсией, равной 1 diag(V) Вектор из диагональных элементов квадратной матрицы V Диагональная матрица — все элементы равны нулю, кроме диагональных, равных вектору toeplitz(r) Матрица Теплица —квадратная матрица с одинаковыми элементами на диагоналях, равными соответствующим элементам первого столбца r Последнее изменение: Четверг, 31 Март 2016, 14:58 2.2. Преобразование матриц К операциям преобразования матриц относятся: • выделение из матрицы вектора-столбца: A(:,N) где N — номер столбца; • выделение из матрицы вектора-строки: A(M,:) где M — номер строки; • выделение подматрицы с указанием граничных индексов: A(M1:M2,N1:N2) где: M1:M2 — номера строк с M1 по M2 включительно; N1:N2 — номера столбцов с N1 по N2 включительно; • выделение подматрицы с указанием начальных индексов: A(M1:end;N1:end) где: M1:end — строки с M1 до последней включительно; N1:end — столбцы с N1 до последнего включительно; • растягивание матрицы в вектор-столбец: A(:) • горизонтальная конкатенация (объединение) подматриц (по столбцам): A=[A1,A2,A3,...] где A1,A2,A3,... — объединяемые подматрицы с одинаковым числом строк; • вертикальная конкатенация подматриц (по строкам): A=[A1;A2;A3;...] где A1;A2;A3;... — объединяемые подматрицы с одинаковым числом столбцов; • копирование матрицы, выполняемое с помощью функции: repmat(A,m,n) где: A — исходная матрица как элемент новой матрицы; m, n — число копий матрицы A по строкам и столбцам соответственно; • копирование квадратных матриц, выполняемое с помощью функции: repmat(A,n) где: A — исходная квадратная матрица как элемент новой квадратной матрицы; n — число копий матрицы A по строкам и столбцам. Последнее изменение: Четверг, 31 Март 2016, 16:58 2.3. Поэлементные операции с матрицами К поэлементным операциям с матрицами относятся арифметические операции и вычисление элементарных функций, аргументы которых — матрицы. Признаком поэлементных арифметических операций является точка перед символом операции: >> A=[1 2 3;2 -1 5;1 -1 -1],  B=[-1 -2 -3;-4 -5 -6;-7 -8 -9]  A =      1     2     3      2    -1     5      1    -1    -1 B =     -1    -2    -3     -4    -5    -6     -7    -8    -9 >> A.*B ans =     -1    -4    -9     -8     5   -30     -7     8     9 Последнее изменение: Четверг, 31 Март 2016, 17:00 2.4. Операции с матрицами в задачах линейной алгебры К простейшим операциям с матрицами в задачах линейной алгебры относятся: • арифметические операции; • транспонирование и эрмитово сопряжение; • обращение; • матричное деление. Последнее изменение: Четверг, 31 Март 2016, 17:01 2.4.1. Арифметические операции с матрицами К арифметическим операциям с матрицами относятся: • сложение и вычитание матриц одинакового размера; Суммой (разностью) матриц A и B размером m · n называется матрица C того же размера с элементами, равными сумме (разности) соответствующих элементов матриц A и B. Для операций сложения и вычитания матриц справедливы обычные законы арифметики: A + B = B + A; A – B = –B + A. Пример сложения матриц: >> A=[1 2 3;2 -1 5;1 -1 -1];  B=[-1 -2 -3;-4 -5 -6;-7 -8 -9]; >> C=A+B C =      0     0     0     -2    -6    -1     -6    -9   -10 • умножение матрицы на скаляр (число), эквивалентное операции поэлементного умножения на скаляр; • умножение матрицы на матрицу; Операция умножения возможна только в том случае, если число столбцов матрицы A равно числу строк матрицы B. Произведением матрицы A размером m · n на матрицу B размером n · p называется матрица C размером m · p, элемент i-й строки и k-го столбца которой равен сумме произведений соответственных элементов i-й строки матрицы A и k-го столбца матрицы B: В общем случае умножение матриц не коммутативно: AB ≠ BA. Пример умножения матриц: >> D=[1 2 5 7;3 8 0 3] D =      1     2     5     7      3     8     0     3 >> size(D) ans =      2     4 >> F=[1 2 0;3 8 5;0 3 4;9 7 1] F =      1     2     0      3     8     5      0     3     4      9     7     1 >> size(F) ans =      4     3 >> D*F ans =     70    82    37     54    91    43 • возведение квадратной матрицы в целую степень q, эквивалентное умножению матрицы саму на себя q раз: >> A=[1 2;4 5] A =      1     2      4     5 >> B=A^3 B =     57    78    156   213 Последнее изменение: Четверг, 31 Март 2016, 17:10 2.4.2. Транспонирование и эрмитово сопряжение матриц Транспонирование матрицы — это операция замены каждой строки столбцом с тем же номером. Эрмитово сопряжение матрицы — это операция транспонирования матрицы с одновременной заменой ее элементов на комплексно сопряженные. Операции транспонирования и эрмитова сопряжения выполняются с помощью одного и того же символа " ' " (апостроф). Результат зависит от исходной матрицы — является она вещественной или комплексной. В первом случае получим транспонированную, а во втором — эрмитово сопряженную матрицу: >> A=[1 2 3;4 5 6;7 8 9] A =      1     2     3      4     5     6      7     8     9 >> A' ans =      1     4     7      2     5     8      3     6     9 >> C=[3+2i 4-5i;7-5i 1+i;2+2i 1-8i] C =    3.0000 + 2.0000i   4.0000 - 5.0000i    7.0000 - 5.0000i   1.0000 + 1.0000i    2.0000 + 2.0000i   1.0000 - 8.0000i >> C' ans =    3.0000 - 2.0000i   7.0000 + 5.0000i   2.0000 - 2.0000i    4.0000 + 5.0000i   1.0000 - 1.0000i   1.0000 + 8.0000i Транспонирование комплексной матрицы выполняется с помощью символа поэлементного транспонирования: >> C.' ans =    3.0000 + 2.0000i   7.0000 - 5.0000i   2.0000 + 2.0000i    4.0000 - 5.0000i   1.0000 + 1.0000i   1.0000 - 8.0000i Матрицу с комплексно сопряженными элементами можно получить с помощью функции conj: >> conj(C) ans =    3.0000 - 2.0000i   4.0000 + 5.0000i    7.0000 + 5.0000i   1.0000 - 1.0000i    2.0000 - 2.0000i   1.0000 + 8.0000i Последнее изменение: Четверг, 31 Март 2016, 17:13 2.4.3. Обращение матриц Матрица B называется обратной к матрице A, если произведение этих матриц дает единичную матрицу I: AB = BA = I. Матрица, обратная к матрице A, обозначается как A–1. Операция обращения возможна только для квадратных матриц с определителем, не равным нулю. Обратная матрица вычисляется с помощью функции: inv(A) а определитель матрицы — с помощью функции: det(A) Например: >> A=[1 2;4 5] A =      1     2      4     5 >> inv(A) ans =    -1.6667    0.6667     1.3333   -0.3333 >> det(A) ans =     -3 Последнее изменение: Четверг, 31 Март 2016, 17:16 2.4.4. Матричное деление В списке символов арифметических операций содержатся два символа матричного деления с квадратными матрицами A и B порядка n: • левое матричное деление — A\B, эквивалентное алгебраической операции A–1B, т. е. inv(A)*B; • правое матричное деление — A/B, эквивалентное алгебраической операции AB–1, т. е. A*inv(B). Тема 3. Типы массивов В MATLAB тип массива (тип данных) определяется типом его элементов. По умолчанию мы имели дело с матрицами, элементы которых представлены константами в форме с плавающей точкой (ПТ) с двойной точностью. Такие массивы относятся к типу double. Типы числовых и нечисловых массивов представлены в табл. 3.1. Таблица 3.1. Типы массивов в MATLAB Символическое обозначение типа массива Тип массива Функция преобразования типа   Числовой:   double вещественный двойной точности double(X) single вещественный одинарной точности single(X) int8 целый 8-битовый со знаком int8(X) uint8 целый 8-битовый без знака uint8(X) int16 целый 16-битовый со знаком int16(X) uint16 целый 16-битовый без знака uint16(X) int32 целый 32-битовый со знаком int32(X) uint32 целый 32-битовый без знака uint32(X) int64 целый 64-битовый со знаком int64(X) uint64 целый 64-битовый без знака uint64(X) logical Логический logical(X) character (char) Символьный num2str(X) structure (struct) Структура (массив записей) — cell Массив ячеек — Последнее изменение: Пятница, 1 Апрель 2016, 09:32 3.1. Матрицы числового и логического типов Преобразование матриц числового типа double в матрицы других числовых типов выполняется с помощью специальных встроенных функций (см. табл. 3.1). При обработке матриц числового целого типа необходимо иметь в виду, что с ними запрещено выполнение арифметических операций, в том числе вычисление большинства встроенных функций, но разрешено выполнение операций отношения и логических операций: >> T = [159.7 125.7 -125.7]; >> A = int8(T); A =   127  126 -126 >> B = uint8(T) B =   160  126    0 >> C = [A> a=['Alla ' 'Woman ' 'Russian'] a = Alla Woman Russian • элементы столбца должны содержать одинаковое число символов, при этом пробел считается символом: >> a=['Alla   ';'Woman  ';'Russian'] a = Alla   Woman  Russian Автоматическое добавление пробелов в элементах столбца с выравниванием по левому краю выполняется с помощью функции: char('',''...) где , ... — элементы столбца с произвольным количеством символов. Одна функция char описывает один столбец матрицы: >> a = char('Alla','Woman','Russian') a = Alla   Woman  Russian Матрицу символьного типа удобно формировать по столбцам, используя для каждого из них свою функцию char и предусматривая необходимое количество пробелов для разделения столбцов: >> x = [char('a','aa','aaa') char(' bb',' bbb',' b') ... char(' cc',' ccc',' c')] x = a   bb  cc aa  bbb ccc aaa b   c Преобразование в матрицу символьного типа выполняется с помощью функции num2str(x): >> x = [5 7;-1 9] x =      5     7     -1     9 >> y = num2str(x) y = 5  7 -1  9 Здесь x — матрица типа double, а y — матрица символьного типа: >> [size(x); size(y)] ans =      2     2      2     5 Последнее изменение: Пятница, 1 Апрель 2016, 09:37 3.3. Структуры (массивы записей) Структура (массив записей — struct array) — это разновидность нечислового массива, предназначенного для описания M объектов N параметрами. Для описания структуры потребуется ввести ряд новых терминов. Поле (field) — имя параметра. Значение  поля — значение параметра. Число полей равно количеству параметров N. Запись — список полей,  одинаковый для всех M объектов. Значение записи — список полей с их значениями для одного объекта. Число записей равно количеству объектов M. Структура (массив записей) — это упорядоченная совокупность значений записей, объединенная одним именем. Имя структуры выбирается так же, как имя простой переменной, а размер равен числу записей M. Значение каждой i-й записи формируется отдельно по каждому n-му полю: <имя массива>().<имя n-го поля> = <значение n-го поля> Таким образом, для формирования M значений записей со списком из N полей, потребуется M · N операторов присваивания. Сформируем структуру personal для описания трех объектов (M = 3) — трех членов кафедры — четырьмя параметрами (N = 4). Запись включает в себя следующие поля: surname — фамилия — скаляр символьного типа; data — дата рождения (число, месяц, год)  — вектор численного типа; position — должность — скаляр символьного типа; phd — наличие ученой степени — скаляр логического типа. Сформируем значения структуры personal по каждому полю: >> personal(1).surname = 'Иванов'; >> personal(2).surname = 'Петров'; >> personal(3).surname = 'Сидоров'; >> personal(1).data = [1 2 1949]; >> personal(2).data = [5 7 1975]; >> personal(3).data = [5 8 1956]; >> personal(1).position = 'профессор'; >> personal(2).position = 'доцент'; >> personal(3).position = 'зав.лаб.'; >> personal(1).phd = true; >> personal(2).phd = true; >> personal(3).phd = false; Список полей выводится по имени структуры: >> personal personal = 1x3 struct array with fields:     surname     data     position     phd Значение i-й записи выводится по имени структуры с указанием индекса в круглых скобках. Например, значение 2-й записи: >> personal(2) ans =      surname: 'Петров'         data: [5 7 1975]     position: 'доцент'          phd: 1 Значение поля в i-й записи выводится по имени структуры с указанием индекса в круглых скобках и имени поля. Например, значение поля surname первой записи: >> personal(1).surname ans = Иванов Значения поля во всех записях выводятся по имени структуры с указанием имени поля. Например, поля surname: >> personal.surname ans = Иванов ans = Петров ans = Сидорова Удаление поля выполняется с помощью функции: <имя массива> = rmfield(<имя массива>,'<имя поля>') Например, с поле data: >> personal = rmfield(personal,'data') personal = 1x3 struct array with fields:     surname     position     phd При этом следует иметь в виду, что знак присваивания обязателен. Строка >> rmfield(personal,'data') приведёт к тому, что переменной ans будет присвоено значение структуры без поля data, однако в исходной структуре personal поле останется. Последнее изменение: Пятница, 1 Апрель 2016, 09:42 3.4. Массивы ячеек Массив ячеек (cell array) — это наиболее сложный тип массива, элементами которого являются ячейки, представляющее собой массивы любой размерности, любого размера и типа. Элементы массива ячеек указываются в фигурных скобках. Сформируем квадратную матрицу ячеек 3×3: >> A{1,1} = pi; >> A{1,2} = [1 2 3;4 5 6]; >> A{1,3} = char('abs','angle'); >> A{2,1} = [ones(5,1)]'; >> A{2,2} = zeros(3,1); >> A{2,3} = 'Alla'; >> A{3,1} = 7 ; >> A{3,2} = rand(5,1); >> A{3,3} = personal; где personal — имя структуры, сформированной в разд. 3.3. Массив ячеек может быть введён как обычная матрица, только вместо квадратных скобок используются фигурные: >> B = {pi, personal; sin(0.5*pi) [1 2 3]}; Вывод элементов массива ячеек выполняется по его имени с указанием индексов: >> A{1,2} ans =      1     2     3      4     5     6 >> A{3,3} ans = 1x3 struct array with fields:     surname     age     position     pd С элементами массива ячеек можно выполнять операции, разрешенные для данного типа массива и с учетом согласования их размерностей и размеров, например: >> B = sum(A{1,2})+A{1,1} B =     8.1416   10.1416   12.1416 Графическое представление матрицы ячеек создается с помощью функции: cellplot(A,'legend') Последнее изменение: Пятница, 1 Апрель 2016, 09:45 3.5. Определение типа массива Для определения типа массива служит функция: class(<имя массива>) Например, для массива A, сформированного в разд. 3.4: >> class(A) ans = cell Последнее изменение: Пятница, 1 Апрель 2016, 09:45 Тема 5. Режим программирования: script-файлы и function-файлы Общая информация о разделе Режим программирования предназначен для разработки программ пользователя в среде MATLAB. Все программы пользователя, создаваемые в MATLAB, сохраняются на диске и имеют расширение m, поэтому их называют M-файлами. Различают две разновидности M-файлов: • script-файл (файл-сценарий); • function-файл (файл-функция). В M-файлах, независимо от их вида, должны соблюдаться следующие правила языка MATLAB: • переменные не объявляются и не описываются; • не используются метки; • отсутствует оператор безусловного перехода типа "go to" (т. к. нет меток); • не фиксируется (оператором или служебным словом) конец программы. Последнее изменение: Пятница, 1 Апрель 2016, 12:06 5.1. Создание и хранение M-файлов Для создания M-файла и его сохранения в папке пользователя необходимо выполнить следующую последовательность действий: 1. В окне MATLAB выбрать в главном меню пункт File | New (Файл | Новый) и определить тип создаваемого M-файла. 2. В раскрывшемся окне Editor (Редактор) набрать текст M-файла построчно. 3. Для сохранения M-файла выбрать в главном меню команду File | Save as (Сохранить как). 4. В раскрывшемся окне Save as выбрать требуемую папку, присвоить имя новому M-файлу (без расширения) и нажать кнопку Save (Сохранить). При открытом окне редактора после внесения изменений в M-файл необходимо его сохранить перед следующим запуском. Признаком несохраненного файла является символ " * " (звездочка) при его имени в окне редактора. Создание новой папки выполняется с помощью контекстного меню в окне Current Folder. Сохранение пути к требуемой папке выполняется по команде контекстного меню Add Path | Selected Folders (Добавить путь | Выбранные папки) или команде главного меню File | Set Path (Файл | Установить путь). Сохранение пути к папке позволять в текущей сессии запускать М-файл, не  открывая данную папку. При запуске M-файлов из текущей папки, путь к ней можно не сохранять. Последнее изменение: Пятница, 1 Апрель 2016, 12:10 5.2. Script-файлы Script-файлом называют создаваемый пользователем M-файл, представляющий собой основную (управляющую) программу. Термины "script-файл" и "программа" употребляют в тождественном смысле. Программа состоит из операторов, записываемых построчно. По правилам хорошего стиля программирования рекомендуется: • в начале программы ставить необязательный оператор-заголовок: script • после этого, во избежание конфликта переменных в Workspace и для очистки экрана, можно поставить команды clc и clear. Имя script-файла выбирается по тем же правилам, что и имя переменной. Пример простейшего script-файла S1: script clc % Диапазон значений аргумента x = 0:0.1:7; % Вычисление значений синусоиды y y = sin(x); % Вычисление значений косинусоиды z z = cos(x); Обращение к script-файлу в режиме прямых вычислений (или в другом М-файле) осуществляется по его имени: >> S1 После этого выполняются действия согласно программе. Все переменные script-файла являются глобальными, т. е. они сохранятся в Workspace и доступны для использования в любых приложениях. Последнее изменение: Пятница, 1 Апрель 2016, 12:15 5.3. Function-файлы Function-файлом называют создаваемый пользователем M-файл, представляющий собой внешнюю функцию (в отличие от встроенных функций MATLAB). Термины "function-файл" и "внешняя функция" употребляют в тождественном смысле. Описание function-файла начинается с оператора-заголовка function. Формат описания при нескольких выходных параметрах имеет вид: function [Y1,Y2,...] = <имя функции>(X1,X2,...) где: <имя функции> — имя function-файла, выбираемое подобно имени переменной; X1, X2,… — список  формальных входных параметров; Y1, Y2,… — список формальных выходных параметров. При одном выходном параметре имеем короткий формат описания: function Y = <имя функции>(X1,X2,...) После заголовка следует тело функции — записанная построчно на языке MATLAB программа определения выходных параметров Y1, Y2,… по входным — X1, X2,…. Пример function-файла F1: function [z,p] = F1(x,y) % Вычисление суммы кубов z z = x.^3+y.^3; % Вычисление квадратного корня p p = sqrt(abs(z)); Пример function-файла F2 с одним выходным параметром: function z = F2(x,y) % Вычисление суммы кубов z z = x.^3+y.^3; Обращение к внешней функции подобно обращению к стандартной функции MATLAB. При нескольких выходных параметрах: [Y1факт,Y2факт,...] = <имя функции>(X1факт,X2факт,...) где: X1факт, X2факт,… — список фактических входных параметров; Y1факт, Y2факт,… — список фактических выходных параметров. Фактические значения входных параметров X1факт, X2факт,…, должны быть определены перед обращением к внешней функции. Варианты обращения к function-файлу F1: >> [d,c] = F1(2,3); >> a = 2; b = 3; >> [d,c] = F1(a,b); При одном выходном параметре допускается короткий формат обращения: <имя функции>(X1факт,X2факт,...) Варианты обращения к function-файлу F2: >> a = 2; b = 3; >> d = F2(a,b)+sin(7+F2(5,7)); Разделение параметров function-файлов на формальные и фактические обусловлено тем, что формальные параметры являются локальными, т. е. они (вместе с внутренними переменными function-файла) загружаются в Workspace на время вычисления внешней функции и удаляются из Workspace по завершении вычислений. Фактические же параметры сохраняются в Workspace. Последнее изменение: Пятница, 1 Апрель 2016, 12:39 5.4. Оформление и вывод листинга M-файлов При оформлении М-файлов рекомендуется соблюдать следующие правила: • включать комментарии, поясняющие назначение переменных, выполняемые действия и т. п.; • во избежание выводов нежелательных промежуточных результатов ставить точку с запятой. Вывод листинга M-файла в окне Command Window выполняется по команде: type <имя M-файла> Последнее изменение: Пятница, 1 Апрель 2016, 12:39 5.5. Вывод данных Вывод данных в окно Command Window во время выполнения программы организуется с помощью функции disp, например: >> disp(['x     ' 'a     ' 'b']) x     a     b Для вывода значения численной переменной одновременно с текстом удобно воспользоваться функцией num2str: >> i = 5; >> disp(['  Коэффициент ',num2str(i),'-го ВАРИАНТА']) Коэффициент 5-го ВАРИАНТА Последнее изменение: Пятница, 1 Апрель 2016, 12:42 5.6. Пауза и досрочное прерывание программы Приостановить процесс выполнения программы на неопределенное (до нажатия любой клавиши) время можно по команде: pause Досрочное прерывание процесса выполнения программы в результате проверки тех или иных условий выполняется по команде return Рекомендуется предусмотреть вывод сообщения о причине досрочного прерывания. Для принудительного снятия script-файла с выполнения следует на клавиатуре нажать комбинацию клавиш  + . Последнее изменение: Пятница, 1 Апрель 2016, 12:44 Тема 6. Режим программирования: организация разветвлений и циклов 6.1. Операторы организации разветвлений Имеется две основные разновидности разветвлений, реализуемые двумя операторами MATLAB: 1. Разветвление по условию выполняется с помощью оператора if. Формат оператора if с несколькими условиями имеет вид: if <условие1>      <фрагмент1> elseif <условие2>          <фрагмент2> ... elseif <условиеN-1>          <фрагментN-1> ... else      <фрагментN> end Действие оператора: если значение <условия1> "истинно", то управление передается <фрагменту1>, если значение <условия2> "истинно", то управление передается <фрагменту2> и т. д. вплоть до <условияN-1>; если значения всех условий "ложно", то управление передается <фрагментуN>; после этого оно передается части программы, следующей за end. Все условия и фрагменты, кроме первых, не являются обязательными. Пример использования оператора: if i>j    a(i,j) = 1; elseif i==j    a(i,j) = -1; else    a(i,j) = 0; end 2. Разветвление в зависимости от значения выражения (арифметического, символьного или логического) выполняется с помощью оператора switch следующего формата: switch <выражение>     case <значение1>            <фрагмент1>     case <значение2>            <фрагмент2>     ...     otherwise            <фрагментN> end Действие оператора: в зависимости от значения <выражения> управление передается соответствующему <фрагменту>; если значение выражения не равно ни одному из указанных, то управление передается <фрагментуN> (который может отсутствовать); после этого управление передается части программы, следующей за end. Например: function y=switchEx(a,b) x = [pi/6 pi/8 pi/16]; switch (a+b)     case 0          y = sin(x);     case 1          y = cos(x);     otherwise          y = tan(x) end Последнее изменение: Пятница, 1 Апрель 2016, 15:39 6.2. Операторы организации циклов Имеются две основные разновидности циклов, реализуемые двумя операторами MATLAB: 1. Арифметический цикл с заранее известным (фиксированным) числом повторений организуется с помощью оператора for одного из следующих форматов: • с простой переменной цикла: for <переменная> = <нач.значение>:[<шаг>:]<кон.значение>       <тело цикла> end где: <переменная> — имя простой переменной цикла; <нач.значение>, <кон.значение>, <шаг> — соответственно начальное и конечное значения переменной цикла и шаг ее изменения; если шаг равен 1, то его можно не указывать; <тело цикла> — повторяющийся фрагмент программы. Действие оператора: при изменении значений <переменной> от <нач.значения> до <кон.значения> с заданным <шагом> повторяется <тело цикла>, каждый раз с новым значением <переменной>; после этого управление передается части программы, следующей за end. Например (полужирным шрифтом выделены элементы, вычисляемые в цикле): x = [2 3 5]; for i = 1:3 x(i) = i^2 end x =      1     3     5 x =      1     4     5 x =      1     4     9 • с переменной цикла — вектором: Например: for <переменная> = <вектор>     <тело цикла> end где <вектор> — вектор, как правило, числовой. Действие оператора: при изменении значений <переменной>, которой последовательно присваиваются значения элементов <вектора>, повторяется <тело цикла>, каждый раз с новым значением <переменной>; после этого управление передается части программы, следующей за end. Например: a = [-1 0 15]; for i = a x = i+a end x =     -2    -1    14 x =     -1     0    15 x =     14    15    30 • с переменной цикла — матрицей: for <переменная> = <матрица>     <тело цикла> end где <матрица> — матрица, как правило, числовая. Действие оператора: при изменении значений <переменной>, которой последовательно присваиваются значения столбцов <матрицы>, повторяется <тело цикла>, каждый раз с новым значением <переменной>; после этого управление передается части программы, следующей за end. Например: a = [1 2 3;4 5 6;7 8 9]; for i = a x = i' end x =      1     4     7 x =      2     5     8 x =      3     6     9 2. Итерационный цикл с заранее неизвестным (не фиксированным) числом повторений организуется с помощью оператора while следующего формата: while <условие>         <тело цикла> end где <условие> — логическое выражение, хотя бы одна из переменных которого встречается в <теле цикла>. Действие оператора: <тело цикла> повторяется до тех пор, пока <условие> "истинно", после чего управление передается части программы, следующей за end. Пример использования оператора while для вычисления суммы геометрической прогрессии (s) с точностью до ε = 10–4 (e) с выводом после выхода из цикла значения суммы и погрешности вычисления (вектор [s e]): n = 0; s0 = 0; e = 100; while e>1e-4 s = s0+(-0.5).^n; e = abs(s-s0); s0 = s; n = n+1; end [s e] ans =     0.6667    0.0001 Принудительный выход из цикла реализуется оператором: break после которого управление передается части программы, следующей за end. Последнее изменение: Пятница, 1 Апрель 2016, 15:56
«Прикладные пакеты моделирования.» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

Тебе могут подойти лекции

ЧЕРЧЕНИЕ
#Лекция

Понятие проектирования как процесса. Задачи проектировщика. Трудности проектирования. Проектирование: искусство или наука. Проектирование как объект автоматизации. Аспекты и иерархические уровни проектирования. Стадии, этапы и процедуры проектирования. Виды проектирования. Принципы создания САПР. Состав и структура САПР. Автоматизированные системы технологической подготовки производства (АСТПП) или (САМ). Интеграция средств САПР и АСТПП (САМ) в единый процесс. Тактическое значение применения интегрированных систем САПР/АСТТП (интегрированная система автоматизации — ИСА). Роль САПР АСТПП в производственном цикле. Компоненты видов обеспечения САПР. Способы задания параметризованной геометрической модели. Параметрическое конструирование с полным набором связей. Параметрическое конструирование с неполным набором связей. Ассоциативная геометрия. Объектно-ориентированное моделирование. Программное обеспечение САПР. Средства двумерного черчения. 3D моделирование. Поверхностное моделирование. Твердотельное моделирование (ТМ). Информационное обеспечение САПР. СУБД - Система Управления Базами ДанныхСистема управления производственной информацией (PDM). EPD – полное электронное описание изделия. Техническое обеспечение САПР. Лингвистическое обеспечение САПР. Методическое обеспечение САПР. Организационное обеспечение САПР. Классификация САПР. Взаимодействие САПР с другими автоматизированными системами. Эргономика и автоматизированные системы. Автоматизированное моделирование процесса взаимодействия человека и машины, применение эргономических пакетов.

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot