초기 값 및 최종 값 제약으로 결합 된 ODE 해결


12

내 질문의 본질은 다음과 같습니다. 나는 두 개의 ODE 시스템을 가지고 있습니다. 하나는 초기 값 제약 조건이고 다른 하나는 최종 값 제약 조건입니다. 이것은 일부 변수에 대한 초기 값 제약과 다른 변수에 대한 최종 값 제약을 갖는 단일 시스템으로 생각할 수 있습니다.

세부 사항은 다음과 같습니다.

선형 동적 시스템을 구동하기 위해 연속 시간 유한 수평 LQR 컨트롤러를 사용하려고합니다. 파이썬 생태계를 계속 사용하고 싶습니다.

시스템은 형태 엑스˙()=엑스()+() 에, 피사체 엑스(0)=엑스0

LQR 솔루션 은 선형 최적 제어 입력 u (t) 가 가되도록 행렬 생성합니다 .케이()엑스()()=케이()엑스()

여기서케이()=아르 자형1()

및 연속 시간 Riccati 미분 방정식의 해결책 (이 참고 인 행렬이다)( t )()()

P˙(t)=ATP(t)P(t)A+P(t)BR1BTP(t)+Q 대상P(tf)=Q

A , , , , , , 가 모두 제공됩니다.Bx0QQfRtf

영어로 : 상태에서 시작하는 동적 시스템이 있습니다. LQR 컨트롤러는 시간 과 사이에서 사용할 피드백 매트릭스를 생성합니다 ( 는 일반적으로 문제의 시간-수평이라고합니다)x00tftf

P(t)x(t)0tfx(t)

내가 문제를 해결할 것으로 예상하는 다른 방법은 시스템을 함께 해결하는 것이지만 초기 값과 최종 값 제약의 혼합을 처리하는 방법을 모르겠습니다. 이러한 문제는 계산하기 위해 계산적으로 무겁습니까? SciPy / Python에서 할 수 있습니까?

답변:


8

다른 답변에 동의하지 않습니다. 역 시간 문제와 순방향 문제 사이에 단방향 커플 링 만 있기 때문에 처음 제안한대로 순서대로 해결하는 것이 훨씬 효율적입니다. 당신은 단순히 해결책이 필요합니다()[0,에프]

출력 값 사이보간 하여이 작업을 수행 할 수 있습니다 . 고밀도 출력을 지원하는 Runge-Kutta 방법을 사용하는 것이 좋습니다. 예를 들어, scipy.integrate.ode.dopri5이러한 방법을 기반으로합니다. 따라서 통합자가 매우 작은 단계를 수행하지 않고도 아주 미세한 간격의 출력 시간을 지정할 수 있어야합니다 (scipy 인터페이스가 올바르게 구현되었다고 가정).


예, 이것은 실제로 더 간단합니다. 모든 방법을 사용하여 를 생성 할 수 있습니다.()'()적분기가 필요한 것으로 판단되는 지점에서 , O (h ^ 4) 정확도가 충분한 경우 3 차 에르 미트 스플라인으로 보간 할 수 있습니다.
Arnold Neumaier

6

이것을 2 점 경계 값 문제라고하며 잘 연구되고 있습니다.

촬영 방법은 프로그래밍이 매우 간단하지만 수치 적으로 매우 불안정 할 수 있습니다.

이러한 문제를 해결하는 표준 방법은 다중 촬영 방식을 사용하고 표준 비선형 솔버로 해당 비선형 방정식 시스템을 푸는 것입니다. 비선형 방정식 시스템에 대한 솔버 목록은 다음을 참조하십시오.
http://www.mat.univie.ac.at/~neum/glopt/software_l.html#nonlin

정규 그리드의 상태를 변수로 사용하고 (보통 아주 미세한 그리드는 필요하지 않음), 시간 t 변수를 시간 t + h 변수에 매핑하는 경계 조건 및 매핑을 방정식으로 사용합니다. 이것은 변수만큼 많은 방정식을 제공합니다. 그리드에서 주어진 상태 구성에 대해이 매핑을 평가하는 루틴 만 제공하면되고 비선형 솔버는 다른 모든 작업을 수행합니다. (초기 추측이 나쁜 경우 여러 시작점이 필요할 수 있습니다.)

위의 설명이 충분하지 않은 경우 Wikipedia http://en.wikipedia.org/wiki/Direct_multiple_shooting_method 에 유용한 프로세스 설명이 있습니다. Stoer / Bulirsch의 저서에는 자세한 내용이 나와 있습니다.


5

파이썬에서는 어떻게해야할지 모르겠지만, 문헌에서 찾고자하는 키워드는 "촬영 방법"입니다. 이는 초기 및 최종 값 제약 조건이있는 문제를 해결하는 방법의 이름입니다.


1

AUTO는 2 포인트 BVP를 해결할 수 있으며 파이썬 인터페이스를 가지고 있으며 비교적 설치가 쉽습니다. http://www.ma.hw.ac.uk/~gabriel/auto07/node6.html .

P (t)를 먼저 해결하고 다른 ODE에 입력으로 입력하려는 경우 PyDSTool을 사용하는 효율적인 방법입니다. PyDSTool은 모든 플랫폼에 설치하기가 매우 쉽습니다 ( http://pydstool.sf.net 참조) . 기본적으로 이전에 계산 된 솔루션에 대해서만 선형 보간을 사용하므로 정밀한 해상도로 계산합니다. 그러나 적응 적분기를 사용하더라도 PyDSTool이 원하는 시점으로 정확하게 이동하도록 할 수 있습니다 (비효율적이며 부정확 할 수 있음). 그러나 최대 시간 간격이 충분히 작 으면 두 번째 시스템에 대한 선형 보간 및 빠른 적분기 (Dopri가 내장 됨)를 통해 "정규"시스템에 적합합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.