3
$\begingroup$

I have the following PDE (a master equation, and $P$ is probability density, $0\le x\le1$ and $0\le y\le1$):

$$ \partial_t P(x,y,t)=x\partial_xP(x,y,t)+(1-y)\partial_yP(x,y,t)+2P(x,y,t) $$

The initial conditions are $P(x,y,t=0)=\delta(x-0.05,y-0.85)$. For the boundary conditions, if the probability density is going to flow through the boundary, I won't do anything to stop it. (How to express the BC in Mathematica?)

I used the following command:

NDSolve[{D[P[x, y, t], t] == 
x D[P[x, y, t], x] + (1 - y) D[P[x, y, t], y] + 2 P[x, y, t], 
P[x, y, 0] == DiracDelta[x - 0.05, y - 0.85]}, P, 
{t, 0, 2}, {x, 0, 1}, {y, 0, 1}]

First, Mathematica gave the following warning:

Warning: an insufficient number of boundary conditions have been specified for the direction of 
independent variable y. Artificial boundary effects may be present in the solution. >>

Moreover, the result it gave obviously is wrong:

Plot3D[Evaluate[(P[x, y, t] /. %) /. {t -> 0}], {x, 0, 1}, {y, 0, 1}]

enter image description here

My question is: 1) How can I express the boundary conditions I mentioned 2) How can I make the NDSolve work?

$\endgroup$

1 Answer 1

5
$\begingroup$

Your specific example can be solved by DSolve. First let's get the general solution of the PDE:

gsol = DSolve[{D[p[x, y, t], t] == 
               x D[p[x, y, t], x] + (1 - y) D[p[x, y, t], y] + 2 p[x, y, t]}, p, {x, y, t}]
{{p -> Function[{x, y, t}, C[1][x (-1 + y), t + Log[x]]/x^2]}}

Then substitute it into the boundary condition:

eqn = p[x, y, 0] == DiracDelta[x - 0.05, y - 0.85] /. gsol[[1]]
C[1][x (-1 + y), Log[x]]/x^2 == DiracDelta[-0.05 + x, -0.85 + y]

Solve for C[1][_, _]:

Solve[Cases[eqn, C[1][a__] -> a, Infinity] == {p1, p2}, {x, y}]
Solve[Simplify[eqn /. %, {p1, p2} ∈ Reals][[1]], C[1][p1, p2]]
bc = % /. (a_[b__] -> c_) -> (a -> ({b} \[Function] c))
{{x -> E^p2, y -> E^-p2 (E^p2 + p1)}}
{{C[1][p1, p2] -> E^(2 p2) DiracDelta[-0.05 + E^p2, 0.15 + E^-p2 p1]}}
{{C[1] -> Function[{p1, p2}, E^(2 p2) DiracDelta[-0.05 + E^p2, 0.15 + E^-p2 p1]]}}

Substitute it back to the general solution:

 sol[x_, y_, t_] = (p[x, y, t] /. gsol /. bc)[[1, 1]]
(E^(2 (t + Log[x])) DiracDelta[-0.05 + E^t x, 0.15 + E^-t (-1 + y)])/x^2

BTW, when exploring this I encountered another problem, see here for details.

$\endgroup$
2
  • $\begingroup$ What is condition in the last Mathematica input? $\endgroup$
    – wdg
    Commented Jul 22, 2014 at 7:18
  • $\begingroup$ @wdg It's bc, I forgot I changed the name, edited, thx for pointing out :) $\endgroup$
    – xzczd
    Commented Jul 22, 2014 at 7:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.