3
$\begingroup$

If I run

StreamPlot[{a, b}, {a, 0, 10}, {b, 0, a}]

the kernel hangs, and I have to restart it. I also get the error message

StreamPlot::strmpts: Automatic is not a valid StreamPoints specification.

If I try to manually specify StreamPoints, the kernel still hangs, and the error message changes: e.g., with StreamPoints -> 10, I get

StreamPlot::strmpts: 10 is not a valid StreamPoints specification.

(For the record, I'm using 10.4.1 for Microsoft Windows (64-bit)).

What's going on here? What does this message mean, and how can I fix it?

$\endgroup$
  • $\begingroup$ same issue in v9 (windows 10/64bit) $\endgroup$ – kglr Aug 4 at 13:41
  • $\begingroup$ Same error with v12 (macOS 10.14.6) $\endgroup$ – Bob Hanlon Aug 4 at 17:08
3
$\begingroup$

No idea why it doesn't work as in Plot3D[ a b , {a, 0, 10}, {b, 0, a}]...

Try RegionFunction

StreamPlot[{a, b}, {a, 0, 10}, {b, 0, 10},RegionFunction -> Function[{a, b}, b < a]]

enter image description here

$\endgroup$
  • $\begingroup$ Thanks! Which version are you using? Mine is 10.4. Can you confirm that the same error happens for v>10.4? $\endgroup$ – AccidentalFourierTransform Aug 4 at 13:38
  • $\begingroup$ The same error in v11.01! $\endgroup$ – Ulrich Neumann Aug 4 at 13:40
3
$\begingroup$

StreamPlot is not designed to work with such domain specs. It ought to give a better message though. Actually it doesn't seem to validate the domain before sending it to the internal routines. (Probably, it used a standard plot validation, but the internal routines assume the limits are numeric, i.e., that it's a rectangle.)

tr = Trace[
   StreamPlot[{a, b}, {a, 0, 10}, {b, 0, a}],
   _Visualization`VectorFields`VectorFieldsDump`StreamPointsParse,
   TraceInternal -> True];

StreamPlot::strmpts: Automatic is not a valid StreamPoints specification.

Cases[
 Flatten@tr, 
 HoldForm[parse_Visualization`VectorFields`VectorFieldsDump`StreamPointsParse] :>
  parse]

StreamPlot::strmpts: Automatic is not a valid StreamPoints specification.

(*  {None}  *)

One can inspect StreamPointsParse and its subroutines with GeneralUtilities`PrintDefinitions, if one's curious. It's fairly short code and easy to follow.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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