Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I have this piecewise continuous function which is also continuously differentiable over time :

psi[t_] := Piecewise[{{(1 + t)^3 (-3 t^2 + t), -1 <= t <= 0},
                      {(1 - t)^3 (3 t^2 + t), 0 <= t <= 1}}];

Now, for starters, when I Plot it, a discontinuity appears. This can easily be solved with a simple Exclusions -> None option in the Plotcommand.

But then, when I calculate its first derivative over time using D, I obtain the following:

D[psi[t], t]

Mathematica session

And then when I try to plot it :

plot of the function

  • Is there something wrong with my original psi[t_]function? (Is it not continuous for Mathematica?)
  • Why are the limits of definition of the first derivative modified?
  • Why is the first derivative discontinuous?

Now, the easy solution would be to construct the first derivative using the results proposed by the D function and re-defining the definition domain... But I really want to understand this issue (if there is one).

share|improve this question
1  
Try Plot[Evaluate[D[psi[t], t]], {t, -1, 1}] or Plot[D[psi[x], x] /. x -> t, {t, -1, 1}], or Plot[D[psi[t], t], {t, -1, 1}, Evaluated -> True]. –  kguler Mar 11 '13 at 22:03
add comment

2 Answers 2

up vote 4 down vote accepted

One way to do this is to define the derivative function:

dPsi[t_] = D[psi[t], t]

which can then be plotted:

Plot[dPsi[t], {t, -3, 3}, PlotRange -> All]

The problem with your original formulation is that D[psi[t],t] does not evaluate to a function, it is instead d_t. The first derivative is not discontinuous, as a function, but it does have different definitions that correspond to the points where your Piecewise function changes.

share|improve this answer
add comment

Somewhat surprisingly, the easiest solution seems to have been overlooked:

Plot[psi'[t], {t, -3, 3}, PlotRange -> All]

As psi[t] has already been defined, it makes sense to use Derivative[] for producing the derivative.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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