3
NDSolve
을 사용하여 수치 적으로 PDE을 푸는 중입니다. 나는 다음과 같은 오류가 계속 :Mathematica : 함수의 공역 또는 함수의 Abs를 포함하는 PDE 해결
"NDSolve::ndnum: "Encountered non-numerical value for a derivative at t == 0.."
내가 단지 인해 Abs[D[f[x,y,t],x]]
또는 Conjugate[D[f[x,y,t],x]]
의 존재로이 오류를 얻을 것으로 보인다. 이 문제를 설명하기 위해 아주 간단한 함수를 만들었습니다.
이 작동합니다 :이 작업 (유일한 차이점은 우리가 복근을하지 않아도됩니다주의)하지 않습니다
noAbs = D[f[x, t], t] == f[x, t] f[x, t] D[f[x, t], x, x]
xrange = \[Pi]; trange = 5;
forSolve = {noAbs, f[x, 0] == Exp[I x], f[-xrange, t] == f[xrange, t]}
frul = NDSolve[forSolve, f, {x, -xrange, xrange}, {t, 0, trange},
MaxStepSize -> 0.007, Method -> "MethodOfLines" ];
.
withAbs = D[f[x, t], t] == f[x, t] f[x, t] Abs[D[f[x, t], x, x]];
forSolve = {withAbs, f[x, 0] == Exp[I x],
f[-xrange, t] == f[xrange, t]}
frul = NDSolve[forSolve, {f}, {x, -xrange, xrange}, {t, 0, trange},
MaxStepSize -> 0.007, Method -> "MethodOfLines" ];
Plot3D[Re[f[x, t]] /. frul, {x, -xrange, xrange}, {t, 0, trange}]
는 지금은 티카 내 표현의 파생 상품을 찍어 보았습니다 추측하고 Abs
기능을 도출하는 방법을 알고하지 않는 것을 발견하고있다. 이것을 가정 할 때 나는 맞습니까?이 문제를 어떻게 해결할 수 있습니까?
답장을 보내 주셔서 감사합니다. 왜 실수와 허수 부로의 명확한 분리없이 Mathematica가 실패하는지 알 수 있습니까? 또한 다른 사람이 나중에 읽는 경우 : 실제 표현이 분명히 그보다 훨씬 길기 때문에 "손으로"수식을 변경하면 명시적인 실수 및 허수분을 포함하도록 매력적이지 않습니다. 어떤 복잡한 함수 f에 대해서도 "명백한 복소화"를 수행하는 일반적 방법은 다음과 같습니다. f -> 함수 [{x, t} fre [x, t] + I fim [x, t]] –
또한, 실제 및 상상의 동등성을 수집하기 위해 다음을 추가합니다. ComplexExpand [Thread [Im [equation], Equal]]ComplexExpand [Thread [Re [equation], Equal]] ' –