Программа для вызова решателя обыкновенных дифференциальных уравнений ode45 (отдельный М - файл)




Им. Р.Е. Алексеева»

АРЗАМАССКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ)

 

Расчетно – графическая работа

По дисциплине

«Моделирование систем»

 

 

Выполнил студент группы АЗИС 2013-1   Рябов С.В.
       
Проверил ст. преп., к.ф.-м.н.   Мазуров А.Ю.
         

 

Арзамас

2016 г.
Задание 1

 

Минимизация функции методом парабол

 

В результате проведения эксперимента получены числовые данные для входных параметров X и выходных параметров Y. Данные представлены в Таблице 1.

Таблица 1:

 

X 0,5 1,5 2,5
Y 0,125 0,375 5,625

 

Аппроксимировать зависимость y = f(x) с помощью:

а) метода наименьших квадратов, используя прямую y = kx + b;

б) метода парабол.

В каждом случае, найти минимальное значение выходного параметра по построенной аппроксимирующей функции на отрезке [0.4, 4].

 

Краткое описание минимизации функции методом парабол:

 

Минимизируемая функция аппроксимируется в достаточно малой окрестности полиномом n-й степени. Для использования полинома достаточно высокой степени требуется сужение отрезка аппроксимации. Сходимость данного метода может быть гарантирована лишь для достаточно регулярных функций (непрерывных и много раз дифференцируемых).

В этом методе вычисляется значение функции сразу в трех близлежащих точках , , , где h – малое число. Через эти три точки проводится интерполяционная парабола: . Минимум параболы достигается при , т.е. при . Для трех точек получаем систему линейных уравнений для коэффициентов A, B, C.


Аппроксимация функции методом парабол

Текст программы:

 

clear all; clc; clf;

%исходные данные

x = [0.5 1.5 2.5]; %координаты X

y = [0.125 0.375 5.625]; %координаты Y

a = 0.4; %начальная точка отрезка

b = 4; %конечная точка отрезка

stp = 0.1; %шаг построения графика

%расчеты

M = [x(1)^2 x(1) 1; x(2)^2 x(2) 1; x(3)^2 x(3) 1];

F = [y(1);y(2);y(3)];

cf = inv(M)*F;

px = a:stp:b; py = cf(1).*px.^2+cf(2).*px+cf(3);

xmin = -cf(2)/(2*cf(1))

ymin = cf(1)*xmin^2+cf(2)*xmin+cf(3)

%построение графиков

plot(px,py);

hold on;

plot(x,y,' bo','MarkerFaceColor','w','MarkerSize',6);

hold on;

plot(xmin,ymin,' ro','MarkerFaceColor','r','MarkerSize',6);

 

Результат работы программы:

 

xmin = 0.9500 ymin = -0.3813
Снимок рабочего окна:

Снимок окна с графиком функции:


Аппроксимация функции методом наименьших квадратов

Текст программы:

 

clear all; clc; clf;

%исходные данные

x = [0.5 1.5 2.5]; %координаты X

y = [0.125 0.375 5.625]; %координаты Y

a = 0.4; %начальная точка отрезка

b = 4; %конечная точка отрезка

stp = 0.1; %шаг построения графика

%расчеты

a1 = 0; a2 = 0;

b1 = 0; b2 = 0;

sx = size(x,2);

for i = 1:1:sx

a1 = a1+x(i); a2 = a2+x(i)^2;

b1 = b1+y(i); b2 = b2+x(i)*y(i);

end

M = [sx a1; a1 a2];

D = [b1; b2];

cf = inv(M)*D;

px = a:stp:b; py = cf(2).*px+cf(1);

xmin = min(px)

ymin = min(py)

%построение графиков

plot(px,py);

hold on;

plot(x,y,' bo','MarkerFaceColor','w','MarkerSize',6);

hold on;

plot(xmin,ymin,' ro','MarkerFaceColor','r','MarkerSize',6);

 

 

Результат работы программы:

 

xmin = 0.4000 ymin = -0.9833


Снимок рабочего окна:

 

Снимок окна с графиком функции:


Задание 2

 

Постановка задачи:

 

Используя метод Рунге-Кутта (решатель ode45), найти численное решение системы обыкновенных дифференциальных уравнений с заданными начальными условиями:

 

на временном интервале Построить графики решений

 

Краткое описание метода решения:

 

Большой класс обыкновенных дифференциальных уравнений, а именно, уравнения с одной независимой переменной, разрешенные относительно старшей производной, могут быть сведены к системе дифференциальных уравнений 1-го порядка вида

Если правые части соответствующей системы достаточно гладкие функции, то описываемая система имеет единственное решение, которое может быть получено численно с помощью одного из алгоритмов MATLAB.

 

Текст программы:

 

Программа для вызова решателя обыкновенных дифференциальных уравнений ode45 (отдельный М - файл)

 

% вызов решателя Рунге-Кутта

[T,Y] = ode45(@vdp1000,[0 12],[0 1 1]);

% вывод результата на экран

plot(T,Y(:,1),'-o','MarkerFaceColor','w','MarkerSize',5);

 

Функция vdp1000

(отдельный М - файл)

 

function dy = vdp1000(t,y)

% вектор-столбец

dy = zeros(3,1);

% уравнения системы

dy(1) = y(2)*y(3);

dy(2) = -y(1)*y(3);

dy(3) = -0.51*y(1)*y(2);

 


Снимок рабочего окна:

 

 

 

Снимок окна с графиком функции:


Задание 3

 

Постановка задачи:

 

Используя Matlab / Simulink, построить соответствующую схему и найти численное решение обыкновенного дифференциального уравнения с заданными начальными условиями:

; y(1) =0.5, y’(1)=3; 1 ≤ x ≤ 2.

Сравнить численное решение с аналитическим решением:

Снимок схемы рабочего окна:

 


 

Снимок окна с графиками функции (числовое и аналитическое решения):

 


Снимок окна с графиком функции (разница числового и аналитического решения):

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: