НОЦ “БАЗОВОЕ ОБРАЗОВАНИЕ" ИНФОРМАТИКА Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. Екатеринбург 2008 Лекция 1 Знакомство с интерфейсом редактора MATLAB Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 3 Цель лекции Познакомиться: с интерфейсом пользователя системы MATLAB Структурой документов этого пакета Основными объектами системы Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 4 Использование системы MatLab Математические и инженерные вычисления; Создание и проверка алгоритмов; Моделирование различных процессов; Анализ и исследование данных, визуализации данных; Научная и инженерная графика. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 5 Система MatLab Cостоит из следующих основных компонент: Язык MatLab – это язык матриц и массивов, с управлением функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования; Среда MatLab – это сервисы и инструментарий. С которыми работает пользователь системы MatLab; Управляемая графика – графическая система MatLab, команды высокого уровня для визуального представления данных, обработки изображений, иллюстративной графики; Библиотека математических функций – большая коллекция вычислительных алгоритмов от элементарных функций; Программный интерфейс – это библиотека, позволяющая писать свои программы на языках Фортран и Си. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 6 Интерфейс пользователя Matlab Главное окно Matlab Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 7 В окне команд вводятся команды пользователя и выводятся результаты выполнения команд. В рабочей области Command Window находится строка ввода, помеченная «>>». В строке ввода можно вводить любые допустимые выражения. После нажатия Enter отображается результат вычисления и создается новая строка ввода команд. Клавиши управления курсором «↑» и «↓» используются для просмотра стека команд. Стек команд – это область оперативной памяти, в которой хранятся выполненные в текущем сеансе команды. Просмотр стека начинается с конца. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 8 Командное окно делится на две зоны: зону просмотра и зону редактирования. Хотя курсор свободно перемещается в зоне просмотра, отредактировать ее невозможно. В зоне просмотра можно выделить любой фрагмент текста, скопировать в буфер обмена и вставить этот фрагмент в зону редактирования. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 9 Рабочее пространство – это специально зарезервированная область оперативной памяти, в которой хранится информация о переменных, вычисленных или введенных в текущем сеансе работы. Для каждой переменной отображается имя (колонка Name (Имя)), значение (колонка Value (Значение)) и тип представляемых данных (колонка Class (Тип данных)). Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 10 Окно истории команд хранит все команды, вводимые пользователем, но в нем нет сообщений системы и результатов вычислений. Перемещаться по списку команд можно с помощью клавиш управления курсором. Команды в этом списке можно редактировать. Щелкнув по строке с конкретной командой в окне истории команд, можно увидеть результаты ее выполнения. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 11 Главное меню Matlab занимает верхнюю строку рабочего окна и содержит пункты: File (Файл) Edit (Правка) View (Вид) Web (Интернет) Window (Окно) Help (Помощь) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 12 Панель инструментов Содержит кнопки: Создания и открытия файлов. Основные команды редактирования (Вырезать, Копировать, Вставить). Отмены и повтора последних выполненных действий. Вызова системы имитационного моделирования – расширения пакета Matlab (кнопка Simulink). Просмотра каталогов (Browse for Folder) и перехода по каталогам на один уровень вверх (Go up one level). Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 13 Основные объекты Система MatLab позволяет работать со следующими объектами: Числа действительные и комплексные Константы Системные переменные Пользовательские переменные Математические выражения Функции и операторы Комментарии Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 14 Лекция 2 Векторная алгебра. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 15 Цель лекции Научиться различными способами создавать вектора и матрицы Познакомится с основными векторно-матричными операциями Научится решать системы линейных уравнений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 16 Создание векторов и матриц Вектора и матрицы можно задать вручную: >> X = [1, 2, 4, 5, 0, -4, 5] X= 1 2 4 5 0 -4 5 >> M = [1, 3, 2, 4.5, 5; 3, 4, 6, 2, 4] M= 1.0000 3.0000 2.0000 4.5000 3.0000 4.0000 6.0000 2.0000 5.0000 4.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 17 Создание векторов и матриц В некотором случае вектора можно задать с помощью формулы: >> x = 0:0.5:4 x= 0 0.5000 >> y = 1:0.5:5 y= 1.0000 1.5000 >> M = [x; y] M= 0 0.5000 1.0000 1.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 2.0000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 18 Создание матриц Функции для создания матриц специального вида функция eye(). Функция создает единичную матрицу заданного размера; функция ones(). Создает матрицу заданного размера, все элементы которой равны единице; функция zeros(). Создает матрицу заданного размера, все элементы которой равны нулю; функция rand(). Создает матрицу заданного размера, значения элементов которой равномерно распределены в промежутке (0, 1). Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 19 Создание матриц Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 20 Операции над векторами Возможно: сложение/вычитание векторов, сложение/вычитание со скаляром, умножение/деление на скаляр. >> x = [1, 4, 2, 6, 3, 0, 4] x= 1 4 2 6 3 0 4 >> x+1 ans = 2 5 3 7 4 1 5 >> y = [0, 5, 2, 1, 6, 2, 1] y= 0 5 2 1 6 2 1 >> x+2*y ans = 1 14 6 8 15 4 6 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 21 Операции над векторами Специальные операции над векторами: cross(u,v) – векторное произведение векторов. dot(u,v) – скалярное произведение векторов. >> x = [1, 3, 5] x= 1 3 5 >> y = [2, 4, 6] y= 2 4 6 >> dot(x, y) ans = 44 >> cross(x, y) ans = -2 4 -2 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 22 Операции над матрицами Стандартные арифметические операции: + Сложение матриц или сложение со скаляром; Вычитание матриц или вычитание скаляра из элементов; * Умножение на скаляр; / Деление на скаляр. Функции работы с размерами матрицы: length(M) – количество элементов в векторе. size(M) – размеры матрицы, при выводе результата первым указывается число строк, вторым – число столбцов. ndims(M) – определение размерности переменной. mах(М) и min(M) – максимальное и минимальное значения элементов в векторе. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 23 Операции над матрицами Матричные операторы det() – определитель матрицы inv() – обратная матрица A матрица, A’ – транспонированная матрица Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 24 Операции над матрицами >> A = [1, 3, 2, 5; 0, 2, 3, 1; 1, 0, 5, 4; 2, 2, 3, 1] A= 1 3 2 5 0 2 3 1 1 0 5 4 2 2 3 1 >> det(A) ans = -110 >> inv(A) ans = 0 -0.5000 0 0.5000 0.1273 0.2545 -0.2364 0.0545 -0.1455 0.2091 0.1273 0.0091 0.1818 -0.1364 0.0909 -0.1364 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 25 Поэлементные операции Поэлементная операция умножения двух векторов дает вектор, где каждый элемент получен произведением соответствующих элементов исходных векторов. >> x x= 1 3 5 >> y y= 2 4 6 >> x.*y ans = 2 12 30 >> x.^2 ans = 1 9 25 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 26 Поэлементные операции К матрицам (и векторам) можно применять стандартные математические функции Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 27 Решение систем линейных уравнений Система MatLab позволяет легко решать системы линейных уравнений 5 x1 2 x2 3x4 10 3x 5 x 2 x 2 1 3 4 x1 3x2 2 x3 4 x4 1 5 x1 10 x2 2 x3 0 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 28 Решение систем линейных уравнений Главное записать систему в матричной форме 3 x1 5 - 2 0 10 3 0 5 2 x2 - 2 Ax b, ãäå A , b , x 1 3 2 4 x3 -1 x 5 10 2 0 0 4 Ответ легко получить применив формулу x = inv(A)*b' Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 29 Лекция 3 Работа с функциями. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 30 Цель лекции Научиться создавать различные функции Научится строить графики функций Научится решать уравнения различных типов Научиться решать системы нелинейных уравнений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 31 Создание функций С помощью функции inline, аргументом которой надо в апострофах задать выражение, задающее функцию одной или нескольких переменных. Пример: >> f = inline('2*x.^2 + 3*x - 2') f= Inline function: f(x) = 2*x.^2 + 3*x – 2 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 32 Создание функций В виде m-файлов. Имя M-файла и функции должно совпадать. М-файл-функция имеет следующие свойства: он начинается с объявления function, после которого указывается имя переменной var — выходного параметра, имя самой функции и список ее входных параметров; функция возвращает свое значение и может использоваться в виде name (Список_параметров) в математических выражениях; все переменные, имеющиеся в теле файла-функции, являются локальными; файл-функция является самостоятельным программным модулем; файл-функция служит средством расширения системы MATLAB; при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 33 Создание функций Надо создать новый M-файл, сохранить его под именем f.m в нашем рабочем пространстве. И в этом файле описать нужную нам функцию. %new function function y = f(x) y = 2*x.^2 + 3*x – 2 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 34 Построение графика функции Сначала необходимо задать интервал изменения аргумента х и шаг изменения, а затем использовать команду построения графиков plot(). Например: >> x = 0:0.01:4; >> plot(x,f(x)); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 35 Построение графика функции Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 36 Построение графика функции Например: нарисуем графики 3-х функций >> x = -4:0.01:4; >> f1 = sin(x); >> f2 = 2*cos(x); >> f3 = x.^2 - x; >> plot(x, f1, x, f2, x, f3); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 37 Табулирование функций. С постоянным шагом изменения аргумента Пример (с постоянным шагом изменения): >> x = 0:0.5:3; >> y = f(x); [x,y] ans = 0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 0 -0.0625 -2.0000 -3.5625 2.0000 25.9375 84.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 38 Табулирование функций. С произвольным набором значений аргумента. Пример (с произвольным набором значений): >> x(1) = 0; x(2) = 0.3; x(3) = 0.5; x(4) = 0.9; x(5) = 1.1; x(6) = 1.5; x(7) = 2; >> y = f(x); [x,y] ans = 0 0.3000 0.5000 0.9000 1.1000 1.5000 2.0000 0 0.1623 -0.0625 -1.5057 -2.4937 -3.5625 2.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 39 Решение уравнений fzero(@f, x) — возвращает значение х, при котором достигается нуль функции f(x). Возвращенное значение близко к точке, где функция меняет знак, или равно NaN, если такая точка не найдена; fzero(@f, [xl x2]) — возвращает значение х, при котором f(x)=0 с заданием интервала поиска с помощью вектора x=[xl х2], если это не так, выдается сообщение об ошибке. Вызов функции fzero с интервалом гарантирует, что fzero возвратит значение, близкое к точке, где f(x) изменяет знак; fzero(@f, x, tol) — возвращает результат с заданной погрешностью tol; Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 40 Решение уравнений Чтобы найти корни функции: Сначала опишем функцию как M-файл. Потом построим график функции, и посмотрим интервалы, где находятся корни функции. С помощью оператора fzero найдем все корни f(x). Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 41 Решение уравнений Сначала опишем M-файл function f = f(x) f = 3*x.^4 - 6*x.^3 + x Построим график функции >> x = -1:0.01:2; >> plot(x, f(x)); grid on Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 42 Решение уравнений Корни лежат в интервалах [-0.5 -0.2], [-0.2 0.2], [0.3 0.6], [1.5 2]. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 43 Решение уравнений >> x1 = fzero(@f, [-0.5 -0.2]); x1 x1 = -0.3747 >> x2 = fzero(@f, [-0.2 0.2]); x2 x2 = -5.3573e-024 >> x3 = fzero(@f, [0.3 0.6]); x3 x3 = 0.4662 >> x4 = fzero(@f, [1.5 2]); x4 x4 = 1.9085 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 44 Решение уравнений С помощью функции fsolve. >> y = fsolve(@f, -2:2); y y= -0.3747 -0.3747 0 0.4662 1.9085 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 45 Решение систем нелинейных уравнений. >> [x, y] = solve('x^2 + 2*y^2 + x*y = 4', 'x^2 - 2*x + 1 = 9') x= [ 4] [ 4] [ -2] [ -2] y= [ -1+i*5^(1/2)] [ -1-i*5^(1/2)] [ 0] [ 1] Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 46 Решение систем нелинейных уравнений. >> [x,y] = solve('sin(x+y)-exp(x)*y = 0', 'x^2-y = 2') x= -6.0173272500593065641097297117905 y= 34.208227234306296508646214438330 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 47 Решение систем нелинейных уравнений. >> [x, y] = solve('a*x^2 + 2*y^2 + x*y = 4', 'x^2 - 2*x + 1 = 9') x= [ -2] [ -2] [ 4] [ 4] y= [ 1/2+1/2*(9-8*a)^(1/2)] [ 1/2-1/2*(9-8*a)^(1/2)] [ -1+(3-8*a)^(1/2)] [ -1-(3-8*a)^(1/2)] Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 48 Лекция 4 Основы математического анализа. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 49 Цель лекции Научиться стандартным операциям математического анализа Научиться применять различные методы численного интегрирования функции Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 50 Символьные переменные S = sym(A) — возвращает символьный объект S класса sym для входного параметра А. ЕСЛИ А — строка, то будет получена символьная строка или символьная переменная, а если А — это число (скаляр) или матрица, то будут получены их символьные представления. х = sym('x') — возвращает символьную переменную с именем 'х' и записывает результат в х. х = sym ('х' , 'real' ) — возвращает символьную переменную вещественного типа, так что conj (x) эквивалентно х. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 51 Вывод выражений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 52 Вычисление предела функции. limit(f, x, a) — возвращает предел символьного выражения f при х → а; limit(f, а) — возвращает предел для независимой переменной; limit(f) — возвращает предел при а=0; limit(f, x, a, 'right') или limit(f, x, a, 'left') — возвращает предел в точке а справа или слева. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 53 Вычисление предела функции. >> syms a x; >> limit(sin(a*x)/x) ans = a >> limit(tan(x), x, pi/2, 'right') ans = -inf >> Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 54 Нахождение производной функции. >> syms x y >> diff(x^2) ans = 2*x >> diff(x^y, x) ans = x^y*y/x >> diff(cos(x*y), y, 2) ans = -cos(x*y)*x^2 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 55 Интегрирование функций. Для нахождения неопределенного интеграла в MATLAB используется функция int. int(S) — возвращает символьное значение неопределенного интеграла от символьного выражения или массива символьных выражений s. Если S — скаляр или матрица, то вычисляется интеграл по переменной 'х'. int(S, v) — возвращает неопределенный интеграл от S по переменной v. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 56 Интегрирование функций. >> syms x y >> z = inline('x^2 + 2*x*y +3*y^2 - 2*y'); >> int(z(x,y), x) ans = 1/3*x^3+x^2*y+3*y^2*x-2*x*y >> int((x^2 - 1)/(1 + x^2), x) ans = x-2*atan(x) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 57 Интегрирование функций. Для вычисления определенного интеграла тоже можно использовать функцию int. int(f, a, b) — возвращает определенный интеграл от f(x) с пределами интегрирования от а до b, причем пределы интегрирования могут быть как символьными, так и числовыми. int(f, x, a, b) — возвращает определенный интеграл от f(x) по переменной x с пределами от а до b. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 58 Интегрирование функций. >> syms x y >> int((x^2 - 1)/(1 + x^2), x, 0, 2) ans = 2-2*atan(2) >> z = inline('x^2 + 2*x*y +3*y^2 - 2*y'); >> int(z(x,y), x, 0, 5) ans = 125/3+15*y+15*y^2 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 59 Численное интегрирование два основных метода приближенного вычисления определенного интеграла: Метод трапеций; Метод Симпсона. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 60 Метод трапеций Для того чтобы приближенно вычислить интеграл с помощью метода трапеций, нужно использовать функцию trapz(): trapz(f(x)) — возвращает определенный интеграл. Если f — вектор, то trapz(f) возвращает интеграл элементов вектора f, если f — матрица, то trapz(f) возвращает векторстроку, содержащую интегралы каждого столбца этой матрицы; trapz(x,f(x)) — возвращает интеграл от функции f(x) по переменной x); trapz(...,dim) — возвращает интеграл по строкам или по столбцам для входной матрицы в зависимости от значения переменной dim. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 61 Метод трапеций >> syms x >> z = inline('x.^2 + 2*x +3'); >> x = 0:0.00001:2; >> trapz(x, z(x)) ans = 12.6667 >> x=0:0.0001:1; >> y = 1./(1 + x.^2); >> trapz(x, y) ans = 0.7854 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 62 Метод Симпсона Для того чтобы приближенно вычислить интеграл с помощью метода Симпсона, надо использовать функцию quad(): quad(@fun, a, b) — возвращает численное значение определенного интеграла от заданной функции @fun на отрезке [а b]; quad(@fun, a, b, tol) — возвращает численное значение определенного интеграла с заданной относительной погрешностью tol. По умолчанию tol=l.e-6; quad(@fun, a, b, tol, trace) — возвращает численное значение определенного интеграла и при значении trace, не равном нулю, строит график, показывающий ход вычисления интеграла; Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 63 Метод Симпсона >> z = inline('x.^2 + 2*x +3'); >> quad(z, 0, 1) ans = 4.3333 >> quad(@fnew, 0, 1) ans = -0.3736 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 64 Разложение функции в ряд Тейлора Для получения разложений аналитических функций в ряд Тейлора служит функция taylor(): taylor(f) — возвращает шесть членов ряда Маклорена.; taylor(f, n) — возвращает члены ряда Маклорена до (n-1)-ro порядка; taylor(f, а) — возвращает ряд Тейлора в окрестности точки а; taylor(f, x) — возвращает ряд Тейлора для переменной х. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 65 Разложение функции в ряд Тейлора >> syms x >> y = inline('sin(x)^2 + cos(x)'); >> taylor(y(x)) ans = +1/2*x^2-7/24*x^4 >> taylor(y(x), 8) ans = 1+1/2*x^2-7/24*x^4+31/720*x^6 >> taylor(fnew(x), 8) ans = -1+x+1/2*x^2-1/6*x^3+1/120*x^5-1/5040*x^7 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 66 Лекция 5 Дифференциальные уравнения. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 67 Цель лекции Научиться решать обыкновенные дифференциальные уравнения аналитически и численными методами Научиться решать системы дифференциальных уравнений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 68 Типы дифференциальных уравнений задачи Коши — для которых определены начальные условия на искомые функции, т. е. заданы значения этих функций в начальной точке интервала интегрирования уравнения; у'(t)=f(у(t),t). Задача Коши Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 69 Решение дифференциальных уравнений. >> dsolve('Df = 2*f + t') ans = -1/2*t-1/4+exp(2*t)*C1 >> dsolve('Dy = 2*y', 'y(0) = 1') ans = exp(2*t) >> dsolve('D2y = -a^2*y', 'y(0) = 1, Dy(pi/a) = 0') ans = cos(a*t) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 70 Численное решение дифференциальных уравнений. Ode45 – Методы Рунге-Кутта 4-5 порядка; ode23 — одношаговые явные методы Рунге-Кутта 2-го и 4-го порядка; ode113 — многошаговый метод Адамса-Башворта-Мултона переменного порядка. Это адаптивный метод, который может обеспечить высокую точность решения ode23tb — неявный метод Рунге-Кутта в начале решения и метод, использующий формулы обратного дифференцирования 2-го порядка в последующем ode15s — многошаговый метод переменного порядка, использующий формулы численного дифференцирования. Это адаптивный метод, его стоит применять, если решатель ode45 не обеспечивает решения; ode23s — одношаговый метод, использующий модифицированную формулу Розенброка 2-го порядка. Может обеспечить высокую скорость вычислений при низкой точности решения жесткой системы дифференциальных уравнений; ode23t — метод трапеций с интерполяцией. Этот метод дает хорошие результаты при решении задач, описывающих колебательные системы с почти гармоническим выходным сигналом; Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 71 Численное решение дифференциальных уравнений. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 72 Численное решение дифференциальных уравнений. сначала опишем в виде M-файла правую часть задачи Коши: function dydx = F(t, x) dydx = zeros(1,1) dydx(1) = 2*(t^2 + x(1)) После этого пишем в системе MATLAB следующую последовательность команд: >> [T X] = ode45(@F, [0 1], 1); [T X]‘ >> plot(T, X); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 73 Численное решение дифференциальных уравнений. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 74 Решение систем дифференциальных уравнений. >> [f g] = dsolve('Df = g, Dg = - f'); [f g]' ans = [ conj(cos(t)*C1+sin(t)*C2)] [ conj(-sin(t)*C1+cos(t)*C2)] >> S = dsolve('Df = f*g','Dg = -f + g','f(0) = 1','g(0) = 2'); >> S.f ans = 2*t+1 >> S.g ans = 1/(t+1/2) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 75 Численное методы решения систем дифференциальных уравнений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 76 Численное методы решения систем дифференциальных уравнений Опишем в виде M-файла функцию, представляющую из себя правую часть системы function dydt = fxy(t, y) dydt = zeros(2, 1); dydt(1) = 2*y(2); dydt(2) = 2*y(1) - y(2)^2; Применим любой способ решения системы уравнений и получим ответ: >> [T, Y] = ode45(@fxy, [0 1], [1 2]); >> plot(T, Y) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 77 Численное методы решения систем дифференциальных уравнений Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 78 Лекция 6 Решение задач оптимизации. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 79 Цель лекции Научиться находить локальные и глобальные минимумы функции Научиться решать задачи линейного программирования Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 80 Поиск минимума функции fminbnd(@fun, xl, x2) — возвращает значение х, которое является локальным минимумом функции fun(x) на интервале xl<x<x2; [x, fval] = fminbnd(@fun, xl, x2) — дополнительно возвращает значение целевой функции fval в точке минимума; [x, fval, exitflag] = fminbnd(@fun, xl, x2) — дополнительно возвращает параметр exitflag, равный 1, если функция сошлась с использованием options.tolX, и 0, если достигнуто максимальное число итераций options.maxiter. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 81 Поиск минимума функции >> f = inline('x.^2 - 3*x +5'); >> x = 0:0.01:2; >> plot(x, f(x)); >> x = fminbnd(f, 0, 2) x = 1.5000 >> [x fval] = fminbnd(f, 0, 2) x = 1.5000 fval = 2.7500 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 82 Поиск минимума функции Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 83 Минимизация функции нескольких переменных fminsearch(@fun, xO) — возвращает вектор х, который является локальным минимумом функции fun(x) вблизи хО.; [x, fval] = fminsearch(@fun, xO) — дополнительно возвращает значение целевой функции fval в точке минимума; [x, fval, exitflag] = fminsearch(@fun, xO) — дополнительно возвращает параметр exitflag, положительный, если процесс итераций сходится, отрицательный, если итерационный процесс не сходится к полученному решению х, и 0, если превышено максимальное число итераций Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 84 Минимизация функции нескольких переменных Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 85 Минимизация функции нескольких переменных Сначала построим график функции, чтобы проверить существует ли минимум на нужной нам области >> [X, Y] = meshgrid([-2:0.01:2, -2:0.1:2]); >> Z = X.^2 + 2*X*Y + Y.^2 -1; >> plot3(X, Y, Z); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 86 Минимизация функции нескольких переменных Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 87 Минимизация функции нескольких переменных Сначала опишем нашу функцию f(x, y) в виде M-файла. function xy = Fxy(x) xy = x(1)^2 + 2*x(1)*x(2) +x(2)^2 -1; Найдем значение минимума функции: >> xmin = fminsearch(@Fxy, [1; 1]) xmin = 1.4326 -1.4326 >> [xmin minf] = fminsearch(@Fxy, [1; 1]) xmin = 1.4326 -1.4326 minf = -1.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 88 Линейное программирование. Min f(x) при ограничениях A*x < b; Aeq*x = beq; Lb < х < Ub, где х — вектор оптимизируемых параметров, f(x) — линейная целевая функция (критерий) векторного аргумента. A, Aeq – некоторые матрицы, которые отвечают за условия на аргумент x, b beq – соответствующие вектора, Lb и Ub – вектора размерности n, описывающие область в которой проводится минимизация целевой функции. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 89 Линейное программирование. f ( x) 2 x1 3x2 4 x3 x4 2 x1 x2 x3 x4 10 x1 2 x2 2 x3 x 4 5 3 x1 2 x 2 3 x3 x4 20 x1 0 , x 2 0 , x3 0 , x4 0 , Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 90 Линейное программирование. Опишем все необходимые матрицы и вектора: >> f = [2 3 -4 1]; >> A = [2 1 1 1; 1 2 2 -1]; >> b = [10 5]; >> Aeq = [3 2 3 1]; >> beq = [20]; >> lb = zeros(4, 1); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 91 Линейное программирование. Решим задачу линейного программирования >> [xmin fval] = linprog(f, A, b, Aeq, beq, lb) Optimization terminated successfully. xmin = 0.0000 0.0000 5.0000 5.0000 fval = -15.0000 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 92 Лекция 7 Статистические методы обработки экспериментальных данных в MathCad. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 93 Цель лекции Познакомиться со способами статистической обработки данных Познакомится с понятием интерполяции и экстраполяции данных Познакомится с понятием регрессии Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 94 Анализ данных Для заданной последовательности данных можно найти следующие характеристики: min(D) – минимум; max(D) – максимум; mean(D) – среднее; median(D) – медиана; prod(D) – произведение элементов; sum(D) – сумма элементов; std(D) – стандартное отклонение. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 95 Анализ данных >> x = [0.1, 0.4, 1, 0, 0.3, 0.9, 0.75, 0.9] x = 0.1000 0.4000 1.0000 0 0.3000 0.9000 0.7500 0.9000 >> mean(x) ans = 0.5438 >> sum(x) ans = 4.3500 >> std(x) ans = 0.3923 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 96 Корреляция данных Коэффициент корреляции данных показывает, насколько две последовательности данных связаны друг с другом. Если коэффициент корреляции близок к единице, то две последовательности данных тесно связаны, если коэффициент близок к нулю то последовательности независимы друг от друга. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 97 Корреляция данных >> x = [0.1, 0.4, 1, 0, 0.3, 0.9, 0.75, 0.9] x = 0.1000 0.4000 1.0000 0 0.3000 0.9000 0.7500 0.9000 >> y = 2*x y = 0.2000 0.8000 2.0000 0 0.6000 1.8000 1.5000 1.8000 >> corrcoef([x y]) ans = 1 >> corrcoef(x, y) ans = 1 1 1 1 Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 98 Функции случайного распределения betapdf - бета-распределение; binopdf – биномиальное распределение; chi2pdf – распределение хи-квадрат; Fpdf – распределение Фишера; poisspdf – распределение Пуассона; Tpdf – распределение Стьюдента. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 99 Функции случайного распределения С каждым законом распределения связаны: плотность распределения вероятностей или функция плотности вероятности — f(x); интегральная функция распределения F(x); функция, обратная к интегральной функции распределения, F'(х); генерация случайных чисел; среднее значение и дисперсия как функции параметров распределения; функции оценки параметров закона распределения. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 100 Аппроксимация данных. Интерполяция – это приближенное вычисление значения функции в промежутках между узловыми точками. Экстраполяция – это приближенное вычисление значения функции за пределами узловых точек. При экстраполяции используются отрезки прямых, проведенные через две крайние точки. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 101 Функции интерполяции interp1(VX, VY, X1, ‘способ интерполяции’) где VX, VY – значения аргумента и функции соответственно, X1 – координаты абсцисс промежуточных точек. Способ интерполирования: ‘nearest‘— приближение по соседним элементам; ‘linear‘ — линейная интерполяция (применяется по умолчанию, если способ интерполирования не задан); ‘spline‘ —интерполяция кубическими сплайнами; ‘рсhip‘ — интерполяция кубическими эрмитовыми сплайнами. spline(VX, VY, X!) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 102 Аппроксимация данных. >> x = 0:0.1:1; >> y = [2.3, 2.6, 2.8, 3, 2.9, 2.6, 2.7, 3.1, 3.5, 3.2, 3.7]; >> xt = 0:0.02:1; >> yi = spline(x, y, xt); >> plot(x, y, xt, yi); >> legend('tochki', 'spline'); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 103 Аппроксимация данных. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 104 Регрессия данных Регрессия, или сглаживание, – аппроксимирующая функция должна сглаживать (усреднять) опытные данные. Сглаживание с фильтрацией данных. Экспериментальные данные могут быть искажены большими случайными ошибками. В процессе сглаживания из исходного набора данных получается новый набор данных, более гладкий, чем исходный. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 105 Функции регрессии lsqnonlin(fun, x0, lb, ub) – нелинейная регрессия polyfit(x0, y0, n) – полиномиальная регрессия (выдает полином степени n) csaps(X, Y, p) – кубический сглаживающий сплайн. p – параметр сглаживания (p=1 – кубический сплайн, p=0 – прямая, построенная по методу наименьших квадратов) Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 106 Функции регрессии >> yp = polyfit(x, y, 7) yp = 1.2663 -4.0833 5.0482 -2.9936 0.0089 0.0023 0.8767 -0.1219 >> f = polyval(yp, xt); >> plot(x, y, xt, f); >> legend('tochki', 'regressia'); Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 107 Функции регрессии Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 108 Лекция 8 Создание готового документа средствами Matlab Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 109 Цель лекции познакомиться со способами представления результатов вычислений иметь представление о файлах-сценариях и файлах-функциях иметь представление о средствах визуализации вычислений познакомиться со способами создания публикаций Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 110 Для этого можно использовать публикации или интерфейсы М-книг M-книга – это документ Word со встроенным исполняемым кодом Matlab, который запускается как макрос через Visual Basic. Публикации – это преобразованные в формат html, документ Word или презентацию PowerPoint M-файлы. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 111 M-файл – это обычный текстовый файл, содержащий команды Matlab Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 112 Встроенный редактор M-файлов Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 113 M-файл-сценарий содержит последовательность команд для запуска в определенном порядке Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 114 Включение панели управления ячейками Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 115 Пример сценария Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 116 Выполнение сценария Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 117 M-файлы-функции позволяют задать список аргументов, чего нельзя делать в сценариях. При этом имя файла, в котором сохраняется функция, должно совпадать с именем функции. Первая строка файла имеет вид: function [список вывода] = имя функции(список аргументов) И входные параметры, и возвращаемые значения могут быть в общем виде массивами различных типов, размерностей и размеров. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 118 Пример функции Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 119 Графические объекты создаются в специальных графических окнах, имеющих заголовок номер окна. По умолчанию графики строятся в графическом окне Figure 1. Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 120 Построить функцию, зависящую от одной переменной, можно, используя функцию ezplot Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 121 Построить график на векторах числовых данных можно с помощью функции plot Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 122 С помощью функции plot можно построить в одном графическом окне несколько кривых. Для каждой кривой нужно указать вектор аргумента Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 123 Можно создавать окна с несколькими областями, используя для этого функцию subplot Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 124 Панель инструментов графических окон Информатика. Модуль 4. Автоматизация инженерных расчетов. Математическое моделирование. MatLab. 125