
ОММ-.ppt Мат лаб!!
- Количество слайдов: 88
«Основы математического моделирования» 1. Половко А. М. , Бутусов П. Н. MATLAB для студентов. – СПб. : БХВПетербург, 2005. – 320 с. 2. Дьяконов В. П. MATLAB 6: учебный курс. – СПб. : Питер, 2001. – 592 с. 3. Дьяконов В. П. , Круглов В. Математические пакеты расширения MATLAB. Специальный справочник. 4. Дьяконов В. П. MATLAB 6. 5 SP 1/7. 0 + Simulink 5/6. Основы применения. Серия «Библиотека профессионала» . – М. : СОЛОН. Пресс, 2005. – 800 с. 5. Дьяконов В. П. MATLAB 6. 5 SP 1/7 + Simulink 5/6 R в математике и моделировании. Серия Библиотека профессионала. – М. : СОЛОН-Пресс, 2005. – 576 с. 6. Потемкин В. Г. Система инженерных и научных расчетов MATLAB 5. х: в 2 -х т. 7. Чен К. , Джиблин П. Ирвинr А. МAТLAВ в математических исследованиях: Пер. с анrл. – М. : Мир, 2001. – 346 c. 8. Ануфриев И. Е. , Смирнов А. Б. , Смирнова Е. Н. MATLAB 7. – СПб. : БХВ-Петербург, 2005. – 1104 с.
Интернет-ресурсы http: //matlab. tutornet. ru/ - Физика и Matlab. Интерактивные задачи по курсу классической электродинамики с использованием Matlab Web Server. Справочная информация по системе Matlab. Разработка физического факультета Новосибирского государственного университета. http: //www. adubanov. narod. ru/ - Решение геометрических задач в среде Matlab. http: //matlab. exponenta. ru - Консультационный Центр Matlab. http: //matlab. exponenta. ru/forum - форум пользователей системы Matlab. http: //matlab. exponenta. ru/mltb/ - авторские материалы по Matlab Toolboxes. http: //mathmod. narod. ru - Виртуальная лаборатория математического моделирования. http: //www. mathtools. net - научный портал, поддерживаемый Math. Works. http: //users. kaluga. ru/webpublic/matlab/ - MATLAB — интерпретатор, который может работать, И. В. Белопольский. http: //users. kaluga. ru/math/ - сайт "Компьютерная математика", обзор основных математических пакетов. http: //www. math. rsu. ru/mexmat/kvm/MME/courses/prog/ - программное обеспечение научных исследований (пакеты Maple и Mat. Lab). Лекции и индивидуальные исследовательские проекты. http: //www. mathworks. com/products/demos/ - Matlab Demos.
Введение В начале 90 -х гг. на смену универсальным языкам программирования пришли специализированные системы компьютерной математики (СКМ). Среди них наибольшую известность получили системы Eureka, Mercury, Mathcad, Derive, Mathematica 2/3/4, Maple V R 3/R 4/R 5 и Maple 6 и др. MATLAB представляет собой хорошо апробированную и надежную СКМ, рассчитанную на решение самого широкого круга математических задач с представлением данных в универсальной матричной форме, предложенной фирмой Math Works, Inc. Популярности системы способствует ее мощное расширение Simulink, предоставляющее удобные и простые средства, в том числе визуальное объектно-ориентированное программирование, для моделирования линейных и нелинейных динамических систем, а также множество других пакетов расширения системы. MATLAB — одна из старейших, тщательно проработанных и проверенных временем систем автоматизации математических расчетов, построенная на расширенном представлении и применении матричных операций. Это нашло отражение в названии системы — MATrix LABoratory — матричная лаборатория. В настоящее время система MATLAB далеко вышла за пределы специализированной матричной системы и стала одной из наиболее мощных универсальных интегрированных СКМ. Слово «интегрированная» указывает на то, что в этой системе объединены удобная оболочка, редактор выражений и текстовых комментариев, вычислитель и графический программный процессор. В новой версии используются такие мощные типы данных, как многомерные массивы, массивы ячеек, массивы структур, массивы Java и разреженные матрицы, что открывает возможности применения системы при создании и отладке новых алгоритмов матричных и основанных на них параллельных вычислений и крупных баз данных.
1. История становления системы MATLAB Система MATLAB была разработана Молером (С. В. Moler) и с конца 70 -х гг. широко использовалась на больших ЭВМ. В начале 80 -х гг. Джон Литл (John Little) из фирмы Math. Works, Inc. разработал версии системы PC MATLAB для компьютеров класса IBM PC, VAX и Macintosh. В дальнейшем были созданы версии для рабочих станций Sun, компьютеров с операционной системой UNIX и многих других типов больших и малых ЭВМ. Сейчас свыше десятка популярных компьютерных платформ могут работать с системой MATLAB. К расширению системы были привлечены крупнейшие научные школы мира в области математики, программирования и естествознания. Одной из основных задач системы было предоставление пользователям мощного языка программирования, ориентированного на математические расчеты и способного превзойти возможности традиционных языков программирования, которые многие годы использовались для реализации численных методов. При этом особое внимание уделялось как повышению скорости вычислений, так и адаптации системы к решению самых разнообразных задач пользователей.
Введение в Mat. Lab Возможности MATLAB весьма обширны, а по скорости выполнения задач система нередко превосходит своих конкурентов. Она применима для расчетов практически в любой области науки и техники - при математическом моделировании различного рода устройств и процессов и систем в области механики, гидродинамике, аэродинамике, акустике, энергетике, телекоммуникаций и т. д. Этому способствует не только расширенный набор матричных и иных операций и функций, но и наличие пакетов расширения Toolbox и Simulink, специально предназначенных для решения задач блочного моделирования динамических систем и устройств, решения задач оптимизации, идентификации, обработки изображений и др. Некоторые из них, например Notebook (интеграция с текстовым процессором Word и подготовка «живых» электронных книг), Symbolic Math и Extended Symbolic Math (символьные вычисления с применением ядра системы Maple V R 5) и Simulink (моделирование динамических систем и устройств, заданных в виде системы блоков), настолько органично интегрировались с системой MATLAB, что стали ее составными частями.
2. Возможности прежних версий MATLAB х. x Уже первые ориентированные на Microsoft Windows версии системы (MATLAB 4. x) обладали мощными средствами. В области математических вычислений: v матричные, векторные, логические операторы; v элементарные и специальные функции; v полиномиальная арифметика; v многомерные массивы; v массивы записей; v массивы ячеек. В области реализации численных методов: v дифференциальные уравнения; v вычисление одномерных и двумерных квадратур; v поиск корней нелинейных алгебраических уравнений; v оптимизация функций нескольких переменных; v одномерная и многомерная интерполяция.
Возможности прежних версий MATLAB 4. x В области программирования: v свыше 500 встроенных математических функций; v ввод/вывод двоичных и текстовых файлов; v применение программ, написанных на Си и ФОРТРАН; v автоматическая перекодировка процедур MATLAB в тексты программ на языках Си и C++; v типовые управляющие структуры. В области визуализации и графики: v возможность создания двумерных и трехмерных графиков; v осуществление визуального анализа данных. Эти средства сочетались с открытой архитектурой систем, позволяющей изменять уже существующие функции и добавлять свои собственные. Входящая в состав MATLAB программа Simulink дает возможность имитировать реальные системы и устройства, задавая их моделями, составленными из функциональных блоков. Simulink имеет обширную и расширяемую пользователями библиотеку блоков и простые средства задания и изменения их параметров.
Возможности прежних версий MATLAB 5. x В версиях системы MATLAB 5. x введены новые мощные средства. Улучшенная среда программирования: v профилировщик m-файлов для оценки времени исполнения фрагментов программ; v редактор/отладчик m-файлов с удобным графическим интерфейсом; v объектно-ориентированное программирование, включая переназначение функций и операторов; v средства просмотра содержимого рабочей области и путей доступа; v конвертирование m-файлов функций в промежуточный р-код. Графический интерфейс пользователя (GUI - Graphic User Interface): v интерактивное средство построения графического интерфейса пользователя — GUI; v форма диалоговых панелей и панелей сообщений; v многострочный режим редактирования текста; запоминание последовательности графических элементов управления; v расширение параметров элементов управления; v свойство переносимости между платформами; v курсор, определяемый пользователем.
Возможности прежних версий MATLAB 5. x Новые типы данных: v массивы структур (записей); v массивы ячеек данных разного типа; v массивы символов с 16 -разрядной кодировкой; v массивы с 8 -разрядной кодировкой элементов. Средства программирования: v списки аргументов переменной длины; v переназначение функций и операторов; v применение локальных функций в m-файлах; v оператор-переключатель switch. . . case. . . end; v оператор wait for; v функции обработки битов. Математические вычисления и анализ данных: v пять новых численных методов решения (solver) обыкновенных дифференциальных уравнений (ОДУ); v вычисление собственных значений и сингулярных чисел для матриц разреженной структуры; v многомерная интерполяция; v анализ и обработка многомерных массивов; v функции обработки времени и даты.
Возможности прежних версий MATLAB 5. x Презентационная графика и звук: v двойные х- и y-оси; v легенда — пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него; v управление шрифтом текстовых объектов; v надстрочные, подстрочные и греческие символы; v трехмерные диаграммы, поля направлений, ленточные и стержневые графики; v увеличенное количество стилей для маркировки линий; v 16 -битный стереозвук. Версия MATLAB 5. 3. 1 (выпуск 11. 1) интегрирует в своем составе 42 программных продукта, среди которых основу составляют базовая система MATLAB и новая реализация пакета расширения Simulink 3. 1. В систему введен ряд новых компонентов, включая следующие: ü Data Analysis, Visualization and Application Development — анализ данных, их визуализация и применение; ü Control Design — проектирование устройств управления; ü DSP and Communications System Design — проектирование коммуникационных систем и систем цифровой обработки сигналов.
Новые возможности MATLAB 6 Ø Ø Ø Ø Ø доведенное до более чем 600 число встроенных функций и команд; новый интерфейс с набором инструментов для управления средой, включающий в себя окно команд (Command Window), окно истории команд (Command History), браузер рабочей области (Workspace Browser) и редактор массивов (Array Editor); новые инструменты, позволяющие при помощи мыши интерактивно редактировать и форматировать графики, оптимизировать их коды и затраты памяти на графические команды и атрибуты; новая библиотека FFTW (быстрых преобразований Фурье) Массачусетского технологического института Кембриджского университета (США); ускоренные методы интегральных преобразований; новые, более мощные и точные, алгоритмы интегрирования дифференциальных уравнений и квадратур; новые современные функции визуализации: вывод на экран двумерных изображений, поверхностей и объемных фигур в виде прозрачных объектов; новые, современные инструменты проектирования графического пользовательского интерфейса; новый интерфейс (последовательный порт) для обмена данными с внешним оборудованием из MATLAB; существенно обновленные пакеты расширения, в частности новые версии пакета моделирования динамических систем Simulink 4 и Real Time Workshop 4.
3. Интерфейсы графических окон.
Типы оконных интерфейсов 1. Меню используемых разделов текущей папки файловой системы – окно «Current Directory» ; 2. Окно с вкладками «Launch Path» (Доступ к частям системы) и «Workspace» (Рабочая область); 3. Окно с вкладками «Command History» (Обзор ранее исполненных команд); 4. Окно «Command Window» - для ввода команд и вывода результатов расчета.
4. Справочная система MATLAB
Начиная с версии MATLAB 4. 0, впервые ориентированной на Windows, графические средства системы MATLAB были существенно улучшены. Основные отличительные черты графики в новой версии MATLAB 6: n существенно улучшенный интерфейс графических окон; n возможность создания графики в отдельных окнах и вывода нескольких графических окон; n задание различных координатных систем и осей; n высокое качество графики и широкие возможности использования цвета; n легкость установки графических признаков — атрибутов; n обилие параметров команд графики; n возможность получения естественно выглядящих трехмерных фигур и их сочетаний; n простота построения трехмерных графиков с их проекцией на плоскость; n возможность построения сечений трехмерных фигур и поверхностей плоскостями; n функциональная многоцветная и полутоновая окраска; n возможность создания анимационной графики; n возможность создания объектов для типового интерфейса пользователя.
1. Построение графика функций одной переменной Синтаксис команды plot(Y) plot(X 1, Y 1, . . . ) plot(X 1, Y 1, Line. Spec, . . . ) Пример clear all x=-10: 0. 1: 10; y=sin(x); plot(x, y)
Примеры построения графика функций одной переменной Пример 2 x=-10: 0. 1: 10; y=tan(x); plot(x, y) Пример 3 clear all x=-10: 0. 1: 10; y=atan(x); plot(x, y)
Функция fplot Пример 4 clear all fplot('sin', [-pi, pi])
Построение в одном окне графиков нескольких функций Пример 5 clear all x=-10: 0. 1: 10; y 1=sin(x)+1; y 2=sin(x); y 3=cos(x); plot(x, y 1, x, y 2, x, y 3)
Построение в одном окне графиков нескольких функций Синтаксис команд subplot(m, n, p) Пример 6 clear all; x=-10: 0. 1: 10; y 1=sin(x)+1; y 2=tan(x); y 3=atan(x); subplot(3, 2, 1); plot(x, y 1); subplot(3, 2, 4); plot(x, y 2); subplot(3, 2, 5); plot(x, y 3);
Форматирование графиков Названия осей xlabel, ylabel Синтаксис команд xlabel('string') Пример 7 clear all x=-10: 0. 1: 10; y=sin(x)+1; plot(x, y) xlabel('matlab') ylabel('matcad')
Форматирование графиков Название рисунка Синтаксис команды title('string') Пример 8 clear all x=-10: 0. 1: 10; y=sin(x)+1; plot(x, y) xlabel('matlab') ylabel('matcad') title('graf')
Форматирование графиков Названия отдельных графиков Синтаксис команды legend('string 1', 'string 2', . . . ) Пример 9 clear all x=-10: 0. 1: 10; y 1=sin(x)+1; y 2=sin(x); y 3=cos(x); xlabel('matlab') ylabel('matcad') title('graf') plot(x, y 1, x, y 2, x, y 3) legend('sin(x)+1', 'sin(x)', 'cos(x)')
2. Столбцовые диаграммы В прикладных расчетах часто встречаются графики, именуемые столбцовыми диаграммами, отражающие содержание некоторого вектора X. При этом каждый элемент вектора представляется столбцом, высота которого пропорциональна значению элемента. Столбцы нумеруются и масштабируются по отношению к максимальному значению наиболее высокого столбца. Выполняет построение такого графика команда bar(X). Столбцовые диаграммы — лишь один из многих типов графиков, которые может строить система MATLAB.
Команды построения столбцовых диаграмм Основные команды bar, barh Синтаксис команд bar(Y) bar(x, Y) bar(. . . , width) Пример 10 clear all; x = -2. 9: 0. 2: 2. 9; bar(x, exp(-x. *x))
Команды построения столбцовых диаграмм Пример 11 clear all; x = -2. 9: 0. 2: 2. 9; barh(x, exp(-x. *x))
Команды построения трехмерных столбцовых диаграмм Синтаксис команд bar 3, barh 3 Пример 12 clear all; Y = [5 2 1 8 7 3 9 8 6 5 5 5 4 3 2]; bar 3(Y)
3. Построение трехмерных графиков Синтаксис команд mesh, meshz, meshс mesh(X, Y, Z) mesh(. . . , C) (X – вектор (1: n); Y - вектор (1: m), тогда [m, n] = размерность матрицы Z
Примеры построения трехмерных графиков Пример 13 clear all; [X, Y] = meshgrid(-3: . 125: 3); Z = peaks(X, Y); meshc(X, Y, Z);
Примеры построения трехмерных графиков Пример 14 clear all; [X, Y]=meshgrid(-5: 0. 1: 5); Z=X. *sin(X+Y); mesh(X, Y, Z)
Построение гистограмм n n n Классическая гистограмма характеризует числа попаданий значений элементов вектора Y в М интервалов с представлением этих чисел в виде столбцовой диаграммы. Для получения данных для гистограммы служит функция hist, записываемая в следующем виде: N=hist(Y) — возвращает вектор чисел попаданий для 10 интервалов, выбираемых автоматически. Если Y — матрица, то выдается массив данных о числе попаданий для каждого из ее столбцов; N=hist(Y, M) — аналогична вышерассмотренной, но используется М интервалов (М — скаляр); N=hist(Y. X) — возвращает числа попаданий элементов вектора Y в интервалы, центры которых заданы элементами вектора X; [N, X]=HIST(. . . ) — возвращает числа попаданий в интервалы и данные о центрах интервалов.
Построение гистограмм n n n n Команда hist(. . . ) с синтаксисом, аналогичным приведенному выше, строит график гистограммы. В следующем примере строится гистограмма для 1000 случайных чисел и выводится вектор с данными о числах их попаданий в интервалы, заданные вектором х: » х=-3: 0. 2: 3; » y=randn(1000, 1); » hist(y, x) » h=hist(y. x) h = Columns 1 through 12 0 0 3 7 8 9 11 23 33 43 57 55 Columns 13 through 24 70 62 83 87 93 68 70 65 41 35 27 21 Columns 25 through 31 12 5 6 3 2 1 0
Формирование массива элементов, распределенных по нормальному закону. Синтаксис: n n n n X = randn(n)randn. X = randn(m, n)randn(‘seed’)X = randn(size(A))randn(‘seed’, x 0)Описание: Функция X = randn(n) формирует массив размера n х n, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1. Функция X = randn(m, n) формирует массив размера m х n, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1. Функция X = randn(size(A)) формирует массив соразмерный с матрицей A, элементами которого являются случайные величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1. Команда randn без аргументов формирует одно случайное число, распределенное по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1, которое изменяется при каждом последующем вызове. Команда randn(‘seed’) возвращает текущее значение базы (начального значения) генератора нормально распределенных случайных чисел. Команда randn(‘seed’, x 0) присваивает базе (начальному значению) генератора случайных чисел значение x 0. Алгоритм: Алгоритм генерации нормально распределенных случайных чисел использует для формирования несколько значений равномерно распределенных случайных чисел, которые обрабатываются в соответствии с алгоритмом, описанным в работе [1]. Примеры: Обращение к генератору нормально распределенных случайных чисел реализуется следующим образом X = randn(3, 4) X = -0. 43260. 28771. 18920. 1746 -1. 6656 -1. 1465 -0. 0376 -0. 18670. 12531. 19090. 32730. 7258 Этот результат может оказаться иным и зависит от версии системы и предыстории сеанса работы. Сопутствующие функции: RAND. Ссылки: 1. Forsythe G. E. , Malcolm M. A. , Moler C. B. Computer Methods for Mathematical Computations. Prentice-Hall, 1977.
Построенная гистограмма показана на рисунке n Нетрудно заметить, что распределение случайных чисел близко к нормальному закону. Увеличив их количество, можно наблюдать еще большее соответствие этому закону.
1. Минимизация функции одной переменной Важная задача численных методов — поиск минимума функции f(x) в некотором интервале изменения х — от х 1 до х 2. Если нужно найти максимум такой функции, то достаточно поставить знак «минус» перед функцией. Для решения этой задачи используется следующая функция: [x, fval] = fminbnd(@myfun, x 1, x 2) - возвращает значение х, которое является локальным минимумом функции myfun(x) на интервале x 1
Пример № 1 Необходимо найти минимум функции f(x)=x 3 -2 x-5 на интервале от 0 до 2 % optim. m clear all; fplot('fun 1', [0, 2]); grid on; title('fun 1'); xlabel('x'); ylabel('f(x)'); [x, fval]=fminbnd(@fun 1, 0, 2) % fun 1. m function f = fun 1(x) f=x^3 -2*x-5 Решение: x=0. 8165; fval=-6. 0887
1. Минимизация функции одной переменной Основные команды поиска локального минимума функции: [x, fval] = fminsearch(@myfun, x 0) [x, fval] = fminunc(@myfun, x 0) где x 0 - начальная точка поиска; myfun – в общем случае нелинейная функция.
Пример № 2 Необходимо найти минимум функции f(x)=arctg(x 3 -2 x-5) на интервале от -2 до 2 clear all; fplot('fun 2', [-2, 2]); grid on; title('fun 2'); xlabel('x'); ylabel('f(x)'); [x, fval]=fminunc(@fun 2, 0) Решение: x=0. 8165; fval=-1. 4080 [x, fval]=fminunc(@fun 2, -1) Решение: x =-2; fval=-1. 5708
2. Минимизация функции нескольких переменных без ограничений Основные команды поиска локального минимума функции: [x, fval] = fminsearch(@myfun, x 0) [x, fval] = fminunc(@myfun, x 0), где x – вектор.
Пример № 3 Необходимо найти минимум функции f(x)= 3 X 2 + 2 XY + Y 2+5 вблизи точки [-20, 20] % optim. m clear all; x 0 = [20, 20]; [x, fval] = fminunc(@fun 3, x 0) % fun 3. m function f = fun 3(x) f = 3*x(1)^2 + 2*x(1)*x(2) + x(2)^2+5;
Пример № 4 (постановка задачи) Найти такое х, что является минимумом от при условии, что
1. Общая постановка задачи поиска оптимума функции нескольких переменных с ограничениями Общий вид постановки оптимизационной задачи: Обеспечить минимум (максимум) целевой функции – y=f(x), где x – векторный аргумент; с выполнением ограничений в форме равенств g(x)=0; в форме неравенств h(x)<=0.
2. Решение оптимизационных задач методами линейного программирования где f, x, b, beq, lb и ub – векторы, A и Aeq - матрицы. [x, fval] = linprog(f, A, b, Aeq, beq, lb, ub, x 0) где x 0 – начальная точка поиска.
Пример № 1 (постановка задачи) Найти такое х, что является минимумом от при условии, что
Пример № 1 (решение) 1. Формируем вектора и матрицы f = [-5; -4; -6] A = [1 -1 1 3 2 4 3 2 0]; b = [20; 42; 30]; lb = zeros(3, 1); 2. Вызываем программу решения задачи линейного программирования [x, fval] = linprog(f, A, b, [], lb); x = 0. 0000 15. 0000 3. 0000 fval=-78
Сетевой пример: поиск кратчайшего пути в сети (протокол RIP v 1) Дано: ü количество трактов передачи в сети - n; ü количество узлов в сети - m; ü узел-отправитель пакетов; ü узел-получатель пакетов; ü пропускные способности трактов передачи (ТП). Необходимо определить: ü единственный путь от узла-отправителя к узлуполучателю, который проходит по трактам передачи ТКС и является "кратчайшим" в метрике числа переприемов;
Пример:
Текст программы в окне редактирования М-fіle Edіtor
Результаты расчетов в окне команд "Comand Wіndow"
Результат решения задачи
3. Решение задач булевого программирования (Mat. Lab v 7) Решение задачи булевого программирования вида при условии где f, b и beq являются векторами, A и Aeq - матрицы, а x есть булевый вектор решения, то есть его компоненты должны принимать значения 0 или 1. x = bintprog(f, A, b, Aeq, beq, x 0)
Пример № 2 Необходимо минимизировать функцию при наличии ограничений где x 1, x 2, x 3 и x 4 являются бинарными целыми. Выполним следующие команды: f = [-9; -5; -6; -4]; A = [6 3 5 2; 0 0 1 1; -1 0 1 0; 0 -1 0 1]; b = [9; 1; 0; 0]; x = bintprog(f, A, b) x = 1 1 0 0
4. Решение задач квадратичного программирования x = quadprog(H, f, A, b) возвращает вектор х, который минимизирует 1/2*x'*H*x + f'*x при условии A*x <= b. x = quadprog(H, f, A, b, Aeq, beq) решает указанную выше задачу с дополнительным выполнением ограничений типа равенства Aeq*x = beq. x = quadprog(H, f, A, b, Aeq, beq, lb, ub) определяет набор нижних и верхних границ для проектируемой переменной х, так что бы решение находилось в диапазоне lb <= x <= ub. x = quadprog(H, f, A, b, Aeq, beq, lb, ub, x 0) устанавливает стартовую точку как x 0.
Пример № 3 Найти значения х, которые минимизируют при условии, что Сперва отметим, что данная задача в матичной записи будет сформулирована как где Введем эти коэффициенты матриц Далее запустим программу квадратичного программирования. Что генерирует решение x =0. 6667 1. 3333 fval = -8. 2222
5. Решение задач нелинейного программирования [x, fval]=fmincon(@myfun, x 0, A, b, Aeq, beq, lb, ub, @mycon); 1. Начинает с точки x 0 и находит минимум от х для функции представленной как myfun при условии выполнения линейных неравенств A*x <= b, а так же Aeq*x = beq в диапазоне lb <= x <= ub. 2. Подчиняет минимизацию определенных в mycon fmincon нелинейных неравенств c(x) или равенств ceq(x) такому оптимуму, что c(x) <= 0 и ceq(x) = 0. 3. Устанавливается lb=[] и/илиr ub=[] в случае отсутствия ограничений. Устанавливается Aeq=[] and beq=[] в случае отсутствия равенств. Устанавливается A=[] и b=[] в случае отсутствия неравенств. x 0 может быть скаляром, вектором или матрицей.
1. Основные средства программирования Программами в системе MATLAB являются mфайлы текстового формата, содержащие запись программ в виде программных кодов. Язык программирования системы MATLAB имеет следующие средства: v данные различного типа; v константы и переменные; v операторы, включая операторы математических выражений; v встроенные команды и функции; v функции пользователя; v управляющие структуры; v системные операторы и функции; v средства расширения языка.
Основные средства программирования Коды программ в системе MATLAB пишутся на языке высокого уровня, достаточно понятном для пользователей умеренной квалификации в области программирования. Язык программирования MATLAB является типичным интерпретатором. Это означает, что каждая инструкция программы распознается и тут же исполняется, что облегчает обеспечение диалогового режима общения с системой. Этап компиляции всех инструкций, т. е. полной программы, отсутствует. Высокая скорость выполнения программ обеспечена наличием заведомо откомпилированного ядра, хранящего в себе критичные к скорости выполнения инструкции, такие как базовые математические и иные функции, а также тщательной отработкой системы контроля синтаксиса программ в режиме интерпретации. Интерпретация означает, что MATLAB не создает исполняемых конечных программ. Они существуют лишь в виде m-файлов. Для выполнения программ необходима среда MATLAB. Однако для программ на языке MATLAB созданы компиляторы, транслирующие программы MATLAB в коды языков программирования С и C++. Это решает задачу создания исполняемых программ, первоначально разрабатываемых в среде MATLAB.
2. Основные типы данных Типы данных array и numeric являются виртуальными ( «кажущимися» ), поскольку к ним нельзя отнести какие-либо переменные. Они служат для определения и комплектования некоторых типов данных. Таким образом, в MATLAB определены следующие основные типы данных, в общем случае представляющих собой многомерные массивы: single — числовые массивы с числами одинарной точности; double — числовые массивы с числами удвоенной точности; char — строчные массивы с элементами-символами; sparse — наследует свойства double, разреженные матрицы с элементамичислами удвоенной точности; сеll — массивы ячеек; ячейки, в свою очередь, тоже могут быть массивами; struct — массивы структур с полями, которые также могут содержать массивы; function_handle — дескрипторы функций: int 32, uint 32 — массивы 32 -разрядных чисел со знаком и без знаков; intl 6, uint!6 — массивы 16 -разрядных целых чисел со знаком и без знаков; int 8. uint 8 — массивы 8 -разрядных целых чисел со знаками и без знаков.
3. Виды программирования Система программирования MATLAB позиционируется как язык высокого уровня для научно-технических расчетов. Язык программирования системы MATLAB вобрал в себя все средства, необходимые для реализации различных видов программирования: n процедурного; n операторного; n функционального; n логического; n структурного (модульного); n объектно-ориентированного; n визуально-ориентированного.
Виды программирования В основе процедурного, операторного и функционального типов программирования лежат процедуры, операторы и функции, используемые как основные объекты языка. Эти типы объектов присутствуют в MATLAB. Логическое программирование реализуется в MATLAB с помощью логических операторов и функций. Это позволяет реализовать основные идеи логического программирования. MATLAB представляет собой яркий пример плодотворности структурного программирования. Подавляющее большинство функций и команд языка представляют собой вполне законченные модули, обмен данными между которыми происходит через их входные параметры, хотя возможен обмен информацией и через глобальные переменные. Программные модули оформлены в виде текстовых m-файлов, которые хранятся на диске и подключаются к программам по мере необходимости. Объектно-ориентированное программирование также широко представлено в системе MATLAB. Оно особенно актуально при программировании задач графики. Что качается визуальноориентированного программирования, то в MATLAB оно представлено в основном в пакете моделирования заданных блоками устройств и систем Simulink.
Двойственность операторов, команд и функций Для языка системы MATLAB различие между командами (выполняемыми при вводе с клавиатуры) и программными операторами (выполняемыми из программы) является условным. И команды, и программные операторы могут выполняться как из программы, так и в режиме прямых вычислений. Под командами далее в основном понимаются средства, управляющие периферийным оборудованием, под операторами — средства, выполняющие операции с операндами (данными). Функция преобразует одни данные в другие. Для многих функций характерен возврат значений в ответ на обращение к ним с указанием списка входных параметров — аргументов. Например, говорят, что функция sin(x) в ответ на обращение к ней возвращает значение синуса аргумента х. Поэтому функцию можно использовать в арифметических выражениях, например 2*sin(x+1). Для операторов (и команд), не возвращающих значения, такое применение обычно абсурдно. И в командной строке, и в текстах m-файлов функции записываются только малыми буквами. Для функций, возвращающих ряд значений или массивов (например X, Y, Z, . . . ), запись имеет следующий вид: [X, Y, Z, . . . ]=f_name(Cписок_параметров)
4. М-файлы сценариев и функций Работа в командном режиме (сессия) не является программированием. Внешним атрибутом последнего в MATLAB служит задание последовательности действий по программе, записанной в виде m-файла. Подготовленный и записанный на диск m-файл становится частью системы, и его можно вызывать как из командной строки, так и из другого m-файла. Есть два типа m-файлов: файлы-сценарии и файлыфункции. Важно, что в процессе своего создания они проходят синтаксический контроль с помощью встроенного в систему MATLAB редактора/отладчика m -файлов.
М-файлы сценариев Файл-сценарий, именуемый также Script-файлом, является просто записью серии команд без входных и выходных параметров. Важны следующие свойства файлов-сценариев: v они не имеют входных и выходных аргументов; v работают с данными из рабочей области; v в процессе выполнения не компилируются; v представляют собой зафиксированную в виде файла последовательность операций, полностью аналогичную той, что используется в сессии.
Пример файла-сценария %Plot with color red %Строит график синусоиды линией красного цвета %с выведенной масштабной сеткой в интервале [xmin. xmax] x=xmin: 0. 1: xmax; plot(x, sin(x), 'r') grid on Первые три строки здесь — это комментарий, остальные — тело файла.
Структура файла-функции М-файл-функция является типичным объектом языка программирования системы MATLAB. Одновременно он является полноценным модулем с точки зрения структурного программирования, поскольку содержит входные и выходные параметры и использует аппарат локальных переменных. Структура такого модуля с одним выходным параметром выглядит следующим образом: function var=f_name(Cnncoк_napaмeтpов) %Основной комментарий %Дополнительный комментарий Тело файла с любыми выражениями vаr=выражение
Структура файла-функции М-файл-функция имеет следующие свойства: Ø он начинается с объявления function, после которого указывается имя переменной var — выходного параметра, имя самой функции и список ее входных параметров; Ø функция возвращает свое значение и может использоваться в виде name (Список_параметров) в математических выражениях; Ø все переменные, имеющиеся в теле файла-функции, являются локальными, т. е. действуют только в пределах тела функции; Ø файл-функция является самостоятельным программным модулем, который общается с другими модулями через свои входные и выходные параметры; Ø правила вывода комментариев те же, что у файлов-сценариев; Ø файл-функция служит средством расширения системы MATLAB; Ø при обнаружении файла-функции он компилируется и затем исполняется, а созданные машинные коды хранятся в рабочей области системы MATLAB. Последняя конструкция vаг=выражение вводится, если требуется, чтобы функция возвращала результат вычислений.
Структура файла-функции Если выходных параметров больше, то они указываются в квадратных скобках после слова function. При этом структура модуля имеет следующий вид: function [varl, var 2. . ]=f_name(Список_параметров) %Основной комментарий %Дополнительный комментарий Тело файла с любыми выражениями vаг 1=выражение vаг 2=выражение
Примеры x=fminunc(@myfun, x 0); [x, fval]=fminunc(@myfun, x 0); % optim. m clear all; fplot('fun 1', [0, 2]); grid on; title('fun 1'); xlabel('x'); ylabel('f(x)'); [x, fval]=fminbnd(@fun 1, 0, 2) % fun 1. m function f = fun 1(x) f=x^3 -2*x-5 Решение: x=0. 8165; fval=-6. 0887
5. Управляющие структуры Помимо программ с линейной структурой, инструкции которых исполняются строго по порядку, существует множество программ, структура которых нелинейна. При этом ветви программ могут выполняться в зависимости от определенных условий, иногда с конечным числом повторений — циклов, иногда в виде циклов, завершаемых при выполнении заданного условия. Практически любая серьезная программа имеет нелинейную структуру. Для создания таких программ необходимы специальные управляющие структуры. Они имеются в любом языке программирования, и в частности в MATLAB.
if-else-end if Условие Выражение_1 Оператор_отношения_Выражение_2 Инструкции_1 else Инструкции_2 end В качестве Операторов_отношения используются следующие операторы: ==, <, >, <=, >= или ~=. Все эти операторы представляют собой пары символов без пробелов между ними.
Циклы for. . . end Конструкции циклов типа for. . . end обычно используются для организации вычислений с заданным числом повторяющихся циклов. Конструкция такого цикла имеет следующий вид: for vаг=Выражение Инструкция. . end Выражение чаще всего записывается в виде s: d: e, где s — начальное значение переменной цикла var, d — приращение этой переменной и е — конечное значение управляющей переменной, при достижении которого цикл завершается. Возможна и запись в виде s : е (в этом случае d=1). Список выполняемых в цикле инструкций завершается оператором end.
Пример (for. . . end ) for i=1: 5 i^2 end; ans = 1 ans = 4 ans = 9 ans = 16 ans = 25
Циклы while. . . end Цикл типа while выполняется до тех пор, пока выполняется Условие: while Условие Инструкции end
Пример (while, if-end) % Вычисление длины окружности r=0; while r>=0, r=input('Введите радиус окружности r='); if r>=0 disp(' Длина окружности l='); disp(2*pi*r); end ------Введите радиус окружности r=10 Длина окружности l= 62. 8319 Введите радиус окружности r=0 Длина окружности l= 0 Введите радиус окружности r=-5
В состав системы MATLAB 6. 5 SP 1 входит пакет моделирования динамических систем Simulink 5. 1 (R 13 SP 1), выпущенный в конце aвгycтa 2003 г. Это сравнительно новая и существенно доработанная версия популярного пакета, который уже давно считается одним из лучших пакетов моделирования блочнозаданных динамических систем. Она используется и в версии МА TLAB 6. 5 SP 1. Однако в систему MATLAB 7 вошла новейшая и расширенная реализация этоrо пакета Simulink. Как программное средство Simulink типичный представитель визуально ориентированных языков программирования. На всех этапах работы, особенно при подготовке моделей систем, пользователь практически не имеет дела с обычным программированием. Проrрамма в кодах автоматически rенерируется в про цессе ввода выбранных блоков компонентов, их соединений и задания парамет ров компонентов. Важное достоинство Simulink это интеграция не только с системой МАТLAB, но и с рядом других пакетов расширения, что обеспечивает, по существу, неограниченные возможности применения Simulink для решения практически любых задач имитационного и событийного моделирования.
1. Основные возможности пакета Simulink является ядром интерактивноrо проrраммного комплекса, предназначенного для математического моделирования линейных и нелинейных динамических систем и устройств, представленных своей функциональной блоксхемой, именуемой S-моделью или просто моделью. При этом возможны различные варианты моделирования: во временной области, в частотной области, с событийным управлением, на основе спектральных преобразований Фурье, с использованием метода Монте-Карло (реакция на воздействия случайноrо характера) и т. д.
Основные возможности пакета Simulink Для построения функциональной блок-схемы моделируемых устройств Simulink имеет обширную библиотеку блочных компонентов и удобный редактор блок-схем. Он основан на графическом интерфейсе пользователя и по существу является типичным средством визуально-ориентированного программирования. Используя палитры компонентов (наборы), пользователь с помощью мыши переносит нужные блоки с палитр на рабочий стол пакета Simulink и соединяет линиями входы и выходы блоков. Таким образом, создается блок-схема системы или устройства, то есть модель.
Основные возможности пакета Simulink Ценность Simulink заключается и в обширной, открытой для изучения и модификации библиотеке компонентов (блоков). Она включает источники сигналов с практически любыми временными зависимостями, масштабирующие, линейные и нелинейные преобразователи с разнообразными формами передаточных характеристик, квантующее устройство, интегрирующие и дифференцирующие блоки и т. д. В библиотеке имеется целый набор виртуальных реrистрирующих устройств - от простых измерителей типа вольтметра или амперметра до универсальных осциллоrрафов, позволяющих просматривать временные зависимости выходных параметров моделируемых систем - например, токов и напряжений, перемещений, давлений и т. п. Имеется даже графопостроитель для создания фигур в полярной системе координат. Simulink имеет средства анимации и звукового сопровождения. А в дополнительных библиотеках можно отыскать и такие «дороrие приборы» , как анализаторы спектра сложных сиrналов, мноrоканальные самописцы и средства анимации rрафиков.
Общие возможности Simulink Уже версия пакета Simulink 3. 1 обладала следующими важными возможностями: v интегрированный браузер моделей (Windows 95/98/NT); v возможность увеличения блок-схем (zooming); v блок Scope, способный работать с несколькими портами; v интегрированные возможности линейного анализа; v графический интерфейс для описания свойств сиrнала; v интеrрированный браузер библиотек (только Windows 95/98/NT); v новые блоки Subsystem, Round Sum, Enhanced Mux, Bus Selector и Model Info; v поддержка различных типов данных и их преобразований; v поддержка комплексных чисел при работе с базовыми блоками и комплексно-вешественные преобразования; v оптимизация скорости и использования памяти при моделировании; v и др.
Дополнительные возможности Simulink В версии Simulink 4. 0 добавился еще ряд возможностей. Совершенствование пользовательскоrо интерфейса: Ø новый графический отладчик для интерактивного поиска и диагностики ошибок в модели; Ø усовершенствован навигатор (браузер) моделей (Model Browser); Ø новый однооконный режим для открытия подсистем; Ø контекстное меню для блок-диаграмм (открывается щелчком правой кнопки мыши) как для версий Windows, так и для Unix; Ø новое диалоговое окно Finder для поиска моделей и библиотек. Расширенная поддержка крупных приложений: Ø с помощью новых Simulnk-объектов данных можно создавать специфические для приложений типы данных МА TLAB; Ø новый графический пользовательский интерфейс Simulink Explorer для нaблюдения и редактирования объектов данных Simulink; Ø усовершенствование блока Configurab. Ie Subsystems; Ø новое меню выбора блока конфигурируемой подсистемы; Ø поддержка S-функций, кодируемых в языке ADA.
Новые возможности Simulink 5/6 Реализации Simulink 5 пополнились следующими новыми возможностями: Ø введена цветовая индикация ошибочных циклов; Ø улучшено исполнение ветвлений входа; Ø введен новый блок конструирования источников (сиrналов); Ø введено средство обзора моделей; Ø расширены возможности браузера диагностики; Ø расширены возможности редактора масок; Ø введен редактор включения специальных символов и греческих букв; Ø расширены возможности модели дискретизатора.
2. Основы работы с пакетом Simulink После инсталляции Simulink (отдельно от MATLAB или в eгo составе) он автоматически интегрируется с MATLAB. Внешне это выражается появлением кнопки Simulink в панели инструментов (перед кнопкой ? ) системы MATLAB. Пользовательский интерфейс окна браузера выполнен в общем стиле, характерном для Проводника Windows 95/98/2000/ХР. Это позволяет отказаться от детального описания eгo особенностей. В окне браузера содержится дерево компонентов библиотек Simulink. Для просмотра тoгo или иноrо раздела библиотеки достаточно выделить eгo мышью - в правой части окна Simulink Browser Library появится набор пиктоrрамм компонентов активного раздела библиотеки.
Особенности интерфейса Simulink Интерфейс Simulink полностью соответствует стилю интерфейса типичных приложений Windows 95/98/NT/2000 (для Simulink 5/6 возможна работа и в Windows ХР), в том числе интерфейсу системы MATLAB. В то же время он концептуально cтpoг, чтобы не досаждать пользователю многочисленными «излишествами» стандартного интерфейса Windows 95/98/NT/2000/XP. Меню системы содержит следующие пункты: v File - работа с файлами моделей и библиотек (их создание, сохранение, считывание и печать); v Edit - операции редактирования, работа с буфером обмена и создание подсистем; v View - управление отображением панели инструментов и строки состояния; v Simulation - управление процессом моделирования (старт, пауза, вывод окна настройки параметров моделирования); v Format - операции форматирования модели (смена шрифтов, редактирование надписей, повороты блоков, использование тени от блоков, операции с цветами линий блоков, их фоном и общим фоном; v Tools - управление видом анализа (в линейной области и в режиме
Выводы Сиcтема Mat. Lab занимает одно из лидирующих мест на рынке специализированных систем компьютерной математики, наряду с Math. Cad, Maple, Mathematica и др. Основные преимущества системы Mat. Lab – удобство пользовательского интерфейса, высокие вычислительные возможности (богатая библиотека) и широкая область применение результатов расчета, открытость и постоянная наращиваемость архитектры.
Выводы Рассмотрены основные приемы форматирования графиков, в основном используя средства панели инструментов и отдельныекоманды из меню графического окна. Хотя многие приемы форматирования графики заимствованы из технологии визуально-ориентированного программирования, в базовой системе MATLAB (без дополнительных пакетов расширения (toolbox)) все еще отсутствует полноценная возможность такого программирования, даже с учетом расширенных возможностей дескрипторной графики. Пользователь может лишь записать на диск копии созданных графиков в формате растрового изображения (. bmp) и использовать их в целях иллюстрации своих материалов. Средства MATLAB позволяют опытным программистам создать расширения системы с визуально-ориентированной технологией программирования. Самым наглядным примером этого является система моделирования динамических объектов Simulink с набором моделей из готовых блоков. При этом автоматически создается не только сложная графическая блок-схема моделируемого устройства, но и система уравнений состояния, решение которой и является основой моделирования
Выводы Список функций Optimization Toolbox: Нелинейная оптимизация функций fminbnd – поиск функции одной переменной для фиксированного интервала fmincon - поиск минимума нелинейной задачи с ограничениями fminsearch или fminunc – поиск минимума функции нескольких переменных без ограничений Минимизация матричных задач linprog – решение задачи линейного программирования bintprog – решение задачи булевого целочисленного программирования quadprog – решение квадратичной задачи математического программирования
Выводы В среде MATLAB заложены достаточно мощные и удобные средства программирования. Программирование в среде MATLAB основано на использовании М-файлов-сценариев и Мфайлов-функций. В среде MATLAB заложена возможность поддержки функций с переменным числом аргументов. Использование управляющих структур (условные операторы, циклы) и функции диалога позволяет организовывать нелинейные структуры программ.