이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
functionalDerivative
범함수(functional)의 도함수(변분 도함수)
설명
예제
단일 함수에 대한 범함수의 도함수
함수 에 대해 범함수 의 도함수를 구합니다. 여기서 피적분 함수는 입니다.
y(x)
를 기호 함수로 선언하고 f
를 의 피적분 함수로 정의합니다. f
와 y
를 functionalDerivative
의 파라미터로 사용합니다.
syms y(x)
f = y*sin(y);
G = functionalDerivative(f,y)
G(x) =
두 함수에 대한 범함수의 도함수
함수 와 에 대해 범함수 의 도함수를 구합니다. 여기서 피적분 함수는 입니다.
u(x)
와 v(x)
를 기호 함수로 선언하고 f
를 의 피적분 함수로 정의합니다.
syms u(x) v(x) f = u^2*diff(v,x) + v*diff(u,x,x);
기호 함수로 구성된 벡터 [u v]
를 functionalDerivative
의 두 번째 입력 인수로 지정합니다.
G = functionalDerivative(f,[u v])
G(x) =
functionalDerivative
는 u
와 v
에 대해 각각 피적분 함수 f
의 범함수의 도함수를 포함하는 기호 함수로 구성된 벡터를 반환합니다.
단순 질량-스프링 시스템의 오일러-라그랑주 방정식
스프링 상수가 k
인 스프링에 연결된 질량 m
의 오일러-라그랑주 방정식을 구합니다.
시스템의 운동 에너지 T
, 위치 에너지 V
, 라그랑주 L
을 정의합니다. 라그랑주는 운동 에너지와 위치 에너지 간의 차입니다.
syms m k x(t) T = 1/2*m*diff(x,t)^2; V = 1/2*k*x^2; L = T - V
L(t) =
라그랑주 역학에서 시스템의 작용 범함수는 시간에 따른 랑그랑주의 적분, 즉 와 같습니다. 오일러-라그랑주 방정식은 가 정상(stationary)인 시스템의 운동을 설명합니다.
피적분 함수 L
의 범함수의 도함수를 계산하고 이를 0
으로 설정하여 오일러-라그랑주 방정식을 구합니다.
eqn = functionalDerivative(L,x) == 0
eqn(t) =
eqn
은 질량-스프링 진동을 설명하는 미분 방정식입니다.
dsolve
를 사용하여 eqn
을 풉니다. 질량 m
과 스프링 상수 k
가 양수라고 가정합니다. 진동 진폭의 초기 조건을 으로 설정하고 질량의 초기 속도를 으로 설정합니다.
assume(m,'positive') assume(k,'positive') Dx(t) = diff(x(t),t); xSol = dsolve(eqn,[x(0) == 10, Dx(0) == 0])
xSol =
추후 계산을 위해 가정을 지웁니다.
assume([k m],'clear')
최속 강하선 문제의 미분 방정식
최속 강하선 문제는 마찰 없이 중력이 작용하는 상태에서 입자의 가장 빠른 하강 경로를 찾는 것입니다. 운동은 수직 평면으로 국한됩니다. 중력 가 작용할 때 물체가 점 에서 점 로 곡선 를 따라 이동하는 시간은 다음과 같이 계산됩니다.
경로 의 작은 변분에 대해 의 변동을 최소화하여 가장 빠른 경로를 구합니다. 최솟값에 대한 조건은 입니다.
최속 강하선 문제를 설명하는 미분 방정식을 구하기 위해 범함수의 도함수를 계산합니다. simplify
를 사용하여 방정식을 원하는 형식으로 단순화합니다.
syms g y(x) assume(g,'positive') f = sqrt((1 + diff(y)^2)/(2*g*y)); eqn = functionalDerivative(f,y) == 0; eqn = simplify(eqn)
eqn(x) =
이 방정식은 최속 강하선 문제의 표준 미분 방정식입니다. 미분 방정식의 해를 구하려면 dsolve
를 사용하십시오. 'Implicit'
옵션을 true
로 지정하여 형식을 갖는 음함수 해를 반환합니다.
sols = dsolve(eqn,'Implicit',true)
sols =
기호 솔버 dsolve
는 복소 공간의 일반해를 반환합니다. Symbolic Math Toolbox™는 기호 함수 가 실수라는 가정을 허용하지 않습니다.
경계 조건에 따라, 최속 강하선 문제에 대해 두 가지 실수 공간 해가 있습니다. 이 두 가지 해 중 하나(아래)는 실수 공간의 사이클로이드 곡선을 설명합니다.
solCycloid1 = sols(3)
solCycloid1 =
solCycloid2 = sols(4)
solCycloid2 =
실수 공간에서의 다른 해는 가로 직선입니다. 여기서 는 상수입니다.
solStraight = simplify(sols(5))
solStraight =
사이클로이드 해를 설명하기 위해 경계 조건 와 을 갖는 예를 고려해 볼 수 있습니다. 이 경우, 주어진 경계 조건을 충족할 수 있는 방정식은 solCycloid2
입니다. 두 경계 조건을 solCycloid2
에 대입합니다.
eq1 = subs(solCycloid2,[x y(x)],[0 5]); eq2 = subs(solCycloid2,[x y(x)],[4 1]);
두 방정식 eq1
과 eq2
는 미지의 두 계수 과 를 갖습니다. vpasolve
를 사용하여 이 계수에 대한 수치 해를 구합니다. 이렇게 구한 해를 solCycloid2
에 대입합니다.
coeffs = vpasolve([eq1 eq2]); eqCycloid = subs(solCycloid2,{'C1','C5'},{coeffs.C1,coeffs.C5})
eqCycloid =
음함수 방정식 eqCycloid
는 와 에 대한 최속 강하선 문제의 사이클로이드 해를 설명합니다.
이제 fimplicit
를 사용하여 eqCycloid
를 플로팅할 수 있습니다. fimplicit
는 기호 변수 와 를 포함하는 음함수 기호 방정식만 허용하므로, 기호 함수 를 기호 변수 로 변환합니다. mapSymType
을 사용하여 를 로 변환합니다. 경계 조건 및 내에서 사이클로이드 해를 플로팅합니다.
funToVar = @(obj) sym('y'); eqPlot = mapSymType(eqCycloid,'symfun',funToVar); fimplicit(eqPlot,[0 4 1 5])
3차원 공간의 극소 곡면 방정식
3차원 공간의 곡면을 설명하는 함수 의 경우, 곡면 면적은 다음 범함수에 의해 결정될 수 있습니다.
여기서 와 는 와 에 대한 의 편도함수입니다.
u
에 대해 피적분 함수 f
의 범함수의 도함수를 구합니다.
syms u(x,y)
f = sqrt(1 + diff(u,x)^2 + diff(u,y)^2);
G = functionalDerivative(f,u)
G(x, y) =
결과는 u(x,y)
로 정의된 3차원 곡면의 극소 곡면을 설명하는 방정식 G
입니다. 이 방정식의 해는 비눗방울과 같은 3차원 공간의 극소 곡면을 설명합니다.
입력 인수
f
— 범함수의 피적분 함수
기호 변수 | 기호 함수 | 기호 표현식
범함수의 피적분 함수로, 기호 변수, 기호 함수 또는 기호 표현식으로 지정됩니다. 인수 f
는 범함수의 밀도를 나타냅니다.
y
— 미분 함수
할당되지 않은 기호 함수 | 할당되지 않은 기호 함수로 구성된 벡터 | 할당되지 않은 기호 함수로 구성된 행렬 | 할당되지 않은 기호 함수로 구성된 다차원 배열
미분 함수로, 할당되지 않은 기호 함수, 또는 할당되지 않은 기호 함수로 구성된 벡터, 행렬 또는 다차원 배열로 지정됩니다. 인수 y
는 하나 이상의 독립 변수로 구성된 함수일 수 있습니다. y
가 기호 함수로 구성된 벡터인 경우 functionalDerivative
는 y
의 함수에 대한 범함수의 도함수로 구성된 벡터를 반환합니다. 여기서 y
의 모든 함수는 동일한 독립 변수에 종속적이어야 합니다.
예: syms y(x); G = functionalDerivative(y*sin(y),y)
출력 인수
G
— 범함수의 도함수
기호 함수 | 기호 함수로 구성된 벡터
범함수의 도함수로, 기호 함수 또는 기호 함수로 구성된 벡터로 반환됩니다. 입력값 y
가 벡터, 행렬 또는 배열이면 G
는 벡터입니다.
세부 정보
범함수의 도함수
다음 범함수를 가정해 보겠습니다.
이는 x 공간에서 a에서 b까지의 임의 경로를 취할 수 있습니다.
경로 y(x)의 작은 변분에 대해, 변동을 로 정의합니다. 여기서 ϕ(x)는 임의의 테스트 함수입니다. 범함수 S의 변동은 다음과 같습니다.
표현식 는 y에 대한 S의 범함수의 도함수입니다. 선형 범함수 DS[y]는 범함수 S의 첫 번째 변분 또는 가토 미분이라고도 합니다.
범함수의 도함수를 계산하는 한 가지 방법은 ε에 대한 표현식 S[y + εϕ]에 테일러 전개를 적용하는 것입니다. ε에서 1차 항을 유지하고, 부분 적분을 수행하고, 경계 조건 ϕ(a) = ϕ(b) = ϕ'(a) = ϕ'(b) = ... = 0을 선택하면 범함수의 도함수는 다음과 같이 됩니다.
버전 내역
R2015a에 개발됨
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)