Федеральное агентство по образованию Российской Федерации Российский химико-технологический университет им. Д.И.Менделеева Факультет высоких ресурсосберегающих и информационных технологий Кафедра компьютерно-интегрированных систем в химической технологии Лабораторная работа №4 по курсу «Пакеты прикладных программ» Решение задач в среде MatLAB вариант №10 Выполнил : студент группы К-22 Д.Д. Поляков Проверил: старший преподаватель А.В. Горанский Месторасположение электронной версии документа Сервер: \\cisserv Папка: \usr\ Файл: Москва 2007 29 Содержание Содержание .................................................................................................................................................................. 2 Цель работы ................................................................................................................................................................. 3 Задание ......................................................................................................................................................................... 4 Теоретическая часть .................................................................................................................................................... 5 Практическая часть ..................................................................................................................................................... 6 Цель работы Целью этой лабораторной работы является изучение среды MatLAB, а именно использование математических функций, работа с матрицами и многими другими элементами необходимыми для инженерных расчетов.Задание 1) Найти глобальный максимум функции : Y( x) 2 200 sin x 2 2 2 2 ( x 4) 10 x 5 на интервале [–4; 10]. 2) Построить её график, отобразив точкой местоположение максимума 3) Найти все корни функции на интервале [0;8] используя как начальное приближение все точки этого интервала выбранные с шагом 0.05. Список найденных корней должен быть оформлен как таблица (матрица), отсортированная по возрастанию. Нанести точками положения найденных корней на график функции.Теоретическая часть MatLAB используется для решения всевозможных задач. Создания моделей процессов и много другого. Очень широко используется в инженерных целях, для автоматизации производства. Расшифровывается MatLAB как MATrix LABorotary. Сделана программа компанией Math Works Inc. И эта программа является одной из самых популярных и фундаментальных расчетно-инженерных программ в мире. Будучи более продвинутой и функциональной программой, чем MathCAD, MatLAB сохраняет все ее достоинства, такие, как удобный и вполне интуитивно понятный интерфейс. Но главным преимуществом и достоинством МатLab- а является возможность подключать дополнительные модули, что и делает программу настолько функциональной и универсальной. Также программа совместима с разными устройствами и приборами. Ее можно использовать начиная от измерения температуры процессора компьютера и управления кулерами внутри системного блока, до визуального поиска брака в деталях на заводе ( стоит камера, подключенная к компьютеру, и на основе данных с камеры, с помощью MatLAB ищутся 39 дефекты ) . Проинсталлированная версия MatLAB в базовой сборке, занимает весьма внушительный раздел жесткого диска ( 2.1 Гб ), что делает ее одной из самых массивных программ из встречавшихся мне ранее. Теперь об интерфейсе. Итак, запускаем Matlab и видим в окне среду разработки. Справа находится область ввода комманд, слева Workspace – область где отображаются переменные. Стоит обратить на роль точки с запятой в MatLAB, она приводит к подавлению вывода вычисленного значения в командную строку. Если точку с запятой не поставить, то значение переменной будет отображено в командной строке, что может приводить к серьезной задержке, особенно если вы работаете с большими массивами. Стоит так же отметить обилие средств графики, начиная от построения графиков одной переменной, кончая сложными графиками с элементами анимации. Надо отметить, что и сама функция постройки графиков ( Plot ) реализована в MatLAB очень и очень удобно, график вылезает в новом, специальном окне, сохранять график можно в одном из многочисленно предложенных форматов ( от jpeg и bmp, до pgm и png ). Добавление, отметка различными знаками области или точки графика занимает не более пяти минут. Практическая часть Задаем функцию через mfile. function f = func(x) f = ((-200*sin((x^2)-2)^2)/(x^2+5))-((x-4)^2)+10; строим график функции, взяв шаг за 0.05. Задаем функцию, через которую будем искать максимум функции func, отрицательную этой функции. Через m-file function neg = func3(x) neg = -(((-200*sin((x^2)-2)^2)/(x^2+5))-((x-4)^2)+10); Вводим новую функцию из-за того, что в МатЛАБ-е есть функция для поиска минимума , но нет функции для поиска максимума. Создаем функцию, которая будет искать максимум на интервале [4;10]. function maximum = func2 x1=-4; x2=10; maximum = fminbnd(@func,x1,x2); вводим в командную строку название функции >> func2 ans = 4.2077 , тем самым находим условие максимума. Подставляя его в исходную функцию, мы получаем Максимальное значение 49 >> qwe=func(func2) qwe = 9.9568 Получившейся максимальное значение равно 9.9568. Создаем функцию, которая будет искать нули функции на интервале [0;8] с перебором всех значений из интервала с шагом 0,05. Создаем m-file с определением функции function zero = root global x0; points = size(x0,2); zero = []; for i=1:points-1 zero(i) = fzero( @func, x0(i) ); end; в командной строке присваиваем x0 глобальность и определяем x0 global x0 x0=0:0.05:8 x0 мы объявили как глобальный массив, в котором содержаться значения от 0 до 8 с шагом 0,05. Функция fzero ищет корень возле заданной точки. Результатом вышло, что выдается список, со 161 значением. Далее сортируем и ищем уникальные корни из этого списка: >> >> >> >> >> >> >> loop=root; sort(loop); loop=loop'; loop=loop*10000; loop=round(loop); loop=loop/10000; loop=unique(loop) loop = 1.3014 1.5472 2.1331 2.4149 2.7339 3.0357 3.2260 3.5520 3.6483 6.4098 6.4439 6.6256 6.8389 59 7.0421 Наносим корни и точки максимума на график функции, отмечая ‘*’ – корни, а ‘.’ Максимум исходной функции : >> x=-4:0.05:10; >> for i=1:281 y(i)=func(x(i)); end; >> hold on >> plot (x,y) >> plot (loop, 0 , '*') >> plot (work,qwe, '.') График получившийся функции : 69 Вывод: Мы научились обращаться с программой МатЛАБ, нашли с ее помощью корни функции: loop = 1.3014 1.5472 2.1331 2.4149 2.7339 3.0357 3.2260 3.5520 3.6483 6.4098 6.4439 6.6256 79 6.8389 7.0421 И точку максимума: (4.2077; 9.9568)