상수 지연을 갖는 DDE
이 예제에서는 dde23
을 사용하여 상수 지연을 갖는 DDE 시스템(지연 미분 방정식)을 푸는 방법을 보여줍니다.
연립방정식은 다음과 같습니다.
에 대한 내역 함수는 상수 입니다.
방정식에서 시간 지연은 항에만 존재하고 지연 자체는 상수이므로 방정식의 형식은 상수 지연 연립방정식입니다.
MATLAB®에서 이 연립방정식을 풀려면 상수 지연을 갖는 시스템을 위한 지연 미분 방정식 솔버 dde23
을 호출하기 전에 방정식, 지연 및 내역을 코딩해야 합니다. 필요한 함수를 이 예제와 같이 파일 끝에 로컬 함수로 포함시킬 수도 있고, MATLAB 경로에 있는 디렉터리에 이름이 지정된 별도의 파일로 저장할 수도 있습니다.
지연 코딩하기
먼저 연립방정식에서 지연을 정의하는 벡터를 만듭니다. 이 시스템에는 두 개의 다른 지연이 있습니다.
첫 번째 성분 의 지연 1.
두 번째 성분 의 지연 0.2.
dde23
은 지연에 대한 벡터 인수를 받으며 벡터의 각 요소는 하나의 성분에 대한 상수 지연입니다.
lags = [1 0.2];
방정식 코딩하기
이제 방정식을 코딩하는 함수를 만듭니다. 이 함수는 시그니처 dydt = ddefun(t,y,Z)
를 사용해야 합니다. 여기서,
t
는 시간입니다(독립 변수).y
는 해입니다(종속 변수).Z(:,j)
는 지연 의 근삿값을 계산하며, 여기서 상수 지연 는lags(j)
로 지정됩니다.
이 입력값은 솔버에 의해 자동으로 함수로 전달되지만 변수 이름에 따라 방정식 코딩 방식이 달라집니다. 이 경우:
Z(:,1)
Z(:,2)
function dydt = ddefun(t,y,Z) ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end
참고: 모든 함수는 예제 끝에 로컬 함수로 포함되어 있습니다.
해 내역 코딩하기
다음으로 해 내역을 정의하는 함수를 만듭니다. 해 내역은 시간 에 대한 해입니다.
function s = history(t) s = ones(3,1); end
방정식 풀기
마지막으로 적분 구간 를 정의하고 dde23
솔버를 사용하여 DDE를 풉니다.
tspan = [0 5]; sol = dde23(@ddefun, lags, @history, tspan);
해 플로팅하기
해 구조체 sol
에는 솔버가 취하는 내부 시간 스텝과 그러한 각 시간에서의 해를 포함하는 sol.x
필드와 sol.y
필드가 있습니다. (특정 지점의 해가 필요한 경우 deval
을 사용하여 특정 지점의 해를 구할 수 있습니다.)
시간에 대해 세 개의 해 성분을 플로팅합니다.
plot(sol.x,sol.y,'-o') xlabel('Time t'); ylabel('Solution y'); legend('y_1','y_2','y_3','Location','NorthWest');
로컬 함수(Local Function)
여기 나열된 함수는 DDE 솔버 dde23
이 해를 계산하기 위해 호출하는 로컬 헬퍼 함수입니다. 또는 이러한 함수를 MATLAB 경로에 있는 디렉터리에 고유의 파일로 저장할 수도 있습니다.
function dydt = ddefun(t,y,Z) % equation being solved ylag1 = Z(:,1); ylag2 = Z(:,2); dydt = [ylag1(1); ylag1(1)+ylag2(2); y(2)]; end %------------------------------------------- function s = history(t) % history function for t <= 0 s = ones(3,1); end %-------------------------------------------
참고 항목
dde23
| ddesd
| ddensd
| deval