베렛 통합
Verlet integration벨레 적분(프랑스어 발음: [vʁˈl]])은 뉴턴의 운동 [1]방정식을 적분하는 데 사용되는 숫자 방법입니다.분자역학 시뮬레이션 및 컴퓨터 그래픽스에서 입자의 궤적을 계산하기 위해 자주 사용됩니다.이 알고리즘은 1791년 델람브레에 의해 처음 사용되었고 그 이후로 여러 번 재발견되었으며, 가장 최근에는 1960년대에 분자역학에서 사용하기 위해 Loup Verlet에 의해 발견되었다.1909년 Cowell과 Cromelin에 의해 Halley 혜성의 궤도를 계산하기 위해 사용되었고 1907년 Carl Störmer에 의해 자기장 내 전기 입자의 궤적을 연구하기 위해 사용되었습니다.[2]Verlet 적분기는 단순한 오일러 방법에 비해 유의한 추가 계산 비용 없이 시간 가역성 및 위상 공간에서의 심플렉틱 형식의 보존과 같은 물리적 시스템에서 중요한 다른 특성뿐만 아니라 양호한 수치 안정성을 제공합니다.
기본 Störmer-Verlet
미분방정식 x ( )A (x ( ) { style \ {{} } = \ { A } { ( } \} \ { A } ) ( ) 단계 크기 Δ t>0{\displaystyle \Delta t>0}과{\displaystyle{\dot{\mathbf{)}}}(t_{0})=\mathbf{v}_{0}}, 개략적인 수치 햇법)n ≈ 시대 t n에서 x(nt){\displaystyle \mathbf{)}_{n}\approx \mathbf{)}(t_{n})})t 0+nΔ t{\displaystyle t_{n}=t_{0}+n\,\Delta t}. 대한 largeenough 수 있e는 다음 방법으로 구한다.
- 1 0 + 0 t+ A ( ) 2 \ \ } \ { } , \ t + { \ { ( A
- n = 1, 2, ... 반복
운동 방정식
보수적인 물리적 시스템에 대한 뉴턴의 운동 방정식은
또는 개별적으로
어디에
- t가 시간이야
- ( ) ( 1 () , , () { \} ( t ) = ( _ {1} ( ) , , \ x }_ { { n } { { n( t ) \ } } } } is,,,,,,,,,,,,, style n,,,,,,,,,,,,,,,,,,,,,,,,
- V는 스칼라 전위함수입니다.
- 디스플레이 스타일 는 전위의 음의 구배를 나타내며 입자에 힘의 합성을 부여한다.
- 은 질량 매트릭스로, 일반적으로 각 입자에 대해 m(\k})의 블록이 대각선으로 표시됩니다.
이 방정식은 잠재적 V V의 다양한 선택에 대해 상호작용하는 분자의 움직임에서 행성의 궤도에 이르는 다양한 물리적 시스템의 진화를 설명하는 데 사용될 수 있습니다.
질량을 오른쪽으로 가져와서 여러 입자의 구조를 잊어버린 후, 방정식은 다음과 같이 단순화 될 수 있다.
위치 종속 가속도를 나타내는 일부 적절한 벡터 값 x {A{를 사용합니다.일반적으로 초기 x ( 0 ( =\ 및 초기 v ( δ ( 0 (\ (0 {} {0 { 입니다
벨렛 통합(속도 없음)
이 초기값 문제를 이산화하고 수치적으로 해결하기 위해 타임 스텝 > { \ t > 을 선택하고 샘플링 포인트 t n \ } = \ t 를 고려합니다.이 작업은 정확한 솔루션의 궤적에서 x( n) \ ( 을 근접하게 따르는 x \ n} 의 시퀀스를 구성하는 것이다.
오일러의 방법이 1차 미분방정식에서 첫 번째 도함수에 대한 순차이 근사치를 사용하는 경우, 버렛 적분은 두 번째 도함수에 대한 중심차이 근사치를 사용하는 것으로 볼 수 있다.
Störmer 방법으로[3] 사용되는 형태의 Verlet 적분은 다음과 같은 속도를 사용하지 않고 이전 두 가지로부터 다음 위치 벡터를 얻기 위해 이 방정식을 사용합니다.
디스커버리
이 방법 고유의 시간 대칭은 모든 홀수 차수 항(에서는 3차 \ \ t)을 제거함으로써 분해를 통해 발생하는 국소 오차 수준을 감소시킨다.국소 오차는 한값 ( - ), (n ), x ( + 1) { \ \를 반복 Taylor 확장에 삽입하여 수량화한다. t 시간 방향의 \Delta t
서x({{는 위치, { { \ a= , dot \ {xf {x} displaystyle= dot = displaystyle = where where where where where where where where where where where where where where where where where where where {\ {\ where where where where where where where where과 관련된 위치의 세 번째 도함수).
이 두 가지 확장을 더하면
Taylor 확장의 1차 및 3차 항이 소거되어 Verlet 적분자가 단순한 Taylor 확장만으로 적분하는 것보다 더 정확한 순서를 얻을 수 있음을 알 수 있다.
여기서 가속도는 한 솔루션 (t ) (x ( ) \ \} (t) =\ { {(}\ (t){\에서 계산되는 반면, 시 중심점 에서 계산된다는 사실에 주의해야 한다.\ 글로벌 오차를 계산할 때, 즉 정확한 해와 근사 수열 사이의 거리는 정확히 상쇄되지 않으며, 글로벌 오차의 순서에 영향을 미칩니다
간단한 예
로컬 오류와 글로벌 오류의 관계에 대한 통찰력을 얻으려면 정확한 솔루션뿐만 아니라 대략적인 솔루션을 명시적인 공식으로 표현할 수 있는 간단한 예를 검토하는 것이 좋습니다.이 작업의 표준 예는 지수 함수입니다.
x ( t ) x ( )=의 w { w를 고려합니다.정확한 기본 해법은 { e 및 - { e입니다.
이 미분 방정식에 적용된 슈퇴르메르 방법은 선형 반복 관계를 유도한다.
또는
이는 특성 2 - ( + ( )2 + 0 = 0 ( \ q }-right의 근을 구함으로써 풀 수 있다.이것들은
선형 반복의 기본 해는 n +({{n}= n -({}=입니다. 이들을 정확한 해와 비교하기 위해 Taylor 확장을 계산합니다.
시리즈의 w {\ e의 몫은 1- ) ( style (3} + {\로 합니다.
그 결과 최초 기초 솔루션의 경우 다음과 같이 오차를 계산할 수 있습니다.
즉, 국소 이산 오차는 4차이지만 미분 방정식의 2차 때문에 글로벌 오차는 2차이며, 시간에 따라 기하급수적으로 증가합니다.
반복 시작
n { n , t t t t、 {\ t t _ { t _ { }、 x \ style \ {} _ { {} _ { ) 에서의 Verlet 반복의 시작에는 x style { 1 }이 필요합니다_ 초기 는 초기 t 0({0에서만 알 수 있기 때문에 첫눈에 문제가 발생할 수 .그러나 이러한 a ( 0) {}=\ _는 알려져 있으며, 첫 번째 단계의 위치에 대한 적절한 근사치를 2차 테일러 다항식을 사용하여 구할 수 있습니다.
첫 번째 스텝의 오류는 순서 t 3O}\ t3}\displaystyle (\ tright다수의 시간 스텝에 걸친 시뮬레이션에서는 첫 번째 스텝의 오류는 총 오류의 극히 일부에 불과하기 때문에 문제가 되지 않습니다.이 에러는 })의 로 O L 2^{} ^{ } } } 。right 둘 다 벡터 displaystyle \ n}~ (n ){displaystyle \} (n})의 거리에 대하여 x+ - t \fracnf}_n} _mathbf}) n} )_nf의 거리에 대하여이다.( n +) - ( n ) {\ t\ \\ } ({ + 1) - \ {} 또, 이 2차 글로벌 에러를 취득하려면 , 에러가 적어도 3차 이상이 되어야 합니다.
일정하지 않은 시차
Störmer-Verlet 방법의 단점은 시간 스텝( t t이 변경되면 미분방정식에 대한 해답에 근접하지 않는다는 것입니다.이것은 다음 공식을[4] 사용하여 수정할 수 있습니다.
보다 정확한 파생에서는 t + i + t { t{} = _ { } + \ t _ {} 、 - - t 1 - t _ { i } t _ { t _= t _ { i } t _ { 1 - { i } t - { 1 } t _ { display t _ { i } _ { t _ { i } } t _ { 1 } } _ { t _ { t _
그래서 반복 공식이
속도 계산 – Störmer-Verlet 방법
속도는 기본 Störmer 방정식에 명시적으로 주어지지 않지만, 종종 운동 에너지와 같은 특정 물리량의 계산에 필요하다.t+ t \ t \ t 의 위치를 알 때까지 에 대해 운동 에너지와 순간 온도를 계산할 수 없기 때문에 분자 역학 시뮬레이션에서 기술적인 문제가 발생할 수 있다.이 결함은 속도 Verlet 알고리즘을 사용하거나 위치 항과 평균값 정리를 사용하여 속도를 추정하여 해결할 수 있습니다.
이 속도 항은 위치 항보다 한 단계 뒤처져 있습니다. t+ t t t가 v n + - x - t { t {xf} {xf} _d} _t}_t}에 대한 속도입니다. 는 v( )에 2차 근사치입니다.인수는 같지만 시간 을 반감하면 v + n + - x t{ style \ { { n + { \ { {2} { }( + 2) ({ { \( + 1} \ )、 + t{ _ { + { \} {2}}
정확성을 희생하면서 시간 + t \ tt의 속도를 근사하도록 간격을 단축할 수 있습니다.
Velocity Verlet
관련된, 그리고 보다 일반적으로 사용되는 알고리즘은 속도 Verlet [5]알고리즘이며, 다만 속도와 위치가 시간 변수의 동일한 값으로 계산된다는 점(이름이 시사하는 바와 같이 리프프록이 계산하지 않음)을 제외하고는 도약법과 유사합니다.이는 유사한 접근방식을 사용하지만 속도를 명시적으로 통합하여 기본 Verlet 알고리즘의 첫 번째 단계 문제를 해결합니다.
속도 Verlet의 오차는 기본 Verlet과 동일한 순서임을 알 수 있다.속도 알고리즘은 기본 Verlet에서는 2개의 위치 벡터를 추적하는 반면 Verlet에서는 1개의 위치 벡터와 1개의 속도 벡터를 추적하기 때문에 메모리가 더 많이 소모되는 것은 아닙니다.이 알고리즘의 표준 구현 방식은 다음과 같습니다.
- ( + t ) () + ( ) t \ \ { } \ ( + { \ { { } , \ t \ right ) = \ } ( + 1 \ { t ) { 2} { 2 } { t } { t } } { t } } 、 t 。
- ( + t ) () + ( + 2 t ) {\t \ \ { x} ( t + \ t ) = \ ( ) + \ (+ { \ } { 2 } \ ) 、 、
- x( + t ( t )를 하여 상호작용 전위로부터 a( + t displaystyle ( + \ t )를 합니다
- ( + t ) ( t+ t) + a ( + t ) {\t \ \ { } ( t + \ t ) = \ { v } \ ( t + { \ { } { 2 } { 2 } \ + t style + t ) \ t } \ t ) \ t )를 t
이 알고리즘은 가변 시간 단계에서도 작동하며 도약 방식 통합의 '킥 드리프트 킥' 형식과 동일합니다.
반스텝 속도를 제거함으로써 이 알고리즘은 다음과 같이 단축될 수 있습니다.
- ( + t ) () + ( ) t+ ( ) 2 ( t δ \ } ( + \ t ) = \ { ( ) + \ { v ( ) 、 } { 1 } { display styl ) 。
- x( + t ( t )를 하여 상호작용 전위로부터 a( + t displaystyle ( + \ t )를 합니다
- ( + t ) () + () + ( + )t ) {\ \ \ { v ( t + \ t ) = \{ v } ( ) + { t} + { ( )를 계산합니다.
단, 이 알고리즘에서는 a + t { t은 (는 x + t)에만 의존하며 v + 에는 의존하지 않는다고 가정합니다
속도 벨레와 마찬가지로 도약의 장기 결과는 반암시적 오일러 방법보다 한 차수 더 낫다는 것을 알 수 있다.알고리즘은 속도의 0.5단계까지 거의 동일합니다.이는 위의 루프를 회전시켜 스텝3에서 시작하여 스텝2와 스텝4를 조합함으로써 스텝1의 가속도 항을 제거할 수 있음을 쉽게 알 수 있습니다.유일한 차이점은 벨레 속도의 중간점 속도가 반암시적 오일러 방법의 최종 속도로 간주된다는 것이다.
모든 오일러 방법의 전역 오차는 1차이지만, 이 방법의 전역 오차는 중간점 방법과 유사하며 2차 오차는 2차입니다.또한, 가속도가 실제로 보수적인 기계 또는 해밀턴 시스템의 힘으로부터 나온다면, 근사치의 에너지는 기본적으로 정확하게 해결된 시스템의 일정한 에너지 주변에서 진동하며, 반명시적인 오일러에 대해서는 1차, 베렛 리프프로그에 대해서는 2차 오차가 다시 결합된다.심플렉틱 적분기에 [6]항상 보존되거나 거의 보존되는 선형 또는 각운동량 같은 시스템의 다른 모든 보존량도 마찬가지입니다.
velocity Verlet 방법은 Newmark-beta 방법의 특수한 로, 0{\1 { \= 1 = } { 입니다.
알고리즘 표현
Velocity Verlet은 3D 어플리케이션에서 일반적으로 유용한 알고리즘이기 때문에 C++로 작성된 일반적인 솔루션은 다음과 같습니다.단순화된 드래그 힘은 가속도의 변화를 보여주는 데 사용되지만 가속도가 일정하지 않은 경우에만 필요합니다.
구조 몸 { Vec3d 포스 { 0.0, 0.0, 0.0 }; Vec3d 벨 { 2.0, 0.0, 0.0 }; // x축을 따라 2 m/s Vec3d 액세스 { 0.0, 0.0, 0.0 }; // 처음에 가속 없음 이중으로 하다 덩어리 = 1.0; // 1kg 이중으로 하다 질질 끌다 = 0.1; // rho*C*Area – 이 예에서는 드래그 단순화 /** * "Velocity Verlet" 통합을 사용하여 Pos 및 Vel 업데이트 * @param dt Delta Time / time 스텝 [예: 0.01] */ 무효 갱신하다(이중으로 하다 dt) { Vec3d new_pos = 포스 + 벨*dt + 액세스*(dt*dt*0.5); Vec3d new_acc = apply_module(적용(); // 가속이 일정하지 않은 경우에만 필요 Vec3d new_vel = 벨 + (액세스+new_acc)*(dt*0.5); 포스 = new_pos; 벨 = new_vel; 액세스 = new_acc; } Vec3d apply_module(적용() 컨스턴트 { Vec3d grav_acc = Vec3d{0.0, 0.0, -9.81 }; // z축 아래 9.81m/s² Vec3d 드래그 포스 = 0.5 * 질질 끌다 * (벨 * 복근(벨)); // D = 0.5 * (rho * C * 면적 * vel^2) Vec3d 드래그 acc = 드래그 포스 / 덩어리; // a = F/m 돌아가다 grav_acc - 드래그 acc; } };
오차항
Verlet 인테그레이터 위치에서의 로컬 오류는 위와 같이 O 4)(\이며 , 속도에서의 로컬 는 O ^2)입니다.
반면 위치에서의 글로벌 오류는 O t)(\}\right이고 속도에서의 글로벌 는O(t 2 {O(\right)입니다.이것들은, 다음의 점에 주의해 주세요.
그리고.
그러므로
마찬가지로:
이는 다음과 같이 일반화될 수 있다(유도로 나타낼 수 있지만 증거 없이 여기에 제시됨).
x[citation needed]( ) { x ( ) } (t +) { x ( t + T )( t + T) error n t \ T \ t 사이의 오차를 고려하면
따라서 일정한 시간 간격에 걸친 글로벌(누적) 오차는 다음과 같이 나타납니다.
속도는 Verlet 인테그레이터의 위치에서 비누적 방식으로 결정되므로 속도의 글로벌 도 O t t입니다.
분자역학 시뮬레이션에서 글로벌 오차는 일반적으로 국소 오차보다 훨씬 중요하기 때문에 Verlet 적분자는 2차 적분자로 알려져 있습니다.
제약
제약이 있는 여러 입자로 이루어진 시스템은 오일러 방법보다 벨레 통합으로 해결하기가 더 쉽습니다.예를 들어 점 사이의 구속조건은 특정 거리 또는 인력으로 구속하는 전위일 수 있다.입자를 연결하는 스프링으로 모델링할 수 있습니다.무한 강성의 스프링을 사용하여 모델을 Verlet 알고리즘으로 해결할 수 있습니다.
In one dimension, the relationship between the unconstrained positions and the actual positions of points at time can be found with the algorithm
벨렛 통합은 속도를 사용하여 문제를 해결하는 것이 아니라 힘과 위치를 직접 연관시키기 때문에 유용합니다.
그러나 여러 개의 구속력이 각 입자에 작용하면 문제가 발생합니다.이를 해결하기 위한 한 가지 방법은 시뮬레이션의 모든 지점을 루프하여 모든 지점에서 마지막 부분의 제약 완화가 이미 정보의 확산을 가속화하기 위해 사용되도록 하는 것입니다.시뮬레이션에서 이는 시뮬레이션을 위해 작은 시간 단계를 사용하거나, 시간 단계당 고정된 수의 제약 해결 단계를 사용하거나, 특정 편차에 의해 충족될 때까지 제약을 해결함으로써 구현될 수 있다.
구속조건을 1차까지 국소적으로 근사할 때, 이것은 가우스-세이델 방법과 같다.작은 행렬의 경우 LU 분해 속도가 더 빠른 것으로 알려져 있습니다.대형 시스템은 클러스터(예: 각 래그돌 = 클러스터)로 나눌 수 있습니다.클러스터 내부에서는 LU 방법을 사용하고 클러스터 간에는 가우스-세이델 방법을 사용한다.매트릭스 코드는 재사용할 수 있습니다.위치에 대한 힘의 의존성은 국소적으로 1차까지 근사할 수 있으며, Verlet 통합은 보다 암묵적으로 이루어질 수 있다.
Super와 같은 고도의 소프트웨어LU는[7] 희박한 행렬을 사용하여 복잡한 문제를 해결하기 위해 존재합니다.음파를 [8]형성하지 않고 천을 통해 전달되는 힘 등의 특정 문제에 대처하기 위해 매트릭스(클러스터)를 사용하는 등의 특정 기술을 사용할 수 있다.
홀로노믹 제약을 해결하는 또 다른 방법은 제약 알고리즘을 사용하는 것입니다.
충돌 반응
충돌에 대한 대응의 한 가지 방법은 패널티 기반의 시스템을 사용하는 것입니다.이 시스템은 기본적으로 접촉 지점에 일정한 힘을 가합니다.이것의 문제는 주어진 힘을 선택하는 것이 매우 어렵다는 것이다.힘을 너무 많이 주면 물체는 불안정해지고 약해지고 물체는 서로 관통하게 됩니다.또 다른 방법은 투영 충돌 반응을 사용하는 것입니다. 이 충돌 반응은 위반 지점을 다른 물체로부터 이동하기 위해 가능한 한 최단 거리를 이동하려고 시도합니다.
벨레 통합은 후자의 경우 충돌에 의해 부여되는 속도를 자동으로 처리하지만, 충돌 물리학과 일치하는 방식으로 처리한다고 보장되지는 않습니다(즉, 운동량의 변화가 현실적이라고 보장되지 않습니다).속도 항을 암묵적으로 변경하는 대신 충돌하는 물체의 최종 속도를 명시적으로 제어할 필요가 있다(이전 시간 단계에서 기록된 위치를 변경).
새로운 속도를 결정하는 가장 간단한 두 가지 방법은 완벽한 탄성 충돌과 비탄성 충돌입니다.조금 더 복잡한 전략으로 더 많은 통제력을 제공하려면 보상 계수를 사용해야 합니다.
「 」를 참조해 주세요.
문학.
- ^ Verlet, Loup (1967). "Computer "Experiments" on Classical Fluids. I. Thermodynamical Properties of Lennard−Jones Molecules". Physical Review. 159 (1): 98–103. Bibcode:1967PhRv..159...98V. doi:10.1103/PhysRev.159.98.
- ^ Press, W. H.; Teukolsky, S. A.; Vetterling, W. T.; Flannery, B. P. (2007). "Section 17.4. Second-Order Conservative Equations". Numerical Recipes: The Art of Scientific Computing (3rd ed.). New York: Cambridge University Press. ISBN 978-0-521-88068-8.
- ^ 2004-08-03 웹 페이지를 Wayback Machine에 보관하고 Störmer 메서드에 대해 설명했습니다.
- ^ Dummer, Jonathan. "A Simple Time-Corrected Verlet Integration Method".
- ^ Swope, William C.; H. C. Andersen; P. H. Berens; K. R. Wilson (1 January 1982). "A computer simulation method for the calculation of equilibrium constants for the formation of physical clusters of molecules: Application to small water clusters". The Journal of Chemical Physics. 76 (1): 648 (Appendix). Bibcode:1982JChPh..76..637S. doi:10.1063/1.442716.
- ^ Hairer, Ernst; Lubich, Christian; Wanner, Gerhard (2003). "Geometric numerical integration illustrated by the Störmer/Verlet method". Acta Numerica. 12: 399–450. Bibcode:2003AcNum..12..399H. CiteSeerX 10.1.1.7.7106. doi:10.1017/S0962492902000144.
- ^ SuperLU 사용자 가이드
- ^ Baraff, D.; Witkin, A. (1998). "Large Steps in Cloth Simulation" (PDF). Computer Graphics Proceedings. Annual Conference Series: 43–54.