I have a surface difference that I have defined as an expression of x and t and can plot it, but I'm running into some trouble when I try to plot a 2d slice of the plot by itself on the line x = 0.25. I have tried to plot the 2d surface by defining a new function diff2d where I use With to set the value of x to 0.25, but this is not giving me any output for the plot.

What is a way to plot this line that I'm missing?

neq = 40;
sea[n_] := 2*Integrate[-Sin[n*Pi*x], {x, 0, 1}]
vn = Table[0, {n, 1, neq}];
Do[{vn[[n]] = sea[n] Sin[n*Pi*x] Exp[-(n*Pi)^2 * t]}, {n, 1, neq}]
v = Total[vn];
u = v + 1;
difference = u - Erfc[x/Sqrt[4 t]];
diff2d = With[{x = 0.25}, u - Erfc[x/Sqrt[4 t]]];
Plot3D[u, {x, 0, 1}, {t, 0, 1}, AxesLabel -> {"x", "t", "u"}]
Plot3D[Erfc[x/Sqrt[4 t]], {x, 0, 1}, {t, 0, 1}, 
 AxesLabel -> {"x", "t", "Erfc"}]
Plot3D[Evaluate[difference], {x, 0, 0.5}, {t, 0, 1}, 
 AxesLabel -> {"x", "t", "Difference"}]
Plot[Evaluate[diff2d], {t, 0, 1}, 
 AxesLabel -> {"t", "Difference on x = 0.25"}]
  • $\begingroup$ MeshFunctions->(#1&),Mesh->{{0.25}} $\endgroup$
    – cvgmt
    Apr 8, 2021 at 2:10
  • $\begingroup$ Instead of With, how about a replacement: u - Erfc[x/Sqrt[4 t]] /. x->0.25. Or try Block[{x=0.25}, ...]. I think With only sets x when it appears directly within its body. $\endgroup$
    – tad
    Jan 3, 2022 at 18:57

1 Answer 1


I found a hacky workaround, by using With[{x = 0.25}, Evaluate[diff2d]. I ran this part and copied the output of this new line into a plot statement. It has obvious disadvantages, like being wrong if I ever redefine my function without copying and pasting again, but works in a pinch.


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.