2017-11-01 21 views
0

저는 NDsolve를 사용하여 ginzburg landau와 관련된 다음의 비선형 결합 된 PDE 방정식을 풀려고합니다. Mathematica를 처음 사용합니다. 다음과 같은 오류가 발생합니다. 내가 뭘하고있는 실수는 무엇입니까? 당신이 bc의 값을 보면Mathematica에서의 비선형 PDE 해석

pde = {D[u[t, x, y], t] == 
D[u[t, x, y], {x, x}] + 
D[u[t, x, y], {y, 
    y}] - (1/u[t, x, y])^3*(D[v[t, x, y], y]^2 + 
    D[v[t, x, y], x]^2) - u[t, x, y] + u[t, x, y]^3, 
    D[v[t, x, y], t] == 
D[v[t, x, y], {x, x}] + D[v[t, x, y], {y, y}] - 
v[t, x, y]*u[t, x, y] + 
     (2/u[t, x, y])*(D[u[t, x, y], x]*D[v[t, x, y], x] - 
    D[u[t, x, y], y]*D[v[t, x, y], y])};bc = {u[0, x, y] == 0, v[0, x, y]== 0, u[t, 5, y] == 1, u[t, x, 5] == 1, D[v[t, 0, y], x] == 0, D[v[t, x, 0], y] == 0}; 
NDSolve[{pde, bc}, {u, v}, {x, 0, 5}, {y, 0, 5}, {t, 0, 2}] 

'Error: NDSolve::deqn: Equation or list of equations expected instead of True in the first argument {{(u^(1,0,0))[t,x,y]==-u[t,x,y]+u[t,x,y]^3+(u^(0,0,y))[t,x,y]-((<<1>>^(<<3>>))[<<3>>]^2+(<<1>>^(<<3>>))[<<3>>]^2)/u[t,x,y]^3+(u^(0,x,0))[t,x,y],(v^(1,0,0))[t,x,y]==-u[t,x,y] v[t,x,y]+(v^(0,0,y))[t,x,y]+(2 (-(<<1>>^(<<3>>))[<<3>>] (<<1>>^(<<3>>))[<<3>>]+(<<1>>^(<<3>>))[<<3>>] (<<1>>^(<<3>>))[<<3>>]))/u[t,x,y]+(v^(0,x,0))[t,x,y]},{u[0,x,y]==0,v[0,x,y]==0,u[t,5,y]==1,u[t,x,5]==1,True,True}}. 

NDSolve[{{Derivative[1, 0, 0][u][t, x, y] == -u[t, x, y] + 
    u[t, x, y]^3 + Derivative[0, 0, y][u][t, x, y] - 
       (Derivative[0, 0, 1][v][t, x, y]^2 + 
    Derivative[0, 1, 0][v][t, x, y]^2)/u[t, x, y]^3 + 
    Derivative[0, x, 0][u][t, x, y], 
     Derivative[1, 0, 0][v][t, x, y] == (-u[t, x, y])*v[t, x, y] + 
    Derivative[0, 0, y][v][t, x, y] + 
      (2*((-Derivative[0, 0, 1][u][t, x, y])* 
      Derivative[0, 0, 1][v][t, x, y] + 
      Derivative[0, 1, 0][u][t, x, y]* 
      Derivative[0, 1, 0][v][t, x, y]))/u[t, x, y] + 
      Derivative[0, x, 0][v][t, x, y]}, {u[0, x, y] == 0, 
    v[0, x, y] == 0, u[t, 5, y] == 1, u[t, x, 5] == 1, True, 
    True}}, {u, v}, {x, 0, 5}, {y, 0, 5}, {t, 0, 2}] 

답변

1

당신은

bc = {u[0, x, y] == 0, v[0, x, y] == 0, u[t, 5, y] == 1, 
u[t, x, 5] == 1, D[v[t, 0, y], x] == 0, D[v[t, x, 0], y] == 0} 

는 당신에게 당신의 오류 메시지에 대한 True 어디에서 오는 것입니다

{u[0, x, y] == 0, v[0, x, y] == 0, u[t, 5, y] == 1, u[t, x, 5] == 1, True, True} 

을 제공 볼 수 있습니다.

x에 대해 표현식을 차별화하는 것이었지만 표현식에 x가 없었기 때문에 결과는 0이었습니다. 0 == 0은 항상 참입니다. 마찬가지로 y. 그래서 당신이 경계 조건을 말하려고하는 방식을 바꾸자.

bc = {u[0, x, y] == 0, v[0, x, y] == 0, u[t, 5, y] == 1, u[t, x, 5] == 1, 
Derivative[0, 1, 0][v][t, 0, y] == 0, Derivative[0, 0, 1][v][t, x, 0] == 0} 

또는

나는 당신이 찾고있는 무엇을 제공해야한다고 생각 둘 중 하나
bc = {u[0, x, y] == 0, v[0, x, y] == 0, u[t, 5, y] == 1, u[t, x, 5] == 1, 
D[v[t, x, y], x] == 0/.x->0, D[v[t, x, y], y] == 0/.y->0} 

.

일단 수정하면 파생 순서와 음이 아닌 정수에 대해 다른 오류가 발생합니다.

난 당신이 수정 믿는 변경하여 pde 그 오류가 멀리 갈 수이

pde = {D[u[t, x, y], t] == D[u[t, x, y], {x, 2}] + D[u[t, x, y], {y, 2}] - 
    (1/u[t, x, y])^3*(D[v[t, x, y], y]^2 + D[v[t, x, y], x]^2) - u[t, x, y] + 
    u[t, x, y]^3, 
    D[v[t, x, y], t] == D[v[t, x, y], {x, 2}] + D[v[t, x, y], {y, 2}] - v[t, x, y]* 
    u[t, x, y] + (2/u[t, x, y])*(D[u[t, x, y], x]*D[v[t, x, y], x] - D[u[t, x, y], y]* 
    D[v[t, x, y], y])}; 

같은 {x,x}에서와 {y,y}-{x,2}{y,2}.

일단 수정하고 NDSolve을 시도하면 분모의 0이 당신을 물지 시작합니다.

MMA 구문을 이해하는 것 이상으로 보이는 것 같습니다. 그건 당신의 문제를 이해하고 그 분모를 제거 할 수 있는지 알아야 할 수도 있습니다.

+0

고맙습니다. – Man