Лабораторная работа №5
«Одномерные и многомерные массивы в системе MATLAB»
Цель работы: получение практических навыков работы с массивами в системе MATLAB.
Задание. В системе автоматизированных расчётов MATLAB обработать массив в соответствии с вариантом задания.
Вариант задания | Массив | Действия | Условия и ограничения |
14 | C(K) | Определить среднее квадратичное элементов массива С. | -1 < xi, K < 20 |
Выполнение лабораторной работы:
Исходный код программы:
n=15;
c=-1-floor(10*rand(1,n));
sum=0;
for i=1:n
sum=sum+c(i)^2;
end
Результат работы программы:
>> sqrt(61/2)
ans =
5.5227
Лабораторная работа №6
«Программирование и обработка данных в системе MATLAB»
Цель работы: изучение принципов программирования в MATLAB; освоение приёмов обработки данных.
Задание.
1. Аппроксимировать полином таблично заданную функцию y = f(x). Степень
полинома выбрать с учётом критерия: а) б)
где n – количество точек заданной функции, yia – значения функции аппроксимирующего полинома в точках xi.
2. Найти корни полученного полинома.
|
|
3. Вывести график заданной функции и аппроксимирующей полиномиальной функции.
Таблица:
№ | Критерий | Данные y=f(x) | ||||||
14 | б | х | 71 | 75 | 79 | 83 | 87 | 91 |
у | 2,36 | 2,45 | 2,8 | 2,12 | 2,65 | 2,74 |
Выполнение лабораторной работы:
Исходный код программы:
x = [71 75 79 83 87 91];
y = [2.36 2.45 2.8 2.12 2.65 2.74];
p1=polyfit(x,y,7);
p2=polyfit(x,y,5);
yp1=polyval(p1,x);
yp2=polyval(p2,x);
plot(x,y,'ro');
hold on
plot(x,yp1,'b');
plot(x,yp2,'m-.');
roots(P1)
roots(P2)
Результат работы программы:
ans =
97.4573
84.2604 +10.8053i
84.2604 -10.8053i
64.7091
ans =
92.7192
84.3533 + 4.8992i
84.3533 - 4.8992i
71.5445 + 2.9322i
71.5445 - 2.9322i
График заданной функции и аппроксимирующей полиномиальной функции представлен на рисунке 1.
Рисунок 1 - График заданной функции и аппроксимирующей полиномиальной функции
Лабораторная работа №7
«Обработка данных в системе MATLAB»
Цель работы: освоение приёмов обработки данных; ознакомление с численным интегрированием в системе MATLAB.
Задание.
1. Аппроксимировать функцию, вывести зависимости заданной, аппроксимирующей и интерполяционных функций на одном графике. Варианты заданий даны в таблице 7.1.
2. Вычислить значение определенного интеграла методами трапеций и квадратур. Варианты заданий даны в таблице 7.2.
Таблица 7.1
№ | Функция | Заданный интервал | Кол-во точек | Интервал интерполяции |
14 | 0, 2π | 10 | 0, 2π/3 |
Выполнение лабораторной работы:
Исходный код программы:
x=0:pi/5:2*pi;
y=2*sin(2*x).*sin(2*x)+1;
xa=0:pi/50:2*pi;
ya=interpft(y,length(xa));
plot(x,y,'bo',xa,ya,'r')
xi=0:pi/50:2*pi/3;
yi=interp1(x,y,xi,'cubic');
hold on
plot(xi,yi,'k+')
yi=interp1(x,y,xi,'spline');
plot(xi,yi,'g')
legend('isxod','approks','kybich','cplain')
grid
hold off
График зависимости функций представлен на рисунке 2.
|
|
Рисунок 2 – Графики заданной, аппроксимирующей и интерполяционных функций
Таблица 7.2
№ | Подынтегральная функция f(x) | Первообразная F(x) | Интервал интегрирования [a,b] |
14 | [3, 6] |
Исходный код программы:
x=3:1/100:6;
y=cos(log(abs(x)));
I=trapz(x,y)
function y=fun(x)
y=cos(log(abs(x)));
Результат работы программы:
I =
0.2514
>>Q=quad(@fun,3,6)
Q =
0.2514
Лабораторная работа №8
«Одномерная и безусловная оптимизация»
Цель работы: освоить интерфейс и новые возможности программы Matlab.
Задание:
1. Ознакомиться с возможностями функций Toolbox Optimization для решения задач одномерной и безусловной многомерной минимизации и с методами, заложенными в них.
2. Воспроизвести пример 1, повторить с заменой числа 25 на 38, найти минимум этой же целевой функции без использования графики.
3. Найти минимум функции на интервале без графики и с графикой.
4. Воспроизвести пример 2. Повторить для разных начальных точек, одна из которых .
5. На функции Розенброка исследовать поведение метода наискорейшего спуска при разных начальных точках.
6. Для функции Розенброка применить метод DFP, используя несколько начальных точек.
7. Воспроизвести пример 3 и исследовать поведение метода Нелдера - Мида при разных начальных точках.
8. Найти максимум функции .
9. Сделать выводы по применимости исследованных алгоритмов
оптимизации.
Выполнение лабораторной работы:
Задание 2 - 3.
Исходный код программы:
x = 2:0.1:9;
y = x + 38./x;
plot(x,y);
xlabel('x');
ylabel('y');
title('Minimization by fminbnd');
options = optimset('Outputfcn', @outmy);
[x,fval,exitflag,output] = fminbnd('x+38./x',2,9,options);
График решения представлен на рисунке 3.
Рисунок 3 – График минимума одномерной функции
Задание 4 – 6.
Исходный код программы:
x0=[-2 2];
history = runfminunc(x0);
Результат работы программы:
Xopt=
1.0000 1.0000
fopt=
5.6305e-011
iterations: 40
funcCount: 156
stepsize: 1
firstorderopt: 2.0750e-004
algorithm: 'medium-scale: Quasi-Newton line search'
message: [1x85 char]
График решения представлен на рисунке 4.
Рисунок 4 - График функции Розенброка при использовании метода наискорейшего спуска при разных начальных точках
Задание 7 – 8
Исходный код программы:
x0=[1 -3];
history = runfminsearch(x0);
Результат выполнения программы:
Xopt=
0.9999 0.9998
fopt=
8.5213e-009
iterations: 28
funcCount: 105
stepsize: 1
firstorderopt: 2.4118e-004
algorithm: 'medium-scale: Quasi-Newton line search'
message: [1x85 char]
График решения представлен на рисунке 5.
Рисунок 5 - Поведение метода Нелдера-Мида при разных начальных точках