Message Boards Message Boards

0
|
9189 Views
|
5 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Mathematica 10: Plot[] No Longer Plots Equations (?)

Posted 10 years ago

Try this

ClearAll[eqn, ics, ode]
eqn = x''[t] + 20.*x'[t] + 30.*x[t] == 35.*Sin[2.*Pi*2.*t]
ics = {x[0] == 0., x'[0] == 0.}
ode = Flatten[{eqn, ics}]

ClearAll[sol];
sol = NDSolve[ode, x, {t, 0, 5.}, AccuracyGoal -> 14, PrecisionGoal -> 14][[1]]

Plot[Evaluate[eqn /. sol], {t, 0, 5.}]

The Plot command yields empty plot in Mathematica 10, but in 9.0.1 and 8.0.4 a plot results.

I often have many differential equations I would like to plot to see the effects of Accuracy and Precision goals and the above is a simple, rough way to do it.

Even this no longer works in Mathematica 10, but does in 9.0.1 and 8.0.4:

Plot[Evaluate[2 x^2 + 3 x == 20], {x, -5, 5}]

It seems a bit burdensome to do

Plot[Evaluate[eqn[[1]] - eqn[[2]] /. sol], {t, 0, 5.}, PlotRange -> All]

especially if I have quite a few differential equations.

Suggestions welcome unless this is unintended behavior, then Wolfram guys please let me know.

Notebook attached.

-B

Attachments:
POSTED BY: Brian Lamm
5 Replies
Posted 10 years ago

I also find it strange that this ever worked. Maybe it was undocumented behavior similar to ContourPlot's acceptance of an equation as an argument. However, pattern substitution could be used to provide similar functionality.

In[3]:= eq = 2 x^2 + 3 x == 20

Out[3]= 3 x + 2 x^2 == 20

In[4]:= eq /. a_ == b_ -> a - b

Out[4]= -20 + 3 x + 2 x^2
POSTED BY: David Keith
Posted 10 years ago
POSTED BY: Brian Lamm
Posted 10 years ago

@Eric, I believe you may have misunderstood what I try to do. I am not trying to plot the solution. I try to plot the equation. Are you amazed that

Plot[Evaluate[2 x^2 + 3 x == 20], {x, -5, 5}]

ever worked? The above yields empty plot in Mathematica 10, but not in 8.0.4 and 9.0.1.

When I try to plot the differential equation with the solution replacement, what I am trying to do is see how well the equation was satisfied with the solution found.

You should then be equally amazed that

Plot[Evaluate[eqn[[1]] - eqn[[2]] /. sol], {t, 0, 5.}, PlotRange -> All]

enter image description here

does work in Mathematica 10, and is equivalent to plotting the equation with solution replacement, although somewhat more burdensome when many equations are present.

POSTED BY: Brian Lamm
Posted 10 years ago
POSTED BY: Eric Meyers
Posted 10 years ago

I'm amazed that ever worked. The proper way is

Plot[Evaluate[x[t] /. sol], {t, 0, 5.}]

enter image description here

POSTED BY: Eric Meyers
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract