Otchet

advertisement
Федеральное агентство по образованию Российской Федерации
Российский химико-технологический университет им. Д.И.Менделеева
Факультет высоких ресурсосберегающих и информационных технологий
Кафедра компьютерно-интегрированных систем в химической технологии
Лабораторная работа №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)
Download