Strang splitting의 최적 사용 (반응 확산 방정식)


9

간단한 1D 반응 확산 방정식으로 솔루션을 계산하는 동안 이상한 관찰을했습니다.

=2엑스2

=

=

의 초기 값 상수이다 ( ) 및 I에만 걸쳐 적분에 관심 에서 으로 ( ). 의 목적 과 방정식 는이 적분을 평가 입니다.(0,엑스)=00101(,엑스)=

나는 확산과 반응 (반 단계 반응, 전체 단계 확산, 그리고 다시 반 단계 반응), 커플 링을위한 크랭크 니콜슨 (Crank Nicholson) 체계, 그리고 반응에 대한 분석 솔루션 사이의 커플 링을 위해 스트 랑 분할 기법을 사용했습니다 ( 방정식 )를 포함합니다.=

분석 용액의 한 단계가 Crank Nicholson 계획의 한 단계보다 3 배 이상 느리기 때문에 각 반응 단계마다 하나 이상의 Crank Nicholson 단계를 만들려고했습니다. 나는 Strang splitting 방식의 단계를 줄여서 전체적으로 더 빨라지기를 바랐습니다.

그러나, 반대의 효과가 관찰 될 수 있는데, 즉 하나 이상의 크랭크 니콜슨 단계가 사용되는 경우 스트 랑 분할 방식에 대해 훨씬 더 많은 단계가 요구된다. (I 만 이상 적분의 정확성에 관심있어 보다 빠른 수렴 것으로 보인다, 자체.) 얼마 동안 궁금 후, 나는이 같은 효과는 위해 발생하는 것으로 나타났습니다 , 그리고 나는이 사건에 대한 이유를 이해합니다. 요점은 내가 정확히 하나의 Crank Nicholson 단계를 수행하면 전체 체계가 사다리꼴 규칙으로 바뀐다는 것입니다 ( ).b(t,x)=b0=0b(t)=0

따라서 만약 를 확산 단계의 일부로 취급한다면 , 크랭크 니콜슨 단계의 수를 늘리면 (아마도) 전반적인 정확도가 낮아지지 않을 것입니다. 그러나 그것은 시스템의 (비선형적이고 매우 뻣뻣한) 반응 부분에 분석 솔루션을 사용하는 목적을 어기는 것 같습니다.tc=a

그래서 여기 내 질문이 있습니다 : Strang splitting의 맥락에서 를 처리하는 더 좋은 방법이 있습니까? 확산 단계의 일부로. 확산을 위해 정확히 하나의 크랭크 니콜슨 단계를 사용하도록 "강제"되는 것을 피하고 싶습니다. (예를 들어, 3D에서는 크랭크 니콜슨을 사용하는 대신 FFT에 의한 확산을 분석적으로 해결하는 것을 선호합니다. 물론 FFT와 크랭크 니콜슨을 결합 할 수도 있으므로 그렇게 큰 문제는 아닙니다.)tc=a


에서 people.maths.ox.ac.uk/dellar/OperatorLB.html , 유사한 효과를 설명 할 것으로 보인다. 결론은 정확한 솔루션 대신 크랭크 니콜슨을 사용하는 것이 중요하다는 것입니다. 아마도 내 질문에 대한 대답은 간단하지 않습니다.
Thomas Klimpel

방정식에 문제가있는 것 같습니다. c 커플 링을 단방향으로 만드는 처음 두 개에는 나타나지 않으며 계산할 수 있음을 의미합니다. c 언제든지 t후 처리 단계로
Bill Barth

@ BillBarth 나는 역할을 명확히하기 위해 질문을 변경했습니다. c. 그래서c 계산하는 수단 일뿐입니다 01a(t,x)dt. 잠재적으로 후 처리 단계를 사용하여 (위에서 설명한 Strang splitting과 Crank Nicholson의 조합에서 얻은 것보다)이 적분을보다 정확하게 계산하는 방법에 대한 제안이 있으면 알려주십시오.
Thomas Klimpel

이것은 오랜 시간이 지났지 만,이 방정식 시스템은 다음과 같이 포물선 형 PDE로 작성 될 수 있음을 알고 계셨습니까? c지수 반응 항으로? 이 3 변수 시스템을 단순화 된 시스템 대신 실제로 해결 하려는지 궁금합니다.
Bill Barth

@BillBarth이 시스템을 지수 반응 항을 사용하여 포물선 PDE로 작성하는 방법에 관심이 있습니다. 이 모델의 솔루션 속도는 모델 캘리브레이션 중 제한 요소이며 (몇 시간이 걸릴 수 있음) 시간 통합과 관련하여 사용 된 정확도는 완전 수렴과는 거리가 멀습니다.
토마스 클림 펠 (Thomas Klimpel)

답변:


6

나는 이것이 질문에 직접 대답하지는 않지만 이것을 대답으로 쓸 것입니다.

두 번째 방정식과 세 번째 방정식을 첫 번째 방정식에 연결하고 세 번째 방정식을 두 번째 방정식에 연결하면 다음과 같이 나타납니다.

2ct2=2x2ct+btbt=(ct)b
이 두 가지를 재정렬하면 다음과 같은 이점이 있습니다.
t(ct2cx2b)=01b(bt)=ct
이제이 두 가지를 한 번에 통합 할 수 있습니다 t첫 번째 방정식으로 떠납니다.
ct2cx2=b+A(x)
세 번째 방정식을 사용하여 다음과 같이 적분의 "일정한"을 표현할 수 있습니다. A(x)=a02c0x2b0. 두 번째 방정식은 좀 더 까다 롭습니다. 조금만 다시 작성하면 다음과 같은 이점이 있습니다.
0t1b(x,t)(b(x,t)t)dt=0tc(x,t)tdt
이것은 해결책으로 이어집니다
lnb(x,t)lnb0(x)=c(x)+c0(x)
또는
lnbb0=c+c0
지수화는 다음을 제공합니다.
b=b0ec0c
마지막으로 PDE에 연결하면 c 준다
ct2cx2=b0ec0c+A(x)

교체 c 으로 cc0또는 초기 조건을 사용하여 동일하게 c0(x)=0이 방정식은

ct=2cx2+a0(1ec)b0
이제이 방정식을 해결하는 가장 좋은 방법에 대한 상당한 문헌을 찾을 수있을 것입니다. 크랭크-니콜슨이 기하 급수적으로 좋은 선택인지는 모르겠지만 그럴듯 해 보입니다. 다음을 보장하기 위해주의를 기울여야합니다.c>c0 어디에서나 솔루션이 빠르게 터질 수 있습니다.

나는이 파생을 두 번만 걸었으므로 오류가 하나 또는 두 개있을 수 있지만 올바른 느낌을받습니다. 만약b0=0 어느 곳에서나 이것이 올바른 해결책이며, 그렇지 않으면 그럴듯한 솜씨가 있습니다.

이것을 해결할 때까지 t=1 그리고 평가 c(x,1) 당신이 찾고있는 답변을 제공해야합니다.


이 답변에 정말 감사합니다. 나는 그것을 분명히 밝힌다. 적어도 솔루션의 행동을 이해하고 예측하기가 더 쉬워진다. 또 다른 장점은 시간 진화보다 느리다 따라서 컨버전스가 이전보다 더 나을 것이라고 낙관합니다.
Thomas Klimpel

문제 없어요. 우리가 처음 의견을 교환 한 후에 나는 잔소리했다. 도움이 되길 바랍니다.
Bill Barth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.