bvpset
경계값 문제(Boundary Value Problem)의 options 구조체 생성 또는 변경
구문
options = bvpset('name1',value1,'name2',value2,...)
options = bvpset(oldopts,'name1',value1,...)
options = bvpset(oldopts,newopts)
bvpset
설명
options = bvpset('name1',value1,'name2',value2,...)
는 경계값 문제 솔버 bvp4c
에 제공할 수 있는 구조체 options
를 만듭니다. 이 솔버에는 명명된 속성의 값이 지정되어 있습니다. 지정되지 않은 속성은 디폴트 값이 유지됩니다. 모든 속성에 대해 속성을 고유하게 식별할 수 있는 선행 문자만 입력해도 됩니다. bvpset
은 속성 이름의 대/소문자를 무시합니다.
options = bvpset(oldopts,'name1',value1,...)
은 기존 options 구조체 oldopts
를 변경합니다. 이 경우 이름/값 쌍으로 지정된 oldopts
의 값이 모두 덮어쓰이고, 수정된 구조체가 출력 인수로 반환됩니다.
options = bvpset(oldopts,newopts)
는 기존 options 구조체 oldopts
를 새 options 구조체 newopts
와 결합합니다. newopts
에 설정된 모든 값은 oldopts
의 대응값을 덮어씁니다.
입력 인수가 없는 bvpset
은 모든 속성 이름과 해당 속성의 가능한 값을 표시하며 디폴트 값은 중괄호 {}
로 나타냅니다.
함수 bvpget
을 사용하여 options
구조체에서 특정 속성의 값을 쿼리할 수 있습니다.
BVP 속성
bvpset
을 사용하면 경계값 문제 솔버 bvp4c
의 속성을 지정할 수 있습니다. 다음과 같은 여러 범주의 속성을 설정할 수 있습니다.
허용오차(Error Tolerance) 속성
bvp4c
는 선점(Collocation) 식을 사용하기 때문에, 수치 해는 연결 방정식(Collocation Equation)을 충족하는 점의 메시를 기반으로 합니다. 메시 선택과 오차 제어는 이 해의 잔차(Residual)를 기준으로 하며, 계산된 해 S(x)는 섭동 문제(Perturbed Problem) S′(x) = f(x,S(x)) + res(x)의 엄밀해(Exact Solution)입니다. 메시의 각 하위 구간에서, 해 res(i)
의 i
번째 성분에 있는 잔차의 노름(Norm)이 추정되며, 이 노름은 허용오차보다 작거나 같아야 합니다. 이 허용오차는 사용자가 정의하는 상대 허용오차 RelTol
과 절대 허용오차 AbsTol
의 함수입니다.
다음 표에서는 허용오차 속성을 설명합니다.
BVP 허용오차 속성
속성 | 값 | 설명 |
---|---|---|
| 양의 스칼라 { | 잔차 벡터의 모든 성분에 적용되는 상대 허용오차입니다. f(x,y)의 크기에 상대적인 잔차의 측정값입니다. 디폴트 값인 계산된 해 S(x)는 S′(x) = F(x,S(x)) + res(x)의 엄밀해(Exact Solution)입니다. 메시의 각 하위 구간에서 잔차 res(x)는 다음을 충족시킵니다. |
| 양의 스칼라 또는 벡터 { | 잔차 벡터의 대응하는 성분에 적용되는 절대 허용오차입니다. |
벡터화
다음 표에서는 BVP 벡터화 속성을 설명합니다. bvp4c
에 사용되는 ODE 함수의 벡터화 방법은 ODE 솔버에 사용되는 벡터화 방법과 다릅니다.
bvp4c
의 경우 첫 번째 인수는 물론 두 번째 인수에 대해서도 ODE 함수를 벡터화해야 하므로F([x1 x2 ...],[y1 y2 ...])
가[F(x1,y1) F(x2,y2)...]
를 반환합니다.bvp4c
의 경우 해석적 야코비 행렬이 제공되는 경우에도 벡터화가 유용합니다. 경직성 ODE 솔버(Stiff ODE Solver)의 경우 해석적 야코비 행렬이 사용되는 경우 벡터화가 무시됩니다.
벡터화 속성
속성 | 값 | 설명 |
---|---|---|
|
| 이 속성을 on으로 설정하고 ODE 함수 F를 코딩하면 MATLAB® 배열 표기법에서는 일반적으로 ODE 함수를 쉽게 벡터화할 수 있습니다. 앞서 소개한 function dydx = shockODE(x,y,e) pix = pi*x; dydx = [ y(2,:)... -x/e.*y(2,:)-pi^2*cos(pix)- pix/e.*sin(pix)]; |
해석적 편도함수(Analytical Partial Derivative)
기본적으로 bvp4c
솔버는 차이가 유한한 모든 편도함수의 근사치를 계산합니다. 미분 방정식의 해석적 편도함수 ∂f/∂y와 경계 조건의 해석적 편도함수 ∂bc/∂ya와 ∂bc/∂yb를 제공하면 bvp4c
가 보다 효율적으로 실행됩니다. 알 수 없는 파라미터와 관련된 문제의 경우 파라미터에 대해 편도함수 ∂f/∂p와 편도함수 ∂bc/∂p를 제공해야 합니다.
다음 표에서는 해석적 편도함수 속성을 설명합니다.
BVP 해석적 편도함수 속성
속성 | 값 | 설명 |
---|---|---|
| 함수 핸들 | f(x,y)의 해석적 편도함수를 계산하는 함수 핸들입니다. y′ = f(x,y)를 풀 때 |
| 함수 핸들 | bc(ya,yb)의 해석적 편도함수를 계산하는 함수 핸들입니다. [ |
특이 BVP(Singular BVP)
bvp4c
는
형식이고 구간 [0,b]에 있는 특이 문제(Singular Problem)를 풀 수 있습니다. 여기서 b > 0입니다. 이러한 문제의 경우 상수 행렬(Constant Matrix) S를 SingularTerm
의 값으로 지정합니다. 이 형식의 방정식에서 odefun
은 f(x,y,p) 항만 실행합니다. 여기서 p는 알 수 없는 파라미터(있는 경우)를 나타냅니다.
특이 BVP(Singular BVP) 속성
속성 | 값 | 설명 |
---|---|---|
| 상수 행렬 | 특이 BVP의 특이 항(Singular Term)입니다. 다음 형식의 방정식에 대해 상수 행렬 S로 설정합니다. 형식이고 구간 [0,b]에 있는 특이 문제(Singular Problem)를 풀 수 있습니다. 여기서 b > 0입니다. |
메시 크기(Mesh Size) 속성
bvp4c
는 연립대수방정식을 풀어 각 메시 점에서의 BVP에 대한 수치 해를 구합니다. 연립대수방정식의 크기는 미분 방정식의 개수(n
)와 현재 메시의 메시 점 개수(N
)에 따라 결정됩니다. 허용된 메시 점 개수가 소진되면 계산이 중지되며, bvp4c
가 경고 메시지를 표시하고 그때까지 찾은 해를 반환합니다. 이 해는 허용오차를 충족하지 않지만 완화된 허용오차, 또는 증가된 Nmax
값을 사용한 계산에 사용할 훌륭한 초기 추측값을 제공할 수도 있습니다.
다음 표에서는 메시 크기 속성을 설명합니다.
BVP 메시 크기 속성
속성 | 값 | 설명 |
---|---|---|
| 양의 정수 { | BVP의 해를 구할 때 허용되는 최대 메시 점 개수입니다. 여기서 |
해 통계량(Solution Statistic) 속성
Stats
속성을 사용하면 해 통계량을 확인할 수 있습니다.
다음 표에서는 해 통계량 속성을 설명합니다.
BVP 해 통계량(BVP Solution Statistic) 속성
속성 | 값 | 설명 |
---|---|---|
|
| 계산과 관련된 통계량을 표시할지 여부를 지정합니다.
|
예제
bvp4c
의 상대 허용오차를 디폴트 값 1e-3
에서 1e-4
로 변경하는 options 구조체를 만들려면 다음을 입력합니다.
options = bvpset('RelTol',1e-4);
'RelTol'
의 값을 options
에서 복구하려면 다음을 입력합니다.
bvpget(options,'RelTol') ans = 1.0000e-004
확장 기능
버전 내역
R2006a 이전에 개발됨