Курсовая работа: Исследование метода дифференцирования по параметру для решения нелинейных САУ
[tout,yout,x]=rk4('dif',t0,tfinal,y0,h,trace);
subplot(2,1,1);
plot(tout,yout(:,1));
grid;
title(sprintf('МетодРунге-Кутта 4гопорядка'));
ylabel('y(1)'); xlabel('t');
subplot(2,1,2);
plot(tout,yout(:,2));
grid;
ylabel('y(2)'); xlabel('t');
pause;
x0=x';
dx=[0.01;0.01];
[x,dx,m] = dmn('funf',x0,dx,Ed);
subplot(111);
plot(m,x(:,1),m,x(:,2));
grid;
title(sprintf(‘Уточнение решения системы’));
ylabel('x(m)'); xlabel('m');
pause;
plot(m,dx(:,1),m,dx(:,2));
grid;
ylabel('dx(m)'); xlabel('m');
pause;
out=[m,x,dx]
Функции rk1, rk2, rk4
Данные функции являются программной реализацией методов Рунге-Кутта 1-го, 2-го и 4-го порядка. Здесь производится расчет приближенных значений при интегрировании системы с t = [0; 1]. Входные параметры функции – правые части системы, начальный и конечный моменты времени, начальное значение вектора Y, шаг и признак трассировки. Выходные параметры – вектор моментов времени tout, матрица yout={nx 2}, где n – число шагов метода( по строкам матрицы располагаются вектора Ym , m = 0,n), вектор х, содержащий значения, полученные на последнем шаге работы функции и предназначенный для того, чтобы затем можно было передать значения данного вектора в подпрограмму, реализующую дискретный метод Ньютона.
Тексты программ (файл rk1.m, rk2.m, rk3.m):
function [tout,yout,x] = rk1(dif, t0, tfinal, y0, h, trace)
t=t0;y=y0;
tout=t;
yout=y;
b=0;
if trace