비선형 PDE 시스템의 구문 분석 오류 [버그?] Mathematica 12.0.0

Aug 18 2020

12.0에서 도입되고 12.1.1까지 지속되는 버그-버전 : 12.2에서 수정 됨

12.0.0을 사용하여 다음 동작을 찾습니다. (편집 : 친구에게 12.1.1에서 시도해 보라고 요청했는데 같은 결과를 찾습니다.)

다음은 NDSolve구문 분석 할 수없는 결합 된 비선형 PDE 시스템입니다 (시스템 자체에 대해서는 걱정하지 마십시오.이 동작을 생성하는 가장 간단한 예제 일뿐입니다).

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][c.Inactive[Grad][u[x, y], {x, y}], {x, y}] == 0, 
     -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] ==0}, {u[x, y], v[x, y]}, 
Element[{x, y}, Disk[]]]

출력은

NDSolveValue :: femper : Div [{{1,0}, {0, v}}. Grad $ 9730]의 PDE 구문 분석 오류입니다. 방정식 치수가 일치하지 않습니다.

버그가되는 것은 매우 기본적인 기능처럼 보입니다. 어쩌면 나는 단순한 것을 놓치고 있을지도 모른다. Inactive파서가 계수를 식별하는 데 문제가 없도록 많은 호출을 포함하려고했습니다. 그렇지 않으면 비선형 시스템에서는 모호 할 수 있습니다.

파싱은 비슷한 선형 문제로 문제가되지 않습니다.

c = {{1, 0}, {0, 1}};
alpha = {0, -1};

종속 변수를 하나의 차원으로 줄이면서 ( {u}대신 {u,v}) 비선형으로 유지할 때도 구문 분석에 문제가 없습니다 (예 :) c1 = {{1, 0}, {0, u[x, y]}}. 따라서이 문제는 결합과 비선형의 조합으로 인한 것 같습니다.

또한 "FEM 프로그래밍"경로로 이동하여를 통해 pde 계수를 지정하는 명백한 해결 방법이 InitializePDECoefficients있습니다. 그래도 ... 여기에 뭐가 있어요?

답변

user21 Dec 17 2020 at 08:50

이것은 버그이며 버전 12.2에서 수정되었습니다.

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][
     c . Inactive[Grad][u[x, y], {x, y}], {x, y}] == 
   0, -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] == 
   0}, {u[x, y], v[x, y]}, Element[{x, y}, Disk[]]]

누락 된 경계 조건에 대한 예상 경고가 표시되지만 솔루션이 반환된다는 점이 다릅니다.

NamNguyen Nov 03 2020 at 18:57

NDSolve와 동일한 버그가 있습니다. Mathematica 11의 경우 작동합니다. 그러나 동일한 노트북이 Mathematica 12.0에서 실행되면 다음을 생성합니다.

NDSolveValue::ndnum: Encountered non-numerical value for a derivative at t == 0.`.



In[2]:= $Version

Out[2]= "12.0.0 for Microsoft Windows (64-bit) (April 6, 2019)"