0
$\begingroup$

I have trouble finding a numerical solution to the partial differential equation below.

It seems to be a singularity in the solution somewhere, so I searched online and found that it is suggested to use Method -> {"StiffnessSwitching"}. But that didn't work very well.

I have no idea how to handle singularity in the numerical solving of PDE. Any comment is very welcome.

This is my code.

ClearAll["Global`*"]

a = 1;

b = 5;

diff = (a*y[x, t] + b*(1 - y[x, t]))*(1 - y[x, t] (1 - y[x, t])) // Simplify

time = 2000;
length = 1000;
amp = 100;

sol = NDSolve[{D[y[x, t], t] == 
D[(a*y[x, t] + b*(1 - y[x, t]))*(1 - y[x, t] (1 - y[x, t]))*
D[y[x, t], x], x], y[0, t] == amp, y[x, 0] == amp*UnitStep[-x], 
y[length, t] == 0}, y, {x, 0, length}, {t, 0, time}, 
Method -> {"StiffnessSwitching"}]

alpha = y[x, t] /. sol;

beta1 = D[alpha, t];

beta2 = D[(a*alpha + b*(1 - alpha))*(1 - alpha (1 - alpha))*
D[alpha, x], x];

Plot3D[beta1 - beta2, {x, 0, length}, {t, 0, time}]

ContourPlot[alpha, {x, 0, length}, {t, 0, time}, 
AxesLabel -> {"length", "time", "value"}]

Plot3D[alpha, {x, 0, length}, {t, 0, time}]

Plot3D[beta1, {x, 0, length}, {t, 0, time}]
$\endgroup$
2
  • $\begingroup$ I edited your question for you. To learn how to properly format your question yourself please have a look here. Also please add at least a brief description of your problem in your question to make it an actual question $\endgroup$
    – Sascha
    Commented Jan 22, 2016 at 19:31
  • $\begingroup$ I guess this problem might be somewhat related to this and this unsolved problems. You may add some background information of the equation to help others analyzing the problem better. $\endgroup$
    – xzczd
    Commented Jan 23, 2016 at 6:32

0

Your Answer

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