Лабораторная работа №8

Лабораторная работа №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 - Поведение метода Нелдера-Мида при разных начальных точках


 




Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: