Министерство науки и высшего образования Российской Федерации НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ А. В. НИКУЛИН, М. В. ОРЕШКИНА СПЕЦИАЛЬНЫЕ ГЛАВЫ ИНФОРМАТИКИ Утверждено Редакционно-издательским советом университета в качестве учебного пособия НОВОСИБИРСК 2023 УДК 004(075.8) Н 651 Рецензенты: С. А. Алексейцев, канд. техн. наук, вед. инж. ФГУП «ВНИИФТРИ» В. В. Артюшенко, канд. техн. наук, доцент Работа подготовлена на кафедре радиоприемных и радиопередающих устройств для студентов, обучающихся по направлениям «Инфокоммуникационные технологии и системы связи» и «Радиотехника» Н 651 Никулин А. В. Специальные главы информатики: учебное пособие / А. В. Никулин, М. В. Орешкина. – Новосибирск : Изд-во НГТУ, 2023. – 96 с. ISBN 978-5-7782-4883-0 В пособии содержатся базовые теоретические сведения, а также информация из технической документации на программное обеспечение, используемое при проведении экспериментальных работ. Рассматриваются основы работы с интерфейсами программного обеспечения. Предназначено для студентов, занимающихся изучением информационных технологий. УДК 004(075.8) Никулин Андрей Викторович Орешкина Маргарита Валерьевна СПЕЦИАЛЬНЫЕ ГЛАВЫ ИНФОРМАТИКИ Учебное пособие Редактор Л.Н. Ветчакова Выпускающий редактор И.П. Брованова Дизайн обложки А.В. Ладыжская Компьютерная верстка Н.В. Гаврилова Налоговая льгота – Общероссийский классификатор продукции Издание соответствует коду 95 3000 ОК 005-93 (ОКП) Подписано в печать 09.02.2023. Формат 60 × 84 1/16. Бумага офсетная Тираж 100 экз. Уч.-изд. л. 5,58. Печ. л. 6,0. Изд. № 272/22. Заказ № 79. Цена договорная Отпечатано в типографии Новосибирского государственного технического университета 630073, г. Новосибирск, пр. К. Маркса, 20 ISBN 978-5-7782-4883-0 © Никулин А. В., Орешкина М. В., 2023 © Новосибирский государственный технический университет, 2023 ОГЛАВЛЕНИЕ Введение ................................................................................................................... 5 1. Некоторые из основных приемов работы в MATLAB ..................................... 6 2. М-файлы ............................................................................................................... 7 2.1. Файл-программа .......................................................................................... 8 2.2. Файл-функция............................................................................................ 10 2.3. Работа с точками прерывания .................................................................. 12 3. Матрицы ............................................................................................................. 13 3.1. Создание матриц ....................................................................................... 13 3.2. Сложение и вычитание матриц ................................................................ 14 3.3. Векторные произведения и транспонирование ...................................... 14 3.4. Умножение матриц ................................................................................... 16 3.5. Поэлементные операции ........................................................................... 17 3.6. Единичная матрица ................................................................................... 18 3.7. Обращение матриц .................................................................................... 18 3.8. Построение графиков ................................................................................ 19 3.8.1. Двухмерные графики ...................................................................... 19 3.8.2. Трехмерные графики ....................................................................... 26 4. Основы программирования в системе MATLAB ............................................ 29 4.1. Разветвляющиеся алгоритмы ................................................................... 29 4.2. Циклические алгоритмы ........................................................................... 32 4.3. Разложение функций в ряд Фурье ........................................................... 34 5. Моделирование логических и электрических схем в системе Simulink ....... 39 5.1. Начало работы в системе Simulink .......................................................... 39 5.2. Моделирование логических функций ..................................................... 40 5.3. Моделирование электрических цепей ..................................................... 45 5.4. Блоки для считывания и передачи данных в Workspace........................ 52 3 6. Применение интерполяционных методов для приближения ВАХ транзистора ........................................................................................................ 58 6.1. Интерполяция таблично заданной функции одной независимой переменной................................................................................................. 58 6.2. Интерполяция таблично заданной функции двух независимых переменных ................................................................................................ 59 6.3. Сплайн-интерполяция ............................................................................... 60 6.4. Двумерная сплайн-интерполяция ............................................................ 61 Приложения. Задания для эксперементальных работ ........................................ 66 Приложение 1. Первое знакомство с математической системой MATLAB ................................................................................ 66 Приложение 2. Основы программирования в системе MATLAB................ 70 Приложение 3. Основы работы в Simulink .................................................... 81 Приложение 4. Применение интерполяционных методов для приближения ВАХ транзистора ................................................. 89 Библиографический список .................................................................................. 96 4 ВВЕДЕНИЕ В пособии рассматривается система MATLAB, в основе которой лежит идея создания языка программирования для решения сложных научно-технических задач на базе представления данных в форме матриц с возможностью доступа пользователя к исходным кодам системы и ее практически неограниченного расширения. В работе представлен теоретический материал и примеры выполнения заданий для освоения интерфейса программного продукта (работа с командной строкой, исполняемыми файлами, файламифункциями), рассмотрены способы построения и настройки отображения графиков, особенности работы с матрицами, разветвляющие и циклические алгоритмы, способы интерполяции функций, показано применение программы для имитационного моделирование электрических и логических схем в среде Simulink. К теоретическому материалу прилагаются задания к экспериментальным работам, позволяющие закрепить теорию. Отчет по заданию должен включать: титульный лист, разделы основной части отчета и выводы. Требования к оформлению текста отчета: параметры страницы: поля сверху 2 см, снизу 2 см, слева 3 см, справа 1,5 см. шрифт Times New Roman (для программного кода/команд терминала Courier New); размер шрифта 14 пт; 1,5 междустрочных интервала; абзацный отступ 1,25 см; нумерация страниц, рисунков, таблиц, формул обязательна. Структура разделов основной части отчета: цель работы, задание, решение задания, вывод к решению. 5 1. НЕКОТОРЫЕ ИЗ ОСНОВНЫХ ПРИЕМОВ РАБОТЫ В MATLAB В MATLAB используются все буквы латинского алфавита и арабские цифры от 0 до 9. В MATLAB, как и в С++, большие и малые буквы различаются. Кроме букв латинского алфавита используются все специальные символы клавиатуры компьютера. Все символы после символа `%` до конца текущей строки в MATLAB рассматриваются как комментарии. Выполнение арифметических вычислений. Используются символы: `+`, `‐`, `*`, `/` и `^` (возведение в степень). Для установления приоритета выполнения действий следует использовать круглые скобки `()`, а для подавления печати результата вычислений необходимо применять символ `;`. 23.2 4 5.6 . Щелкнем 4.7 ЛКМ в командной строке (там после этого должен появиться мигающий курсор) и наберем следующую последовательность символов: 2^3.2/4.7‐4*5.6 и нажмем на клавишу <<Enter>>. В рабочем окне появится запись: >> 2^3.2/4.7‐4*5.6 ans = ‐20.4448 >> Пусть необходимо вычислить выражение в конце которой будет расположен мигающий курсор. Если набрать последовательность символов 2^3.2/4.7‐4*5.6; и тоже нажать на клавишу <<Enter>>, то в рабочем окне появится другая запись: 6 >> 2^3.2/4.7‐4*5.6; >> с мигающим курсором в конце. Печать результата вычислений здесь подавлена символом `;`. Результат хранится в переменной с именем ans и для его получения следует в командной строке набрать ans<<Enter>>. Кроме того, в дальнейших вычислениях имя этой переменной (ans) можно подставлять вместо результата вычислений. Если имеется необходимость повторно в командном окне вызвать ранее уже введенную запись, то это легче всего сделать, используя клавиши << >> и << >>. Имя переменной, вообще говоря, может состоять из букв латинского алфавита, знака подчеркивания и цифр и обязательно должно начинаться с буквы. Для того чтобы проверить, занято ли уже какое-либо имя, следует набрать в командной строке exist(‘имя переменной’). Нулевой ответ при выполнении этой команды (вызова функции exist) говорит, что имя свободно. Пример >> exist('a6') ans = 0 Для изменения формата выводимых числовых данных можно воспользоваться следующим способом. Он состоит в вызове в командной строке функции format с одним из ее аргументов: short, short e, long, long e, short g, short eng, long g, long eng, bank, compact, loose. Пример >> format short 2. М-ФАЙЛЫ MATLAB позволяет писать два вида программных файлов. Скрипты – это программные файлы с расширением .m. В этих файлах пишут серию команд, которые хотят выполнить вместе. Скрипты не принимают входных данных и не возвращают никаких выходных данных. Они оперируют данными в рабочей области. 7 Функции – файлы функций также являются программными файлами с расширением .m . Функции могут принимать входные и выходные данные. Внутренние переменные являются локальными для функции. Можно также использовать редактор MATLAB или любой другой текстовый редактор для создания .m файлов. Для этого следует раскрыть меню File основного окна MATLAB и в пункте New выбрать подпункт M-file. Новый файл открывается в окне редактора M-файлов, которое изображено на рис. 2.1. Рис. 2.1. Окно редактора M-файлов 2.1. Файл-программа Наберите в редакторе команды, приводящие к построению четырех графиков на одном графическом окне (рис. 2.2). Сохраните теперь файл с именем MyFile.m, выбрав пункт Save as меню File редактора. Для запуска на выполнение всех команд, содержащихся в файле, следует выбрать пункт Run в меню Debug. На экране появится графическое окно Figure 1, содержащее графики функций (рис. 2.3). 8 Рис. 2.2. Окно редактора M-файлов с командами Рис. 2.3. Графическое окно Figure 1 9 Команды файл-программы осуществляют вывод в командное окно. Для подавления вывода следует завершать команды точкой с запятой. Если при наборе сделана ошибка и MATLAB не может распознать команду, то происходит выполнение команд до неправильно введенной, после чего выводится сообщение об ошибке в командное окно. 2.2. Файл-функция Рассмотренная выше файл-программа (рис. 2.4) является только последовательностью команд MATLAB, она не имеет входных и выходных аргументов. Для использования численных методов и при программировании собственных приложений в MATLAB следует уметь составлять файл-функции, которые производят необходимые действия с входными аргументами и возвращают результат действия в выходных аргументах. Рис. 2.4. Пример структуры файл-функции 10 Слово function в первой строке определяет, что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой размещается имя функции и списка входных и выходных аргументов. В примере (рис. 2.4) функция, называемая lagrange, имеет три входных аргумента. После заголовка следуют комментарии, а затем – тело функции, где и вычисляется ее значение. Важно, что вычисленное значение записывается в yy. Не забудьте поставить точку с запятой для предотвращения вывода лишней информации на экран. Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пункта Save или Save as меню File приводит к появлению диалогового окна сохранения файла, в поле File name которого уже содержится название. Не изменяйте его, сохраните файл-функцию в файле с предложенным именем! Теперь созданную функцию можно использовать так же, как и встроенные sin, cos и другие. Вызов собственных функций может осуществляться из файл-программы и из другой файл-функции. Попробуйте сами написать файл-функцию. Можно написать файл-функции с несколькими входными аргументами, которые размещаются в списке через запятую, а также создавать и функции, возвращающие несколько значений (рис. 2.5). Для этого выходные аргументы добавляются через запятую в список выходных аргументов, сам же список заключается в квадратные скобки. Рис. 2.5. Файл-функция, возвращающая несколько значений При вызове файл-функций с несколькими выходными аргументами результат следует записывать в вектор соответствующей длины. 11 2.3. Работа с точками прерывания При разработке программного обеспечения точка останова является преднамеренной остановкой или приостановкой в программе, созданной для целей отладки. В более общем плане точка останова является средством получения знаний о программе во время ее выполнения. Во время перерыва программист проверяет тестовую среду (регистры общего назначения, память, журналы, файлы и т. д.), чтобы выяснить, работает ли программа, как ожидалось. На практике точка останова состоит из одного или нескольких условий, которые определяют, когда выполнение программы должно быть прервано. В MATLAB, когда выполнение приостанавливается в точке останова, переменные, существующие в текущей рабочей области (aka scope) или любой из рабочих областей вызова, могут быть проверены (и обычно также изменены) (рис. 2.6). Рис. 2.6. Пример работы точки останова, сверху показано окно «Workspace» 12 3. МАТРИЦЫ Все данные системы MATLAB представляет в виде массивов. Простое число в MATLAB имеет вид двумерного массива размером один на один. Массив − это упорядоченная, пронумерованная совокупность однородных данных, имеющая имя. Массивы бывают одномерными (вектор-столбцы и вектор-строки), двумерными и многомерными. В MATLAB нумерация элементов массивов начинается с единицы. 3.1. Создание матриц MATLAB имеет много функций, которые создают различные виды матриц. Например, можно создать симметрическую матрицу с записями на основе треугольника Паскаля: A = pascal(3) A = 1 1 1 1 2 3 1 3 6 Или можно создать несимметричную матрицу магического квадрата, которая имеет равные суммы строки и столбца: B = magic(3) B = 8 1 6 3 5 7 4 9 2 Другим примером является 32 прямоугольная матрица случайных целых чисел. В этом случае первый аргумент randi описывает область значений возможных значений для целых чисел, и вторые два входных параметра описывают количество строк и столбцов. C = randi(10,3,2) C = 9 10 2 10 7 1 13 Чтобы задать матрицу вручную, используйте квадратные скобки [ ], для того чтобы обозначить начало и конец массива. В скобках используйте точку с запятой ; , чтобы обозначить конец строки. В случае скаляра (матрица 1 на 1) скобки не требуются. Например, эти операторы производят вектор-столбец, вектор-строку и скаляр: u = [3; 1; 4] % вектор‐столбец v = [2 0 ‐1] % вектор‐строка s = 7 % скаляр u = 3 1 4 v = 2 0 ‐1 s = 7 3.2. Сложение и вычитание матриц Сложение и вычитание матриц и массивов выполняются поэлементно. Складывать допускается только матрицы одинаковой размерности (допустим m × n), т. е. имеющие равное количество строк и равное количество столбцов. Если размерности отличаются, выводится ошибка: X = A + C Error using + Matrix dimensions must agree. 3.3. Векторные произведения и транспонирование Вектор-строка и вектор-столбец одной длины могут быть умножены в любом порядке. Результатом является или скаляр, названный скалярным произведением, или матрица, названная векторным произведением: 14 u v x x = [3; 1; 4]; = [2 0 ‐1]; = v*u = 2 X = u*v X = 6 2 8 0 0 0 ‐3 ‐1 ‐4 Для действительных матриц операция транспонирования (B = A.') обменивает местами индексы столбца и строки для каждого элемента матрицы a i j и a ji . MATLAB использует оператор апострофа (') для выполнения комплексно сопряженного транспонирования и оператор точечного апострофа (.'), чтобы транспонировать без сопряжения. Для матриц, содержащих все действительные элементы, эти два оператора возвращают один и тот же результат. Матрица A = pascal(3) симметрична, таким образом, A' равно A. Матрица B = magic(3) не симметрична, таким образом, B' отразит элементы по основной диагонали: B = magic(3) B = 8 3 4 X = B' X = 1 5 9 6 7 2 8 1 6 3 5 7 4 9 2 Для векторов перемещение превращает вектор-строку в векторстолбец (и наоборот): 15 x = v' x = 2 0 ‐1 3.4. Умножение матриц Матричное произведение C = AB возможно, когда размерность столбца A равна размерности строки B, или когда один из них является скаляром. MATLAB использует звездочку, чтобы обозначить умножение матриц, C = A*B. Умножение матриц не является коммутативным, т. е. A*B обычно не равно B*A: X = A*B X = 15 15 15 26 38 26 41 70 39 Y = B*A Y = 15 28 47 15 34 60 15 28 43 Матрица A может быть умножена справа вектор-столбцом и слева вектор-строкой: u = [3; 1; 4]; x = A*u x = 8 17 30 v = [2 0 ‐1]; y = v*B y = 12 ‐7 10 16 Прямоугольные умножения матриц должны удовлетворить условиям совместимости размерности. Пусть A имеет размер 33 и C 32, можно умножить их, чтобы добраться 32 результат (общие внутренние отмены размерности): X = A*C Однако умножение не работает в обратном порядке: Y = C*A Error using * Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'. Можно умножить что-либо со скаляром: s = 10; w = s*y w = 120 ‐70 100 Когда умножают массив на скаляр, скаляр неявно расширяется, чтобы быть одного размера с другим множителем. 3.5. Поэлементные операции Для матриц, как и для векторов, определены следующие поэлементные операции: A.*B − поэлементные умножения; A./B − поэлементные деления; A.^p − поэлементное возведение в степень (p − число); A.^B − возведение элементов матрицы A в степени, равные соответствующим элементам матрицы B. Операции сложения и вычитания матриц по своей сути являются поэлементными и не требуют нотации в виде точки. Примеры поэлементных операций с векторами: 17 х=[1, 2, 3]; у=[4, 5, 6] ; z=x*y’ % – обычное умножение Z = 32 zl = х.*у % – поэлементное умножение zl = 4 10 18 z2 = у.^х % – поэлементное возведение в степень z2 =4 25 216 z3 = у./х % – поэлементное правое деление z3 = 4.0000е+000 2.5000е+000 2.0000е+000. При правом поэлементном делении результатом является вектор, каждый элемент которого есть частное от деления соответствующего элемента первого вектора на соответствующий элемент второго вектора. 3.6. Единичная матрица Общепринятое математическое обозначение использует прописную букву I, чтобы обозначить единичные матрицы, матрицы различных размеров с единицами на основной диагонали и нулями в другом месте. Эти матрицы имеют свойство, что A I = A и I A = A каждый раз, когда размерности совместимы. Функция eye(m,n) возвращает m n прямоугольную единичную матрицу и eye(n) возвращает n n квадратную единичную матрицу. 3.7. Обращение матриц Если матрица A является квадратной и несингулярной (имеет ненулевой определитель), тогда уравнение A X = I имеет корни X. Эти корни могут быть найдены инверсией A и обозначается A–1. Оператор inv и выражение A^‐1 вычисляют обратную матрицу. A = pascal(3) A = 1 1 1 1 2 3 1 3 6 18 X = inv(A) X = 3.0000 ‐3.0000 1.0000 ‐3.0000 5.0000 ‐2.0000 1.0000 ‐2.0000 1.0000 0 1.0000 0.0000 0 ‐0.0000 1.0000 A*X ans = 1.0000 0.0000 ‐0.0000 Если определитель (det) меньше нуля, матрица сингулярна, инверсия не существует. d = det(A) d = 1 Редко необходимо сформировать явную инверсию матрицы. Частое неправильное употребление inv возникает при решении системы линейных уравнений A x = b. Лучший способ решить это уравнение с точки зрения и времени выполнения, и числовой точности состоит в том, чтобы использовать матричный оператор обратной косой черты x = A\b. 3.8. Построение графиков MATLAB может создавать как плоские графики, так и трехмерные сетчатые поверхности, а также движущиеся графики или анимацию. 3.8.1. Двухмерные графики В научных и технических задачах основными и наиболее часто употребительными являются графики, которые представляют собой кривые, описывающие те или иные численные данные. MATLAB располагает набором команд высокого уровня, которые используются для 19 построения таких кривых и управления ими. Это такие команды, как plot, title, axis, text, hist, contour и ряд других. Кроме того, строить графики, управлять ими и редактировать их можно с помощью инструментальных панелей графических окон. Можно также использовать комбинацию обоих подходов. Например, можно использовать команды для создания графиков, а затем модифицировать их. Для того чтобы построить график функции y = f(x), достаточно тем или иным способом сформировать два вектора одинаковой размерности – вектор значений аргументов x и вектор соответствующих значений функции у, а затем выполнить команду plot. Команда plot открывает графическое окно и отображает в нем зависимость y(x) в линейных осях при условии, что x и y являются векторами одинаковой длины. Ниже приведен синтаксис основных команд: plot(X,Y) создает 2D-график данных в Y по сравнению с соответствующими значениями в X. Чтобы построить набор координат, соединенных с методической точностью сегменты, задайте X и Y как векторы той же длины. Чтобы построить несколько наборов координат на том же наборе осей, задайте, по крайней мере, один из наборов X или Y. plot(X,Y,LineSpec) создает график с помощью заданного стиля линии, маркера и цвета. На большинстве линейных графиков по умолчанию отображается сплошная линия, но можно настроить линию с помощью любого из стилей линии, указанных в табл. 3.1. Т а б л и ц а 3.1 Стиль линии (LineSpec) '‐' '‐‐' ': ' '‐.' Описание Сплошная линия Пунктирная линия Пунктирная линия из точек Штрихпунктирная линия Обычно в дополнение к стилю линии можно указать символ маркера и цвета, табл. 3.2 и 3.3. 20 Т а б л и ц а 3.2 Маркер 'o' '+' '*' '.' 'x' '_' '|' 's' 'd' '^' 'v' '>' '<' 'p' 'h' Описание Круг Знак «плюс» Звездочка Точка Крест Горизонтальная линия Вертикальная линия Квадрат Ромб Треугольник, направленный вверх Нисходящий треугольник Треугольник, указывающий вправо Треугольник, указывающий влево Пентаграмма Гексаграмма Т а б л и ц а 3.3 Цвет y m c r g b w k Описание Желтый Пурпурный Голубой Красный Зеленый Синий Белый Черный plot(X1,Y1,...,Xn,Yn) – графики нескольких наборов x и y координируют на одном и том же наборе осей. Используйте этот синтаксис в качестве альтернативы определению координат как матрицы. 21 plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn) – присваивает определенные стили линии, маркеров и окрашивает каждую точку с координатами x и y. Можно задать LineSpec для некоторого набора x и y и не использовать его для других. Например, plot(X1,Y1, 'o', X2,Y2) задает маркеры для первого набора x и y, но не для второго. Создайте x как вектор из линейно распределенных значений между 0 и 2π. Используйте шаг π/100 между значениями. Создайте y как значения синуса x. Постройте график данных (рис. 3.1). x = 0:pi/100:2*pi; y = sin(x); plot(x,y) Рис. 3.1. График функции синус в диапазоне 0 и 2π Задайте x как 100 линейно распределенных значений между −2π и 2π. Задайте y1 и y2 как синус и косинус x. Создайте график для обоих наборов данных (рис. 3.2). x = linspace(‐2*pi,2*pi); y1 = sin(x); y2 = cos(x); figure plot(x,y1,x,y2) 22 Рис. 3.2. Две синусоиды Постройте три синусоиды с маленьким сдвигом фазы между каждой линией. Используйте зеленую линию без маркеров для первой синусоиды. Используйте синюю пунктирную линию с круговыми маркерами для второй синусоиды. Используйте только голубые маркерызвездочки для третьей синусоиды (рис. 3.3). x = 0:pi/10:2*pi; y1 = sin(x); y2 = sin(x‐0.25); y3 = sin(x‐0.5); figure plot(x,y1,'g',x,y2,'b‐‐o',x,y3,'c*') Постройте график и маркеры отображения в каждой пятой точке данных путем определения символа маркера и установки MarkerIndices свойство как пара «имя-значение» (рис. 3.4). x = linspace(0,10); y = sin(x); plot(x,y,'‐o','MarkerIndices',1:5:length(y)) 23 Рис. 3.3. Использование маркеров Рис. 3.4. Отображение маркеров в определенных точках данных 24 Постройте график и используйте опции, чтобы задать пунктирную зеленую линию с квадратными маркерами (рис. 3.5). Используйте Name,Value, чтобы задать ширину линии, размер маркера и цвета маркера. Установите цвет обводки маркера на синий и выберите цвет поверхности маркера с помощью значения цвета RGB. x = ‐pi:pi/10:pi; y = tan(sin(x)) ‐ sin(tan(x)); figure plot(x,y,'‐‐gs',... 'LineWidth',2,... 'MarkerSize',10,... 'MarkerEdgeColor','b',... 'MarkerFaceColor',[0.5,0.5,0.5]) Рис. 3.5. Квадратные маркеры Используйте linspace функцию, чтобы задать x как вектор из 150 значений между 0 и 10. Задайте y как значения косинуса x. x = linspace(0,10,150); y = cos(5*x); 25 Создайте 2D-график косинусоиды. Измените цвет линии в оттенок сине-зеленого использования значения цвета RGB. Добавьте заголовок и подписи по осям к графику с помощью titlexlabel, и ylabel функции (рис. 3.6). figure plot(x,y,'Color',[0,0.7,0.9]) title('2‐D Line Plot') xlabel('x') ylabel('cos(5x)') Рис. 3.6. График синусоиды с заголовком и подписанными осями 3.8.2. Трехмерные графики Трехмерные поверхности обычно описываются функцией двух переменных z(x, y), причем аргументы x и y задаются, как правило, в виде опорной сетчатой плоскости, т. е. двумерных массивов. 26 Для отображения зависимостей критериев качества системы от параметров при проведении параметрических исследований можно использовать возможности 3D-изображения и, в частности, трехмерную графику пакета MATLAB, причем в качестве аргументов x и y используются параметры системы. В системе MATLAB предусмотрено несколько команд и функций для построения трехмерных графиков. Значения элементов числового массива рассматриваются как z-координаты точек над плоскостью, определяемой координатами х и у. Возможно несколько способов соединения этих точек. Первый из них – это соединение точек в сечении (функция plot3), второй – построение сетчатых поверхностей (функции mesh и surf). Поверхность, построенная с помощью функции mesh, – это сетчатая поверхность, ячейки которой имеют цвет фона, а их границы могут иметь цвет, который определяется свойством EdgeColor графического объекта surface. Поверхность, построенная с помощью функции surf, – это сетчатая поверхность, у которой может быть задан цвет не только границы, но и ячейки; последнее управляется свойством FaceColor графического объекта surface. plot3(X,Y,Z)строит графики в трехмерном пространстве (рис. 3.7). Рис. 3.7. Графическое изображение 3D-спирали Чтобы построить набор координат, соединенных с методической точностью сегменты, задайте XY и Z как векторы из той же длины. 27 Чтобы построить несколько наборов координат на том же наборе осей, задайте, по крайней мере, один из XY, или Z как матрица, а другие как векторы. t = 0:pi/50:10*pi; st = sin(t); ct = cos(t); plot3(st,ct,t) surf(X,Y,Z) создает 3D объемную поверхностную диаграмму, которая является 3D-поверхностью (рис. 3.8). Рис. 3.8. Создание объемной поверхностной диаграммы [X,Y] = meshgrid(1:0.5:10,1:20); % meshgrid(x,y) возвращает 2D декартовы координаты на ос‐ нове координат, содержавшихся в векторах x и y. Z = sin(X) + cos(Y); surf(X,Y,Z) 28 4. ОСНОВЫ ПРОГРАММИРОВАНИЯ В СИСТЕМЕ MATLAB 4.1. Разветвляющиеся алгоритмы Реализацию программы для этого типа алгоритма рассмотрим на примере. Пусть необходимо вычислить значение следующей функции: x3 cos(y ), если 15 x 5, f ( x, y ) 0 – в остальных случаях. Вычисления f(x,y) могут быть выполнены, как показано на рис. 4.1. Рис. 4.1. Окно редактора М-файла с функцией f(x, y) В системе MATLAB условный оператор if имеет две формы (см. таблицу). Примером использования сложной формы оператора if является текст, представленный ниже (определите, находится ли значение в пределах заданной области). 29 x = 10; minVal = 2; maxVal = 6; if (x >= minVal) && (x <= maxVal) disp(Значение в указанном диапазоне') elseif (x > maxVal) disp('Значение превышает максимальное значение') else disp('Значение ниже минимального значения') end Функции disp используются для вывода сообщения на дисплей. Структура оператора if if Простая условие операторы Сложная условие1 операторы elseif условие2 операторы elseif условие3 операторы . . . . . . . . . . . . else операторы end if end if условие операторы else операторы end Другим оператором ветвления является switch. У него следующий синтаксис: switch выражение case значение выражения1 операторы1 case {значение выражения2, значение выражения3, ...} операторы2 . . . . . . . . . . . . . . . . . otherwise операторыN end 30 Работает оператор switch следующим образом. 1. Находится значение выражения. 2. Если оно совпадает со значением выражения1, то выполняются операторы1. 3. Если оно совпадает с одним из результатов списка {значение выражения2, значение выражения3, ...}, то выполняются операторы2. 4. Если оно не совпадает ни с одним из значений выражений, то выполняются операторыN. Пример. Рассмотренный выше пример с использованием оператора switch будет иметь вид, показанный на рис. 4.2, а результат ее вызова показан ниже: >> switchdemo(2) а равно двум или трем Рис. 4.2. Окно редактора М-файла с функцией switchdemo(a) Для конструирования условных выражений в MATLAB используются следующие операции сравнения: == − равно; ~= − не равно; > − больше; < − меньше; >= − больше или равно; <= − меньше или равно. К логическим операциям относятся: A&B and(A,B) − логическое И; A|B or(A,B) − логическое ИЛИ; ~A not(A) − логическое НЕТ; xor(A) − исключающее ИЛИ. 31 В MATLAB установлен следующий приоритет (порядок выполнения) операций: ~ (логическое НЕ); ′ (транспонирование), ^ (возведение в степень, в том числе поэлементно), унарный плюс и унарный минус; * (умножение, в том числе поэлементное), / (деление, в том числе поэлементное); + (сложение), – (вычитание); == (равно), ~= (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно); A&B and(A,B) (логическое И), A|B or(A,B) (логическое ИЛИ), xor(A) (исключающее ИЛИ). Для изменения порядка выполнения операций следует применять круглые скобки. 4.2. Циклические алгоритмы Для многократного выполнения некоторой последовательности операторов MATLAB располагает двумя видами циклов: for – целесообразно использовать, если заранее известно число итераций в цикле; while – следует использовать, если цикл должен завершиться при выполнении некоторого условия, и число итераций заранее неизвестно. Синтаксис оператора for следующий: for i=start:step:final операторы end Здесь i − переменная цикла; start − ее начальное значение; final − ее конечное значение; step − шаг изменения переменной цикла. Цикл завершается, как только count становится больше final. Значения параметров start, step и final могут быть как целыми, так и вещественными. У оператора while следующий синтаксис: while условие операторы end 32 Если условие истинно, то выполняются операторы, в противном случае выполнение оператора while завершается. На рис. 4.3 представлено окно редактора М-файла с функцией count(x,n), результатом выполнения которой являются два числа F и W – значения суммы D ( x, n ) n , 2 x 3i i 2 sin i 0 1 вычисляемые с использованием циклов for и while соответственно. Результат вызова упомянутой функции показан ниже. >> [F W]=count(1,6) F = 23.5071 W = 23.5071 Рис. 4.3. Окно редактора М-файла с функцией count(x,n) Примечание. При вычислениях различного рода сумм начальное значение для них принимают равным нулю (см. рис. 4.3). Аналогично при вычислениях различного рода произведений начальное значение для них часто принимают равным 1. 33 В MATLAB имеются еще два оператора, используемые вместе с рассмотренными операторами цикла. Первый из них (break) прерывает выполнение операторов цикла, а второй (continue) − влечет за собой прекращение выполнения операторов текущей итерации и переход на следующую (т. е. или на проверку условия, если у нас оператор while, или на выполнение i=start:step:final, если у нас оператор for). 4.3. Разложение функций в ряд Фурье Разложение функций в ряд Фурье чрезвычайно широко используется в радиотехнике. Периодическая с периодом 2 на отрезке [, ] функция f ( x) f ( x n 2) , где n − любое целое число, называется абсолютно интегрируемой на отрезке [, ] , если суще ствует интеграл f ( x) dx . Каждой абсолютно интегрируемой на от- резке [, ] функции f(x) можно поставить в соответствие ее тригонометрический ряд Фурье: a f ( x) S ( x) 0 ak cos(kx) bk sin(kx) . 2 k 1 Коэффициенты тригонометрического ряда Фурье вычисляют по формулам Эйлера–Фурье: ak 1 f ( x) cos(kx)dx, bk 1 f ( x)sin(kx)dx . Справедливо следующее утверждение. Если функция f(x) кусочногладкая на отрезке [, ] , то ее тригонометрический ряд Фурье S(x) сходится в каждой точке этого отрезка. Выражение вида n a Sn ( x) 0 ak cos(kx) bk sin( kx) 2 k 1 называется n-й частичной суммой ряда Фурье. При этом lim Sn ( x0 ) n f ( x0 ) , если f(x) непрерывна в точке 34 x0 и lim S n ( x0 ) n f ( x0 0) f ( x0 0) , если f(x) терпит разрыв первого рода (скачок) 2 в точке x0 . Пример. Построим графики Sn ( x) при n = 12 для периодической с 2, если x 2 , периодом 2 функции f ( x) , заданной графиком 0, если x 2 на интервале , (рис. 4.4). Рис. 4.4. График функции f(x) Код для получения графика без улучшенного визуального оформления: x=‐pi:0.01:pi; for i =1:size(x,2) if abs(x(i))<=pi/2 s(i)=2; else 35 s(i)=0; end end p=plot(x,s); Порядок выполнения задания, следующий. 1. Формируем М-файл функции для вычислений векторов значений подынтегральных функций f ( x) cos(kx) и f ( x)sin(kx) (рис. 4.5). При выполнении вычислений исходный отрезок [, ] разбивается на 100 частей. а б Рис. 4.5. Окно редактора М-файла с функциями fa и fb 36 2. Формируем М-файл функцию s, вычисляющую сумму ряда Фурье Sn ( x) для заданных значений x, n (рис. 4.6). Рис. 4.6. Окно редактора М-файла с функцией s 3. Затем подаем ряд команд, показанных ниже, которые вместе с представленными выше файлами решают поставленную задачу (результат показан на рис. 4.7). X= [‐pi:2*pi/100: pi]; Y=s(X,12); plot(X,Y) grid on Для численного интегрирования в MATLAB имеется несколько функций. Рассмотрим две из них. trapz(X,Y) – возвращает интеграл от некоторой функции, значения которой заданы вектором Y для значений независимой переменной, заданных вектором X. Интегрирование выполняется методом трапеций. Метод трапеций является универсальным методом и хорошо подходит для интегрирования не слишком гладких функций. 37 Рис. 4.7. Окно графика Sn(x) при n = 12 quad (fun, a, b, tol, trace, p1, p2, …) – возвращает определенный интеграл от функции fun (это имя М-файл функции), заданной на отрезке [a, b], с заданной относительной точностью tol (по умолчанию tol = 0.001). Параметр trace задают равным нулю, если нет необходимости контролировать процесс интегрирования, и не равным нулю, если такая необходимость имеется. p1, p2, … – значения некоторых параметров функции fun, которые будут ей переданы при вычислениях: fun(x,p1,p2,…); x – независимая переменная. Функция quad может быть вызвана и с меньшим набором параметром, но не меньшим чем quad (fun, a, b). В функции quad интегрирование выполняется по методу Симпсона. Он является методом более высокого порядка, чем метод трапеций, и дает при том же числе разбиений большую точность. Но при его использовании надо быть уверенным, что подынтегральная функция является гладкой (т. е. не только сама подынтегральная функция непрерывна, но и непрерывны ее первые производные). 38 5. МОДЕЛИРОВАНИЕ ЛОГИЧЕСКИХ И ЭЛЕКТРИЧЕСКИХ СХЕМ В СИСТЕМЕ SIMULINK В настоящем разделе ознакомимся с системой моделирования Simulink и получением первоначальных навыков ее использования. 5.1. Начало работы в системе Simulink Для открытия библиотеки блоков Simulink необходимо выполнить в командной строке главного окна MATLAB команду или нажать кнопку (Simulink) на панели инструментов командного окна MATLAB (рис. 5.1). Рис. 5.1. Основное окно. Выделена кнопка запуска Simulink Этот способ приводит к открытию окна обозревателя разделов библиотеки Simulink (рис. 5.2). Рис. 5.2. Окно Simulink library browser 39 Для начала работы нужно открыть рабочее окно Simulink, в котором в дальнейшем будет создаваться модель системы в виде структурной схемы. Это можно выполнить с помощью меню, выбрав File/New/Model (см. рис. 5.2). Для построения структурной схемы модели нужно выбрать блоки из библиотеки блоков и переместить их в рабочее окно модели. Затем следует провести линии связи, выбрать параметры моделирования, выполнить моделирование и проанализировать результаты. Далее рассмотрим подробнее эти действия на примерах. 5.2. Моделирование логических функций Прежде чем перейти к моделированию основных логических функций в Simulink, вспомним их условные обозначения на схемах и принцип работы основных логических функций (см. таблицу). Логические функции «И» (AND) Логическое умножение a иbF «ИЛИ» (OR) Логическое сложение a или b F «НЕ» (NOT) Логическое отрицание не a F F ab F ab F a Все базовые логические операции в Simulink реализуются при помощи блока Logical Operator, который находится в браузере библиотеки в разделе Commonly Used Blocks (рис. 5.3). Откроем новую модель в Simulink и сохраним ее. Добавим на рабочий стол редактора модели блок логических операций, для этого блок нужно выделить и, не отпуская левую кнопку мыши, перетащить его в рабочее окно модели (рис. 5.4). Двойным щелчком левой кнопки мыши по элементу в окне модели откроем его настройки (рис. 5.5). В меню Operator можно выбрать тип оператора. В разделе Number of Input ports задают количество входных портов. Далее подадим на вход блока логических операций логические «1» и «0». Для этого добавим на схему два источника постоянных значений – блок Constant (находится в разделе библиотеки Commonly Used Blocks). Укажем в настройках блоков Constant на первой вкладке Main в поле Constant Value значения «1» и «0» – для разных блоков. На вто40 рой вкладке Signal Attributes изменим тип данных на Boolean – для обоих блоков (рис. 5.6). Между блоками Constant будем переключаться вручную, используя блок Manual Switch (находится в разделе библиотеки Signal Routing). Рис. 5.3. Расположение блока Logical Operator Рис. 5.4. Блок Logical Operator в окне модели Simulink 41 Рис. 5.5. Настройки блока Logic Operator Рис. 5.6. Настройки блока (вторая вкладка Signal Attributes) Чтобы получить бинарный сигнал на втором входе блока Logic Operator, повторим действия, указанные в предыдущем абзаце. Соеди42 ним блоки, как показано на рис. 5.7. Выходной сигнал с блока Logic Operator будем фиксировать на Display (находится в разделе библиотеки Sinks). Рис. 5.7. Логическая схема в окне модели Simulink Для запуска симуляции и проверки работы схемы в строке Stop time на панели инструментов редактора Simulink (выделенной овалом на рис. 5.7) должно стоять значение inf, что означает симуляцию с бесконечной длительностью. Чтобы запустить симуляцию, необходимо нажать кнопку Start Simulation – черный треугольник рядом со строкой Stop Time, который находится рядом со строкой Stop time. Остановить симуляцию можно, нажав кнопку Stop Simulation (квадрат рядом со строкой Stop Time). Запустим симуляцию схемы, и с помощью ручных ключей Manual Switch проверим правильность работы логического блока AND. Переключение положения ключа осуществляется двойным щелчком правой кнопки мыши по элементу. Единица на дисплее должна появляться только при двух единицах на входе (рис. 5.8). С помощью совокупности логических блоков можно моделировать сложные логические функции. Например, рассмотрим моделирование логической функции: F ( x1 x2 )x3 x4 x2 . 43 Рис. 5.8. Симуляция работы схемы Ее эквивалентная схема представлена на рис. 5.9. Переключая положения ключей, можно получить ее таблицу истинности. Рис. 5.9. Схема логической функции 44 5.3. Моделирование электрических цепей Набор блоков для моделирования электротехнических устройств находится в библиотеке SimPowerSystems. Для моделирования любой модели Simulink, содержащей блоки SimPowerSystems, необходим блок Powergui (рис. 5.10). Он используется для хранения эквивалентной схемы Simulink, которая представляет уравнения модели в пространстве состояний и определяет метод для ее решения. Этот блок нужно выделить и, не отпуская левую кнопку мыши, перетащить его в рабочее окно модели. После чего следует открыть окно свойств блока (щелкнув по нему 2 раза левой кнопкой мыши), в открывшемся окне выбрать Configure parameters. Это действие откроет окно параметров, представленное на рис. 5.11. В этом окне нужно выбрать Simulation Type – Discrete, а Sample Time – 0.0001. Блок Powergui не соединяется с другими блоками. Рис. 5.10. Расположение блока Powergui 45 Рис. 5.11. Окно параметров Для моделирования резисторов, катушек и конденсаторов используют блок Series RLC branch. Блок находится в библиотеке SimPowerSystems в разделе Elements (рис. 5.12). Блок нужно выделить и, не отпуская левую кнопку мыши, перетащить его в рабочее окно модели (рис. 5.13). После чего нужно открыть окно свойств блока (щелкнув по нему 2 раза левой кнопкой мыши) и задать необходимые параметры (рис. 5.14). В экспериментальной работе необходимо ввести схему, содержащую резисторы и катушки или конденсаторы, в зависимости от варианта. Для ввода каждого из элементов необходимо использовать отдельный блок. Для задания резистора необходимо в меню Branch type выбрать «R». А в окне Resistance указать его сопротивление в омах. Для задания катушки индуктивности необходимо в меню Branch type выбрать «L». А в окне Inductance указать ее индуктивность в генри. Для задания конденсатора необходимо в меню Branch type выбрать «С», а в окне Capacitance указать его емкость в фарадах. Если необходимо повернуть элемент, то нужно щелкнуть правой кнопкой мыши, и в открывшемся меню выбрать пункт Format, далее выбрать Rotate Block, после чего выбрать один из подпунктов Clockwise (по часовой стрелке) или Counterclockwise (против часовой стрелки). 46 Рис. 5.12. Расположение элемента Series RLC Branch Рис. 5.13. Рабочее окно модели 47 Рис. 5.14. Окно свойств блока Series RLC Branch Далее необходимо выбрать источник синусоидального напряжения. Этот блок находится в библиотеке SimPowerSystems в разделе electrical sources и называется AC Voltage Source (рис. 5.15). После этого нужно открыть окно свойств блока (рис. 5.16) и задать необходимые параметры. В окно Peak amplitude вводят значение амплитуды сигнала в вольтах (в работе ввести значение «1»). В окно Frequency вводят значение частоты гармонического сигнала в герцах, сюда нужно ввести первое значение из диапазона частот в соответствии с вариантом задания. Соединяя источник сигнала и элементы, получим модели электрической схемы. Пример такого соединения представлен на рис. 5.17. Теперь необходимо добавить элементы для мониторинга и анализа результатов работы: два блока voltage measurement, которые выполняют функции вольтметра; блок scope – осциллограф, который служит для отображения изменения сигнала. 48 Рис. 5.15. Выбор источника синусоидального напряжения Рис. 5.16. Параметры блока AC Voltage Source 49 Рис. 5.17. Модель электрической схемы Первый блок voltage measurement подключим параллельно источнику напряжения, второй блок параллельно резистору, установленному на конце схемы. Пример подключения показан на рис. 5.19. Следует помнить, что «плюсовой контакт» блока voltage measurement необходимо соединить с плюсом на схеме. Первоначально блок scope имеет один вход. Для того чтобы было два входа, нужно двойным щелком по элементу открыть окно отображения. В открывшемся окне вызвать меню параметров, нажав кнопку, как показано на рис. 5.18, и в области Number of axes задать число 2. Рис. 5.18. Выбор параметров блока scope. Квадратом выделена кнопка открытия меню параметров 50 Рис. 5.19. Подключение устройств измерения и отображение сигналов После того как все параметры заданы, в общем меню модели зададим конечное значение времени моделирования (окно для ввода значения выделено квадратом на рис. 5.19, в данной работе – это «0.1»). Запустим моделирование, нажав кнопку Start Simulation (черный треугольник). Далее нужно проверить результат моделирования, для этого откроем окно осциллографа (двойной щелчок левой кнопкой мыши по блоку scope). Результат моделирования представлен на рис. 5.20. Если синусоиды отображаются не полностью, то нужно определить масштаб графиков. Для этого нужно щелкнуть правой кнопкой мыши по области графика и выбрать Autoscale (это действие нужно проделать с каждым графиком). Верхний график показывает значение сигнала на входе электрической цепи, нижний – на выходе. По окну осциллографа можно определить значение амплитуды сигнала на выходе (в данном примере 0,4 В). В ходе работы нужно заполнить табл. П3.3 (см. приложение), которая содержит зависимость значения амплитуда сигнала на выходе схемы от частоты сигнала (см. табл. П3.3). Для заполнения таблицы необходимо изменить значение 51 Рис. 5.20. Окно вывода осциллограмм блока scope частоты сигнала, в генераторе сигнала (AC Voltage Source) и измерить соответствующее ей значение амплитуды сигнала на выходе (после изменения значения частоты генератора необходимо перезапустить моделирование схемы, нажав черный треугольник). Диапазон частот выбрать для вашего варианта. 5.4. Блоки для считывания и передачи данных в Workspace В этой части работы вместо синусоидального генератора будет использован «управляемый источник напряжения», закон изменения напряжения на котором зададим с помощью m-файла. Для этого выберем блоки Сontrolled Voltage Source и From Workspace. Блок Сontrolled Voltage Source преобразует входной сигнал Simulink в эквивалентный источник напряжения. Сгенерированное напряжение управляется входным сигналом блока. Блок From Workspace считывает данные из рабочей области (Workspace) и выводит данные как сигнал. 52 Данные о выходном сигнале будем возвращать обратно в Workspace. Для этого существует блок To Workspace. Примечание. Помимо выбора блока из дерева библиотек в Simulink реализован его поиск по названию. Для этого необходимо ввести его название в область поиска (рис. 5.21). Рис. 5.21. Окно поиска В электрической схеме, соответствующей вашему варианту, вместо источника синусоидального сигнала поставим связку блоков Сontrolled Voltage Source и From Workspace (рис. 5.22). Вместо осциллографа используем блок To Workspace. Пример подключения блоков показан на рис. 5.23. Рис. 5.22. Расположение блока From Workspace 53 Рис. 5.23. Подключение блоков From Workspace и To Workspace Далее переходим к параметрам блока «From Workspace» (рис. 5.26). Этот блок считывает с workspace массив с названием, указанным в поле data. В данном примере он называется simin. Этот массив создается заранее с помощью m-файла и должен содержать два столбца: один, показывающий изменение времени, другой – изменение напряжения. Пример m-файла, формирующий данный массив, представлен на рис. 5.24. Рис. 5.24. Программа формирующая массив simin После выполнения этой программы в окне workspace отображаются данные, как показано на рис. 5.25. В ходе имитации работы схемы (рис. 5.23) блок From Workspace будет использовать данные, находя54 щиеся в массиве simin, поэтому перед запуском имитации необходимо убедиться, что этот массив присутствует в workspace. Рис. 5.25. Окно workspace Далее переходим к настройке блока From Workspace. Окно настроек (рис. 5.26) открывается с помощью двойного щелчка по блоку. В окне sample time указывается шаг отсчетов по времени. В работе нужно ввести значение 0.0001, как показано на рисунке. Рис. 5.26. Окно параметров элемента «From Workspace» 55 Запустим симуляцию схемы и перейдем в workspace. В окне появился массив структур с названием simout (рис. 5.27). Открыв этот массив (рис. 5.28, 5.29), можно увидеть, что он состоит из полей time, signals и blockName. В свою очередь, блок signals состоит из полей value, dimensions, label. В поле values содержатся необходимые данные. Рис. 5.27. Окно workspace Рис. 5.28. Содержание массива simout Рис. 5.29. Содержание массива signals 56 Создадим массив Uout, в который запишем данные из массива структур simin (рис. 5.30) и построим по ним графики (рис. 5.31). Рис. 5.30. Программа для считывания данных и построения графиков Рис. 5.31. Графики 57 6. ПРИМЕНЕНИЕ ИНТЕРПОЛЯЦИОННЫХ МЕТОДОВ ДЛЯ ПРИБЛИЖЕНИЯ ВАХ ТРАНЗИСТОРА Базовыми при проектировании многих радиотехнических устройств на транзисторах является его выходная Ic(Uce, Ib) вольтамперная характеристика (ВАХ), показанная на рис. 6.1, где Ib – ток базы; Uce – напряжение коллектор-эммитер; Ic – ток коллектора. Поэтому вопросы приближения этих характеристик являются весьма актуальными в инженерной практике. Рис. 6.1. Выходная ВАХ транзистора типа КТ312Б 6.1. Интерполяция таблично заданной функции одной независимой переменной В практике вычислений часто требуется определить значение функции f(x), определенной своими значениями f ( x0 ), f ( x1 ), …, f ( xn ) на определенном наборе точек (узлов) a x0 x1 ... xn b , в некоторой промежуточной точке x ( xi , xi 1 ) , где i = 0, 1, … , n – 1. Построение функции F ( x) , позволяющей вычислить значение функции f ( x) в точках, не совпадающих с заданным набором узлов, называется задачей интерполяции функции одной переменной. При этом f ( x) 58 называют интерполируемой, а F(x) – интерполирующей функцией. Определение значения функции f(x) для x < a или x > b называется задачей экстраполяции. При решении этих двух задач часто используются интерполяционная формула Лагранжа для неравноотстоящих узлов, приведенная ниже: L(n, x) n i 0 n f ( xi ) x xj j 0 xi j i xj . С помощью этой формулы можно выполнить интерполяцию одной из ветвей выходной (например, для Ib = 0,3 мА) ВАХ (рис. 6.1). 6.2. Интерполяция таблично заданной функции двух независимых переменных Предположим, что на некотором наборе узлов на плоскости таблично задана функция двух независимых переменных f ( x, y ) , опредеf ( x1, y1 ), f ( x2 , y2 ), , ленная своими значениями f ( x0 , y0 ), f ( xn , yn ). Примерами функций двух переменных может служить представленная на рис. 6.1 зависимость Ic(Uce, Ib). Построение функции F ( x, y ), позволяющей вычислить значение функции f ( x, y ) в точках, не совпадающих с заданным набором узлов, называется задачей интерполяции функции двух переменных. При этом f ( x, y ) называют интерполируемой, а F ( x, y ) – интерполирующей функцией. Для интерполяции таблично заданной на прямоугольной (k 1) ( m 1) сетке узлов функции двух независимых переменных можно использовать, например, интерполяционную формулу Лагранжа. Однако при применении интерполяционных полиномов для выполнения интерполяции возможно появление явления волнистости, при котором значение интерполирующей функции между узлами сколь угодно сильно отличается (осциллирует) от значений интерполируемой функции в близлежащих узлах. Это является свойством степенного полинома. Так как явление волнистости не проявляется для полиномов степени три и менее, то для его преодоления используют линейную, квадратичную или кубическую сплайн-интерполяцию. 59 6.3. Сплайн-интерполяция Функция одной переменной S ( x), заданная на отрезке [a, b], называется сплайном порядка p, если она: 1) на каждом из частичных отрезков [ xi , xi 1 ] [a, b] , i = 0, 1, …, n – 1 заданной степени p 2 , т. е. может быть записана как S ( x) Si ( x) p k 0 p ak(i ) ( x xi )k Ck(i ) x k ; . k 0 2) р – 1 раз непрерывно дифференцируема на [a, b]. При сплайнинтерполяции интерполируемая функция представляется набором полиномов первой, второй или третьей степени соответственно – своим для каждого из внутренних подотрезков [ xi , xi 1 ] [a, b] . Для реализации одномерной сплайн-интерполяции в системе MATLAB имеется следующая функция: interp1(X,Y,х,method) – возвращает вектор, содержащий элементы, соответствующие элементам вектора х. Сплайн строится по двум входным векторам X и Y. Параметр method (его можно опустить) определяет метод интерполяции: linear – если используется кусочно-линейная; spline – если интерполирование выполняется кубическими сплайнами. Пусть, например, требуется выполнить сплайн-интерполяцию следующей таблично заданной функции xi 1 2 4 6 7 f ( xi ) 1 2 5 2 0.5 Пример реализации задачи представлен ниже, а график сплайна – на рис. 6.2. X=[1;2;4;6;7]; % входной вектор значений независимой % переменной Y=[1;3;5;2;0.5]; % входной вектор значений функции 60 x=1:0.01:7; % для этих значений надо вычислить % значения интерполирующей функции y1=interp1(X,Y,x,'linear'); % линейная сплайн‐интерполяция y2=interp1(X,Y,x,'spline'); % кубическая сплайн‐интерполяция plot(x,y1,'r‐',x,y2,'b‐‐') grid on Рис. 6.2. Окно выходного графика 6.4. Двумерная сплайн-интерполяция Для реализации двумерной сплайн-интерполяции в системе MATLAB имеется функция: interp2(N,X,Y,n,x,’method’) – возвращает матрицу, содержащую элементы, соответствующие элементам векторов n и x. Сплайн строится по трем входным векторам: X и N – значения независимых переменных и Y − значение интерполируемой функции. Векторы X и N должны быть монотонными (т. е. значения их элементов или строго возрастают, или строго убывают с ростом индексов). Параметр method (его можно опустить) определяет метод интерполяции: bilinear – 61 если используется кусочно-линейная интерполяция; bicubic – если интерполирование выполняется кубическими сплайнами. Например, требуется выполнить сплайн-интерполяцию по следующим исходным данным, представленным на рис. 6.3. Для этого нужно выбрать несколько графиков, по которым будем осуществлять интерполяцию (выбранные графики отображены на рис. 6.4). Рис. 6.3. Выбор точек на графике В первую очередь нужно задать вектор X. Для этого выберем несколько значений по оси Uce и запишем их в порядке возрастания. Значения Uce должны быть выбраны таким образом, чтобы графики функций в этой координате принимали разное значение. Например, для графиков, представленных на рис. 6.3, нельзя выбрать координату Uce = 0, так как все графики в этой точке имеют одинаковое значение Ic = 0. Можно выбрать следующие координаты: 3 5 Х= 7 . 10 15 62 Далее заполним массив Y таким образом, чтобы каждому столбцу соответствовали значения Ib(Uce) одного из графиков. На рис. 6.3 точками показаны значения, занесенные в первый столбец. Во второй столбец нужно занести точки из второго графика и т. д. 7 8 Y 9 10 12 12 14 15 16 18 27 28 29 30 32 35 36 37 . 39 42 В вектор N вносят начальные координаты исходных графиков. Для решения поставленной в примере задачи в качестве координаты N будем использовать координаты Ib(Uce) для каждого из графиков в первой выбранной точке Uce (в примере Uce = 3). Вектор N будет совпадать с первой строкой матрицы Y. Как видно из описания функции, необходимо также задать векторы n и x. В нашем случае вектор х – это диапазон значений, в котором изменяется Uce. При этом следует выбирать не полный диапазон, а тот, в котором заключены значения вектора X. В нашем примере x = 3:0.1:15, где 3 и 15 – начальное и конечное значения, соответствующее начальному и конечному значению вектора Х; 0.1 – шаг, выбранный произвольно. В вектор n записывают начальные координаты зависимостей, которые требуется рассчитать и построить. Изначально вектор n зададим равным вектору N. Таким образом, получим 4 исходных графика в выбранном диапазоне изменения Uсe (рис. 6.4). Реализация этого задания представлена на рис. 6.5. Однако основная цель двумерной интерполяции – по заданным исходным графикам построить подобные им, но имеющие другие начальные значения. Для этого в вектор n внесем еще одно начальное значение. Кроме того, в программе добавим отображение пятого графика (рис. 6.6). Теперь, как видно из рис. 6.7, программа помимо исходных графиков отображает новый график с заданным начальным значением. 63 Рис. 6.4. Окно выходного графика Рис. 6.5. Код программы в m-файле для построения четырех графиков 64 Рис. 6.6. Код программы в m-файле для построения пяти графиков Рис. 6.7. Окно выходного графика 65 ПРИЛОЖЕНИЯ ЗАДАНИЯ ДЛЯ ЭКСПЕРЕМЕНТАЛЬНЫХ РАБОТ Приложение 1 Первое знакомство с математической системой MATLAB 1. Решить СЛАУ в соответствии с вариантом. Вычислить невязку (табл. П1.1). Т а б л и ц а П1.1 Решение СЛАУ Номер варианта Система уравнений Номер варианта 2 x1 x2 3x3 2 x4 4 x1 x2 2 x3 3 x4 1 0 3x1 x2 x3 2 x4 4 8 2 x1 3 x2 x3 x4 6 x1 2 x2 3x3 4 x4 5 2 x1 x2 2 x3 3 x4 1 3x1 2 x2 x3 2 x4 1 9 3x1 2 x2 5 x4 12 2 x1 x2 x3 x4 5 x1 x2 2 x3 x4 1 x1 x2 x3 3 x4 10 2 x1 x3 4 x4 9 x2 3 x3 4 x4 5 x1 2 x3 3 x4 4 3x1 x2 x3 2 x4 6 x1 2 x2 x3 x4 8 4 x1 3 x2 2 x3 x4 5 2 3x1 3x2 3 x3 2 x4 6 3x1 x2 3 x3 x4 6 x1 2 x2 3x3 x4 4 1 Система уравнений a 4 x1 3x2 5 x3 5 x1 2 x2 x3 x4 8 2 x1 x2 x3 x4 5 x1 x2 2 x3 x4 1 66 О к о н ч а н и е т а б л. П1.1 Номер варианта 3 Система уравнений x1 3 x2 5 x3 7 x4 12 3x1 5 x2 7 x3 x4 0 5 x1 7 x2 x3 3x4 4 Номер варианта b 5 x1 7 x2 10 x4 9 c 6 4 x1 x3 x4 11 d x1 2 x2 2 x3 x4 5 2 x1 x2 3x3 2 x4 1 x1 x2 6 x4 25 x1 2 x2 3 x3 6 x4 10 x1 2 x2 3 x3 2 x4 6 6 x1 5 x2 2 x3 4 x4 4 2 x1 x2 2 x3 3x4 8 3x1 2 x2 x3 2 x4 5 e 9 x1 x2 x3 x4 13 3x1 4 x2 2 x3 2 x4 1 3x1 9 x2 2 x3 11x4 0 2 x1 3x2 2 x3 x4 8 2 x1 5 x2 3 x3 x4 5 2 x1 2 x2 x3 x4 4 7 3x1 x2 x3 2 x4 6 x1 x2 x3 x4 2 x1 2 x2 x3 8 x2 3x3 x4 15 2 x1 x2 3 x3 2 x4 4 3x1 x2 3x3 x4 6 3x2 5 x3 1 5 3x1 5 x2 7 x3 x4 0 x1 5 x2 2 x1 5 x2 3 x3 4 x4 20 3x1 x2 2 x3 9 x1 3x2 5 x3 7 x4 12 5 x1 7 x2 x3 3 x4 4 7 x1 x2 3 x3 5 x4 16 4 Система уравнений 2 x1 6 x2 2 x3 2 x4 12 4 x1 3x2 x3 2 x4 6 f 8 x1 5 x2 3x3 4 x4 12 3x1 7 x2 3x3 x4 1 5 x1 9 x2 6 x3 2 x4 7 4 x1 6 x2 3x3 x4 8 3x1 3 x2 2 x3 2 x4 10 67 2. Установить числовой формат long e. Решить нелинейное уравнение (табл. П1.2) на заданном отрезке [a, b] (т. е. сначала отделить корни, а затем уточнить их положение) в соответствии с вариантом, используя для уточнения положения каждого корня обе формы функции fzero. Сравнить формы функции fzero по величине невязки f ( xn ) . Т а б л и ц а П1.2 Нелинейные уравнения Номер варианта 0 1 2 3 4 Вид уравнения f ( x) 0 a b x4 2 x 4 0 –5 ∞ 2 x3 6 x 2 1 0 2 log( x) x 0 –∞ 10 –1 50 -10 5 –3 4 x xe 0 5 4 3 2 x x 6 x 14 x 11x 2 0 5 5 x sin( x ) 11x 2 0 –∞ ∞ 6 x 4 tg ( x) cos( x) 1 0 –1.5 1.5 5 x 7 0.2 x 0.1e 20 cos( x ) 1 0 –3 2.5 8 x3 x 2 5 sin( x) 0 2sin( x) x –4 2 9 e 2 x sin( x) 0 –7 2 a e x 3 cos( x ) 0 0 5 b 1 cos( x) 0.1x 0 3 sin( x ) 1 7 c (0.5 sin( x ))ecos( x ) 0.1 0 0 5 –7 –2 –5 5 0 5 sin( x ) 1 0 d sin( x )2 e x3 4 x 2 6 0 f 2 x ( x 1) 0.15e 0 68 Контрольные вопросы и задания 1. Поясните на примере порядок создания М-файл функции. 2. Сформулируйте постановку задачи решения СЛАУ. 3. Какие уравнения называются нелинейными, алгебраическими и трансцендентными? 4. Что называется решением нелинейного уравнения? 5. В чем содержание этапов нахождения корней нелинейного уравнения? 6. Сформулируйте теорему существования корней нелинейного уравнения. 7. Какие методы поиска решения нелинейного уравнения реализованы в MATLAB? 69 Приложение 2 Основы программирования в системе MATLAB 1. Вычислить аналитическое выражение в соответствии с номером варианта (табл. П2.1). Вычисления выполнить с использованием условного оператора и обоих операторов цикла. По результатам вычислений построить два графика на одной координатной плоскости. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Т а б л и ц а П2.1 Аналитические выражения Номер варианта Исходные данные 0 x y z cos 2 ( x y z ) , если x y z arctg( x y z ) R ( x, y , z ) cos( x y ) 5 1 , если x y z xe 2 i 1 i y 0.032 z 0.95 1 x 2 x 0.25 1 ln 1 ( x y ) 2 e z sin( x y ), если z x y ( x 2 y 2 ) z R ( x, y , z ) 6 ( x y z )3 если z x y cos(nx), 2 th( x y ) n 1 x 2.1 y 3.73 -0.5 z 3 z 0.35 2 lg ch( x y z ) , если z x 2 y 4 x y z x y z sin( ) R ( x, y, z ) sin(x y ) 5 1 x 2 , если z x 2 y 5 6 cos n( y z ) n 1 x 0.86 y 1.9 8 z 7 z 1.5 70 П р о д о л ж е н и е т а б л. П2.1 Номер варианта Исходные данные 3 cos(e x ) ( y z )2 , если sin( x z ) y arcctg tg( x y z ) R ( x, y , z ) 7 th n( x 2) n 1 , если sin( x z ) y 2 2 y (x z ) x 2.1 y 3.73 0.5 z 3 z 0.35 4 ln ctg 2 ( x y z ) 4 x 2 y 2 , если cos( x) 0 ch( x y z ) R ( x, y , z ) 5 2 sin( x y ) 1 x , если cos( x) 0 5 6 cos n( y z ) n 1 y 3.16 z 1.7 –3.5 x 3.5 x 0.35 5 lg ( x z ) 4 cos(e xy ) y , если y x z 2 2 y z R ( x, y , z ) 6 arctg( x y ) sin( xyzn), если y x z y e n 1 x 3.56 z 3.73 –3 y 3 6 y 0.5 z cos( z ) 3 2 x y arctg 1 z , если y x e R ( x, y , z ) ch( y z ) 5 k , если y x x y 5 k 1 1 k y 0.3 z 3.8 71 –1 x 2 x 0.3 П р о д о л ж е н и е т а б л. П2.1 Номер варианта 7 Исходные данные ( y z )5 если sin( z ) 0 lg sin( x y ) , sin( x y ) R ( x, y , z ) ln ch( x y z ) 7 k , если sin( z ) 0 2 sin( x y z ) k 2 1 k 2 x 1.7 8 z 0.4 z 0.59 –1 y 3 y 0.4 ln ctg 2 ( x y z ) 4 x 2 y 2 , если sin( y ) 0 ch( x y z ) R ( x, y , z ) ln ch( z ) 7 x n , если sin( y ) 0 sin( x y ) n 1 y n x 3.9 a –1 z 3.8 xyz xyz , если tg( y ) x z ln tg x y z ch( x y z ) R ( x, y , z ) 5 cos n( x y ) sin( x ) n 1 , если tg( y ) x z e 3 th( y z ) x 1.36 9 y 0.72 z 4.7 1 y 8.5 y 0.75 cos( xy ) ( x z )2 , если y x z y e arccos( z ) R ( x, y , z ) arctg( x y ) 6 sin( xyzn), если y x z ey n 1 x 3.0 z 0.73 72 1 y 3.5 y 0.05 П р о д о л ж е н и е т а б л. П2.1 Номер варианта b Исходные данные 3 ln ch( x y z ) , если z x 2 x yz x y z 2 sin( ) R ( x, y, z ) cos( x y ) 5 1 x 2 , если z x 2 8 9 sin n( y z ) n 1 x 0.86 y2 –1 z 7 c ( y z )5 3 если tg( z ) 0 arctg 1 z 2 , sh( x y ) R ( x, y , z ) ln ch( x y z ) 7 k , если tg( z ) 0 3 3 th( y z ) k 2 6 k x7 y 0.2 –1 z 4 d z 0.1 z cos( yz ) 3 y 2 x z arctg 1 z , если e x e R ( x, y , z ) 5 k x y z lg sin( ) 1 xk , если e y x k 1 y 0.3 e z 0.1 z 1.8 –1 x 1.5 x 0.2 xyz xyz , если tg( y ) tg( x z ) lg tg x y z ch( x y ) R ( x, y , z ) 6 cos n( x y ) tg( x ) n 1 , если tg(y ) tg( x z ) e ( x2 z 2 ) y y 0.9 z 1 0.1 x 1.1 x 0.1 73 О к о н ч а н и е т а б л. П2.1 Номер варианта Исходные данные f xecos(x y ) arctg( x y z ) , если x y z cos 2 ( x y z ) R ( x, y , z ) 5 1 x y cos( z ) 4 , если x y z i 1 i y 0.7 z 2.5 0 x 8 x 0.2 2. Построить график исходной функции и частичной суммы ряда Фурье для заданного варианта функции f ( x) при количестве слагаемых 5, 10 и 20 (табл. П2.2). По результатам вычислений построить четыре графика (включая график исходной функции) на одной координатной плоскости. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Здесь при вычислении функции f ( x) следует применить известное из аналитической геометрии уравнение прямой линии, проходящей через две заданные точки. Т а б л и ц а П2.2 Варианты функции f(x) Номер варианта Вид функции f(x) 0 74 П р о д о л ж е н и е т а б л. П2.2 Номер варианта Вид функции f(x) 1 2 3 75 П р о д о л ж е н и е т а б л. П2.2 Номер варианта Вид функции f(x) 4 5 6 76 П р о д о л ж е н и е т а б л. П2.2 Номер варианта Вид функции f(x) 7 8 9 77 П р о д о л ж е н и е т а б л. П2.2 Номер варианта Вид функции f(x) a b c 78 О к о н ч а н и е т а б л. П2.2 Номер варианта Вид функции f(x) d e f 79 Контрольные вопросы и задания 1. Поясните, чем М-файл программа отличается от М-файл функции. 2. Запишите синтаксисы операторов if и switch. Объясните порядок их работы и особенности использования. 3. Запишите синтаксисы операторов for и while. Объясните порядок их работы и особенности использования. 4. Запишите установленный в MATLAB приоритет операций. 5. Каковы сущность и порядок разложения функции в ряд Фурье? 80 Приложение 3 Основы работы в Simulink 1. Построить логическую схему, соответствующую функции четырех аргументов х1, х2, x3, x4. Функцию выбрать из табл. П3.1 в соответствии с номером варианта. Собрать схему в Simulink и промоделировать ее работу. Результаты моделирования занести в табл. П3.1. Т а б л и ц а П3.1 Результаты моделирования Значение аргументов X1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 X2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 X3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 81 X4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Значение функции Y Варианты к заданию 1 Т а б л и ц а П3.2 Логические функции Номер варианта Логическая функция 0 F ( x1 )x2 x4 x3 x2 1 F ( x1 x2 ) x4 x3 2 F x1 x2 x3 x4 x2 3 F x1 x2 x3 x1 x2 4 F x1 x2 x3 x4 x1 5 F x1 x2 x3 x4 x1 6 F x1 x2 x3 x4 x1 7 F x1 x2 ( x3 x4 x1 ) a F x1 x2 x3 x1 x2 F x1 x2 x3 x1 x4 F x1 x2 x1 x3 x4 b F x1 x2 x3 ( x1 x2 ) x4 c F x1 x4 d F x1 x2 x3 x2 x4 e F x1 x2 x4 x3 x4 f F x1 x2 x3 x2 x4 8 9 x2 x3 x1 2. Собрать электрическую схему в Simulink и промоделировать ее работу. Схему выбрать в соответствии с номером варианта. Заполнить 82 табл. П3.3. Точки, которые будут занесены в таблицу, выбрать в соответствии с диапазоном частот из своего варианта задания. Промежуток между точками выбрать примерно одинаковым. Значение амплитуды получить с помощью симуляции работы схемы из своего варианта. 3. В электрической схеме, собранной в задании 2, входной сигнал подать с помощью связки блоков Сontrolled Voltage Source и From Workspace, выходной сигнал снять с помощью блоков Voltage Mesument и To Workspace. Построить зависимость сигнала на входе и выходе от времени при подаче на схему синусоидального сигнала с частотой, соответствующей наибольшему и наименьшему значению напряжения, табл. П3.3. Т а б л и ц а П3.3 Зависимость значения амплитуды сигнала на входе и выходе от времени Значение частоты сигнала Значение амплитуды сигнала fmin fmax Варианы к заданиям 2, 3 Электрические схемы Вариант 0 Диапазон частот: fmin = 40 Гц; fmax = 80 Гц. 83 Вариант 1 Диапазон частот: fmin = 40 Гц; fmax = 90 Гц. Вариант 2 Диапазон частот: fmin = 20 Гц; fmax = 50 Гц. Вариант 3 Диапазон частот: fmin = 1 Гц; fmax = 100 Гц 84 Вариант 4 Диапазон частот: fmin = 20 Гц; fmax = 100 Гц. Вариант 5 Диапазон частот: fmin = 20 Гц; fmax = 150 Гц. Вариант 6 Диапазон частот: fmin = 40 Гц; fmax = 60 Гц. 85 Вариант 7 Диапазон частот: fmin = 30 Гц; fmax = 130 Гц. Вариант 8 Диапазон частот: fmin = 20 Гц; fmax = 120 Гц. Вариант 9 Диапазон частот: fmin = 30 Гц; fmax = 150 Гц. 86 Вариант a Диапазон частот: fmin = 50 Гц; fmax = 70 Гц. Вариант b Диапазон частот: fmin = 30 Гц; fmax = 90 Гц. Вариант c Диапазон частот: fmin = 10 Гц; fmax = 30 Гц. 87 Вариант d Диапазон частот: fmin = 10 Гц; fmax = 50 Гц. Вариант e Диапазон частот: fmin = 20 Гц; fmax = 70 Гц. Вариант f Диапазон частот: fmin = 30 Гц; fmax = 150 Гц. 88 Приложение 4 Применение интерполяционных методов для приближения ВАХ транзистора 1. В соответствии с вашим вариантом выполнить одномерную интерполяцию одной из средних ветвей выходной статической ВАХ транзистора (4–6 узлов) с использованием формулы Лагранжа и построить соответствующий график. При выборе узлов следует обязательно включить точку с координатами [0, 0], а также точку перегиба ВАХ. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Результаты вычислений представить в графической форме. 2. Выяснить, имеет ли место явление волнистости при выполнении интерполяции и найти то значение из диапазона входных данных, при котором оно проявляется больше всего. Скорректировать исходные данные, добавив в исходные данные узел из области с наибольшим уровнем волнистости и вновь выполнить п. 1. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Результаты вычислений представить в графической форме. 3. Выполнить одномерную сплайн-интерполяцию (линейную и кубическую) одной из средних ветвей выходной ВАХ. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Результаты вычислений представить в графической форме. Сделать сравнительные выводы по результатам пп. 1, 2 и 3 (о соответствии интерполирующей функции интерполируемой). 4. Выполнить двумерную сплайн-интерполяцию (линейную и кубическую) для выходной ВАХ. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Результаты вычислений представить в графической форме (табл. П4). Сделать сравнительные выводы по результатам двумерной сплайн-интерполяции (о соответствии интерполирующей функции интерполируемой). 89 Т а б л и ц а П4 Выходные ВАХ транзисторов Номер варианта Вид ВАХ 0 ГТ-405А, ГТ-405В 1 КТС393А-1 2 ГТ122А-Б 90 П р о д о л ж е н и е т а б л. П4 Номер варианта Вид ВАХ 3 КТ368А-Б 4 ГТ376А 5 КТ324А-Е 91 П р о д о л ж е н и е т а б л. П4 Номер варианта Вид ВАХ 6 КТ345Б 7 ГТ346А-В 8 КТ355А 92 П р о д о л ж е н и е т а б л. П4 Номер варианта Вид ВАХ 9 ГТ362А-Б a КТ363А b КТ368А 93 П р о д о л ж е н и е т а б л. П4 Номер варианта Вид ВАХ c ГТ108Г d ГТ122А e КТ207А 94 П р о д о л ж е н и е т а б л. П4 Номер варианта Вид ВАХ f КТ345В 95 БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. MathWorks: официальный сайт. – URL: https://www.mathworks.com/ help/matlab/ (дата обращения: 30.11.2022). 2. Амос Гилат. MATLAB®. Теория и практика: научно-популярное издание / Амос Гилат. – Москва : 2016. – 416 с. 3. Горбаченко В. И. Вычислительная линейная алгебра с примерами на MATLAB: учеб. пособие / В. И. Горбаченко. – Санкт-Петербург : Изд-во БХВПетербург, 2011. – 320 с. 4. Шампайн Л. Ф. Решение обыкновенных дифференциальных уравнений с использованием MATLAB: учеб. пособие / Л. Ф. Шампайн, И. Гладвел, С. Томпсон. – 1-е изд. – Санкт-Петербург : Лань, 2009. – 304 с. 96