bvpinit
경계값 문제 솔버의 초기 추측값 생성
설명
는 경계값 문제의 알 수 없는 파라미터에 대한 초기 추측값 벡터를 지정합니다. 이 구문은 위에 열거된 입력 인수 조합 중 하나와 함께 사용할 수 있습니다.solinit
= bvpinit(___,parameters
)
예제
BVP 해의 초기 추측값
BVP에 대한 해의 초기 추측값을 만들고 bvp4c
를 사용하여 BVP를 푼 다음 해를 새 정의역으로 확장합니다.
BVP 문제에 대한 해의 양호한 초기 추측값을 형성하는 일은 문제를 푸는 과정에서 아마도 가장 어려운 부분일 것입니다. BVP 해는 반드시 고유하지는 않으므로 초기 추측값은 솔버가 반환하는 여러 해 중에서 하나를 정하는 결정적인 단서가 될 수 있습니다. 초기 추측값은 경계 조건을 충족해야 하고, 그 동작이 문제에 대한 일반적인 기대치(해가 진동하는지, 간단한 선형 함수인지 등등)를 반영해야 합니다.
다음과 같은 미분 방정식을 가정해 보겠습니다.
.
이 방정식에는 다음과 같은 경계 조건이 적용됩니다.
.
이 방정식을 1계 시스템으로 코딩하는 함수는 다음과 같습니다.
function dydx = bvpfun(x,y) dydx = [y(2) -y(1)]; end
마찬가지로, 경계 조건을 코딩하는 함수는 다음과 같습니다.
function res = bcfun(ya,yb) res = [ya(1) yb(1)]; end
필요한 함수를 이 예제와 같이 파일 끝에 로컬 함수로 포함시킬 수도 있고, MATLAB® 경로에 있는 디렉터리에 이름이 지정된 별도의 파일로 저장할 수도 있습니다.
함수 핸들이 있는 초기 추측값
방정식에 대한 해가 진동할 것이라고 합리적으로 예상할 수 있으므로, 사인 함수와 코사인 함수가 해의 동작과 고정된 경계점 사이에 있는 해의 도함수의 동작에 대한 양호한 초기 추측값이 됩니다.
function y = guess(x) y = [sin(x) cos(x)]; end
정의역 에 균일한 간격으로 배치된 10개의 메시 점과 초기 추측값 함수를 사용하여 해 구조체를 만듭니다.
xmesh = linspace(0,pi,10); solinit = bvpinit(xmesh,@guess);
BVP 풀기
ODE 함수, 경계 조건 및 해 추측값을 사용하여 bvp4c
를 호출합니다. 결과를 플로팅합니다.
sol = bvp4c(@bvpfun, @bcfun, solinit);
plot(sol.x,sol.y,'-o')
로컬 함수(Local Function)
BVP 솔버 bvp4c
가 해를 계산하기 위해 호출하는 로컬 헬퍼 함수는 다음과 같습니다. 또는 이러한 함수를 MATLAB 경로에 있는 디렉터리에 고유의 파일로 저장할 수도 있습니다.
function dydx = bvpfun(x,y) % equation being solved dydx = [y(2) -y(1)]; end %------------------------------------------- function res = bcfun(ya,yb) % boundary conditions res = [ya(1) yb(1)]; end %------------------------------------------- function y = guess(x) % guess at solution behavior y = [sin(x) cos(x)]; end %-------------------------------------------
외삽으로 BVP 해 확장하기
초기 구간에 대해 BVP를 푼 다음 각 해를 다음 구간에 대한 초기 추측값으로 사용하여 반복적으로 구간을 확장합니다.
다음과 같은 방정식이 있다고 가정해 보겠습니다.
.
이 방정식을 1계 시스템으로 바꾸면 다음과 같이 두 개로 이루어진 연립방정식이 됩니다.
,
.
이 방정식은 처음에는 구간 에 대해 정의되며 다음 경계 조건이 적용됩니다.
,
.
이 방정식을 1계 시스템으로 코딩하는 함수는 다음과 같습니다.
function dydx = bvpfun(x,y) dydx = [y(2) y(1)]; end
마찬가지로, 경계 조건을 코딩하는 함수는 다음과 같습니다.
function res = bcfun(ya,yb) res = [ya(1) yb(1)-1]; end
필요한 함수를 이 예제와 같이 파일 끝에 로컬 함수로 포함시킬 수도 있고, MATLAB 경로에 있는 디렉터리에 이름이 지정된 별도의 파일로 저장할 수도 있습니다.
초기 추측값
지수 함수를 해에 대한 초기 추측값으로 사용합니다. 이 방정식에 2개의 해 성분이 있으므로, 벡터를 반환하는 초기 추측값 함수를 y = guess(x)
형식으로 작성합니다.
function y = guess(x) y = [exp(x) exp(x)]; end
5개 점으로 구성된 메시로 추측값 함수의 동작을 충분히 파악할 수 있습니다.
xmesh = linspace(0,3,5); solinit = bvpinit(xmesh,@guess);
방정식 풀기
초기 구간 에서 방정식을 풀고 에 대한 결과를 플로팅합니다.
sol = bvp4c(@bvpfun, @bcfun, solinit);
plot(sol.x(1,:),sol.y(1,:),'-o')
구간 확장하기
이번에는 bvpinit
를 사용하여 루프에서 적분 구간을 확장하며 각각의 새로운 문제를 풀고 플로팅합니다. 매번 반복할 때마다 이전 해 sol
을 새 구간 [0 k]
에 반영하여 초기 추측값을 생성합니다. 각각의 새로운 문제에서 bvp4c
는 새 경계 [0 k]
에 경계 조건을 적용합니다.
hold on for k = 4:8 solinit = bvpinit(sol,[0 k]); sol = bvp4c(@bvpfun, @bcfun, solinit); plot(sol.x(1,:),sol.y(1,:),'-o') end
이 예제에서는 BVP 문제를 보다 작은 구간으로 또는 보다 간단한 문제로 나누어서 푸는 연속법(Continuation)이라는 유용한 기법을 간략히 보여주었습니다. 이 기법에 대한 예제를 보려면 다음을 참조하십시오.
로컬 함수(Local Function)
BVP 솔버 bvp4c
가 해를 계산하기 위해 호출하는 로컬 헬퍼 함수는 다음과 같습니다. 또는 이러한 함수를 MATLAB 경로에 있는 디렉터리에 고유의 파일로 저장할 수도 있습니다.
function dydx = bvpfun(x,y) % equation being solved dydx = [y(2) y(1)]; end %------------------------------------------- function res = bcfun(ya,yb) % boundary conditions res = [ya(1) yb(1)-1]; end %------------------------------------------- function y = guess(x) % guess at solution behavior y = [exp(x) exp(x)]; end %-------------------------------------------
입력 인수
x
— 초기 메시
벡터
초기 메시로, 벡터로 지정됩니다. 구간 [a,b]에서 문제를 풀려면 x(1)
을 a로 지정하고 x(end)
를 b로 지정하십시오. x
의 요소는 a < b이면 오름차순이어야 하고 a > b이면 내림차순이어야 합니다. 그러면 솔버가 (메시 점을 추가하고, 제거하고, 이동하여) 이 메시를 해에 적용하게 되며, 대개 x = linspace(a,b,10)
과 같은 양호한 추측값이 도출됩니다. 까다로운 문제를 처리하려면 해가 빠르게 변하는 지점에 몇 개의 메시 점을 배치하십시오.
2점 경계값 문제에서
x
의 항목은 고유해야 합니다. 즉, a < b이면 항목이x(1)
<x(2)
< ... <x(end)
를 충족해야 하고 a > b이면 항목이x(1)
>x(2)
> ... >x(end)
를 충족해야 합니다.다중 점 경계값 문제(Multipoint Boundary Value Problem)에서는, 경계 조건이 적용되는 [a,b]에서 끝점 a와 끝점 b를 제외한 점을 지정해
x
의 항목을 반복할 수 있습니다. 예를 들어, 다음과 같은 벡터가 있다고 가정해 보겠습니다.이 메시에서 경계 조건은 끝점x = [0 0.5 1 1 1.5 2];
0
, 끝점2
, 그리고 반복되는 요소1
등 세 개 점에 적용됩니다. 일반적으로 반복되는 항목은 [a,b] 영역 사이에 있는 경계점을 나타냅니다. 반복되는 요소1
은 구간[0 2]
를[0 1]
과[1 2]
의 두 영역으로 나눕니다.
예: solinit = bvpinit(linspace(a,b,10),yinit)
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
yinit
— 해의 초기 추측값
벡터 | 함수
해의 초기 추측값으로, 벡터 또는 함수로 지정됩니다.
벡터 - 해의 각 성분마다
bvpinit
가, 대응하는 벡터 요소를 모든 메시 점에 걸친 상수 추측값으로 복제합니다. 즉,yinit(i)
는x
의 모든 메시 점에서 해의i
번째 성분yinit(i,:)
에 대한 상수 추측값입니다.함수 – 이 추측값 함수(Guess Function)는 지정된 메시 점에 대해, 해의 대응하는 성분에 대한 추측값을 요소로 하는 벡터를 반환해야 합니다. 이 함수는 다음과 같은 형식이어야 합니다.
y = guess(x)
x
는 메시 점이고y
는 해의 성분 개수와 길이가 같은 벡터입니다. 예를 들어,yinit
가 함수인 경우bvpinit
는 각 메시 점에서 다음을 호출합니다.y(:,j) = guess(x(j))
다중 점 경계값 문제에서 추측값 함수(Guess Function)는 다음과 같은 형식어야 합니다.
y = guess(x,k)
y
는 영역k
에서,x
의 해에 대한 초기 추측값입니다. 이 함수는 유연한 추측값 함수(Guess Function) 작성을 위해, 반드시k
를 입력 인수로 받아야 합니다. 그러나 이 함수가k
를 꼭 사용해야 하는 것은 아닙니다.
예: solinit = bvpinit(x,[sqrt(3)/2; 0])
예: solinit = bvpinit(x,@guess)
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| function_handle
복소수 지원 여부: 예
parameters
— 알 수 없는 파라미터 값에 대한 초기 추측값
스칼라 | 벡터
알 수 없는 파라미터 값에 대한 초기 추측값으로, 스칼라 또는 벡터로 지정됩니다.
예: solinit = bvpinit(x, yinit, [0 1 sqrt(2)])
는 3개의 알 수 없는 파라미터에 대한 추측값으로 구성된 벡터를 지정합니다.
예: 알 수 없는 파라미터를 가진 BVP의 예제를 보려면 edit mat4bvp
를 입력하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
복소수 지원 여부: 예
sol
— 이전 해
구조체
이전 해로, bvp4c
또는 bvp5c
가 반환하는 해 구조체로 지정됩니다. sol
에 파라미터가 있으면 solinit
로 복사됩니다.
데이터형: struct
출력 인수
확장 기능
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
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)