ddensd
중립(Neutral) 유형의 지연 미분 방정식(DDE) 풀기
구문
설명
예제
2개의 지연을 갖는 중립 DDE
Paul이 제시한 다음과 같은 중립 DDE를 에 대해 풉니다.
해 내역은 에 대해 입니다.
편집기에서 새 프로그램 파일을 만듭니다. 이 파일에는 메인 함수와 4개의 로컬 함수가 포함됩니다.
1계 DDE를 ddefun
이라는 로컬 함수로 정의합니다.
function yp = ddefun(t,y,ydel,ypdel) yp = 1 + y - 2*ydel^2 - ypdel; end
해 지연을 dely
라는 로컬 함수로 정의합니다.
function dy = dely(t,y) dy = t/2; end
도함수 지연을 delyp
라는 로컬 함수로 정의합니다.
function dyp = delyp(t,y) dyp = t-pi; end
해 내역을 history
라는 로컬 함수로 정의합니다.
function y = history(t) y = cos(t); end
적분 구간을 정의하고 ddensd
를 사용하여 DDE를 풉니다. 이 코드를 메인 함수에 추가합니다.
tspan = [0 pi]; sol = ddensd(@ddefun,@dely,@delyp,@history,tspan);
과 사이에서 간격이 균일한 점 100개에서의 해를 구합니다. 이 코드를 메인 함수에 추가합니다.
tn = linspace(0,pi); yn = deval(sol,tn);
결과를 플로팅합니다. 이 코드를 메인 함수에 추가합니다.
plot(tn,yn); xlim([0 pi]); ylim([-1.2 1.2]); xlabel('time t'); ylabel('solution y');
전체 프로그램을 실행하여 해를 계산하고 플롯을 표시합니다. 파일 ddex4.m
에는 이 예제에 대한 전체 코드가 포함되어 있습니다. 명령줄에 edit ddex4
를 입력하면 편집기에서 코드를 볼 수 있습니다.
입력 인수
ddefun
— 도함수
함수 핸들
도함수로, 구문이 yp = ddefun(t,y,ydel,ypdel)
인 함수 핸들로 지정됩니다. 다음 표에는 ddefun
인수에 대한 설명이 나와 있습니다.
ddefun 인수 | 설명 |
---|---|
t | 시간 t의 현재 값을 나타내는 스칼라 값입니다. |
y | 수식 1에서 y(t)를 나타내는 벡터입니다. 이 벡터의 크기는 n ×1 입니다. 여기서 n 은 풀려는 시스템의 방정식 개수입니다. |
ydel | 열 ydel(:,i) 가 y(dyi)를 나타내는 행렬입니다. 이 행렬의 크기는 n ×p 입니다. 여기서 n 은 풀려는 시스템의 방정식 개수이며 p 는 수식 1에서 y(dy)의 항 개수입니다. |
ypdel | 열 ypdel(:,j) 가 y '(dypj)를 나타내는 행렬입니다. 이 행렬의 크기는 n ×q 입니다. 여기서 n 은 풀려는 시스템의 방정식 개수이며 q 는 수식 1의 y (dyp)의 항 개수입니다. |
yp | ddefun 이 반환한 결과입니다. n ×1 벡터이며, 이 벡터의 요소는 수식 1의 우변을 나타냅니다. |
dely
— 해 지연
함수 핸들 | 벡터
해 지연으로, 함수 핸들로 지정되며 수식 1에서 dy1,..., dyp로 반환됩니다. 또는 벡터 형식의 상수값으로 지연을 전달할 수도 있습니다.
dely
를 함수 핸들로 지정한 경우 구문은 dy = dely(t,y)
여야 합니다. 다음 표에는 이 함수의 인수에 대한 설명이 나와 있습니다.
dely 인수 | 설명 |
---|---|
t | 시간 t의 현재 값을 나타내는 스칼라 값입니다. |
y | 수식 1에서 y(t)를 나타내는 벡터입니다. 이 벡터의 크기는 n ×1 입니다. 여기서 n 은 풀려는 시스템의 방정식 개수입니다. |
dy | dely 함수가 반환한 벡터로, 이 벡터의 값은 수식 1에서 해 지연 dyi입니다. 이 벡터의 크기는 p ×1 입니다. 여기서 p 는 방정식에서 해 지연의 개수입니다. 각 요소는 t보다 작거나 같아야 합니다. |
형식이 dyi = t - τi인 상수 해 지연을 지정하려면 dely
가 벡터여야 합니다. 여기서 dely(i)
= τi입니다. 이 벡터의 각 값은 0보다 크거나 같아야 합니다.
dy가 문제에 없는 경우에는 dely
를 []
로 설정합니다.
데이터형: function_handle
| single
| double
delyp
— 도함수 지연
함수 핸들 | 벡터
도함수 지연으로, 함수 핸들로 지정되며 수식 1에서 dyp1,..., dypq로 반환됩니다. 또는 벡터 형식의 상수값으로 지연을 전달할 수도 있습니다.
delyp
가 함수 핸들인 경우 구문은 dyp = delyp(t,y)
여야 합니다. 다음 표에는 이 함수의 인수에 대한 설명이 나와 있습니다.
delyp 인수 | 설명 |
---|---|
t | 시간 t의 현재 값을 나타내는 스칼라 값입니다. |
y | 수식 1에서 y(t)를 나타내는 벡터입니다. 이 벡터의 크기는 n ×1 입니다. 여기서 n 은 풀려는 시스템의 방정식 개수입니다. |
dyp | delyp 함수가 반환한 벡터로, 이 벡터의 값은 수식 1에서 도함수 지연 dypj입니다. 이 벡터의 크기는 q ×1 이어야 합니다. 여기서 q 는 방정식에서 해 지연 dypj의 개수입니다. dyp 의 각 요소는 t보다 작아야 합니다. 이 제한의 한 예외는 다음과 같습니다. 초기값 DDE를 풀고 있는 경우 dyp 의 값은 t = t0일 때 t와 같을 수 있습니다. 자세한 내용은 초기값 중립 지연 미분 방정식 항목을 참조하십시오. |
형식이 dypj = t - τj인 상수 도함수 지연을 지정하려면 delyp
는 벡터여야 합니다. 여기서 delyp(j)
= τj입니다. 이 벡터의 각 값은 0보다 커야 합니다. 중립 유형의 DDE에 대한 초기값 문제를 풀 때 예외적으로 이 제한이 적용되지 않습니다. 그 경우에 delyp
의 값은 t = t0일 때 0일 수 있습니다. 자세한 내용은 초기값 중립 지연 미분 방정식 항목을 참조하십시오.
dyp가 문제에 없는 경우에는 delyp
를 []
로 설정합니다.
데이터형: function_handle
| single
| double
history
— 해 내역
함수 핸들 | 열 벡터 | 구조체(이전 적분의 sol
) | 1
×2
셀형 배열
해 내역(Solution History)으로, 함수 핸들, 열 벡터, 이전 적분의 sol
구조체, 셀형 배열 중 하나로 지정됩니다. 이 인수는 t ≤ t0일 때의 해입니다.
내역이 시간의 흐름에 따라 변하는 경우 해 내역을 구문이
y = history(t)
인 함수 핸들로 지정합니다. 이 함수는 t <= t0에 대한 해 y(t)의 근삿값n
×1
벡터를 반환합니다. 이 벡터의 길이n
은 풀려는 시스템의 방정식 개수입니다.y(t)가 상수인 경우
history
를 상수 값의n
×1
벡터로 지정할 수 있습니다.ddensd
를 호출하여 t0에 대한 이전 적분을 계속하는 경우 내역을 이전 적분의 출력 인수sol
로 지정할 수 있습니다.초기값 DDE를 풀고 있는 경우 내역을 셀형 배열
{y0, yp0}
으로 지정합니다. 첫 번째 요소y0
은 초기값 y(t0)으로 구성된 열 벡터입니다. 두 번째 요소 yp0은 요소가 초기 도함수 y '(t0)인 열 벡터입니다. 벡터들은 서로 일치해야 하고, t0에서 수식 1 항목을 충족해야 합니다. 자세한 내용은 초기값 중립 지연 미분 방정식 항목을 참조하십시오.
데이터형: function_handle
| single
| double
| struct
| cell
tspan
— 적분 구간
1
×2
벡터
적분 구간으로, 벡터 [t0 tf]
로 지정됩니다. 첫 번째 요소 t0
은 t의 초기값입니다. 두 번째 요소 tf
는 t의 최종 값입니다. t0
의 값은 tf
보다 작아야 합니다.
데이터형: single
| double
출력 인수
세부 정보
초기값 중립 지연 미분 방정식
초기값 DDE는 모든 i 및 j에 대해 dyi≥t0 및 dypj≥t0을 가집니다. t = t0일 때 모든 지연 항은 y(dyi) = y(t0)과 y '(dypj) = y '(t0)으로 축소됩니다.
y '(t0) = f(t0, y(t0), y(t0),..., y(t0), y '(t0),..., y '(t0)) | (2) |
초기값 중립 DDE를 풀 때 ddensd
에 y '(t0)를 제공해야 합니다. 이를 위해 history
를 셀형 배열 {Y0,YP0}
으로 지정해야 합니다. 여기서 Y0
은 초기값 y(t0)으로 구성된 열 벡터이고 YP0
은 초기 도함수 y '(t0)으로 구성된 열 벡터입니다. 벡터들은 서로 일치해야 하고, t0에서 수식 2 항목을 충족해야 합니다.
알고리즘
이 솔버에 사용된 알고리즘에 대한 자세한 내용은 Shampine [2] 항목을 참조하십시오.
참고 문헌
[1] Paul, C.A.H. “A Test Set of Functional Differential Equations.” Numerical Analysis Reports. No. 243. Manchester, UK: Math Department, University of Manchester, 1994.
[2] Shampine, L.F. “Dissipative Approximations to Neutral DDEs.” Applied Mathematics & Computation. Vol. 203, Number 2, 2008, pp. 641–648.
버전 내역
R2012b에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)