I want to know the velocity of point $p$, given that I know the coordinate.


I calculate $\frac{dp_x}{dt}$ to achieve the velocity of point $p$ about the $x$ coordinate. My trial as below:

px[t] = L1 Cos[θ1[t]] + L2 Cos[θ1[t] + θ2[t]];

Now I'd like to give the variable some value, $\theta_1=t^2,\theta_2=t^3,L_1=2,L_2=3$

D[px[t], t] /. {θ1[t] -> t^2, θ2[t] -> t^3, L1 -> 2, L2 -> 3}

However,Mathematica gives the result:

-2 Sin[t^2] [θ1'[t] - 3 Sin[t^2 + t^3] ([θ1'[t] + [θ2'[t])

It doesn't evaluate \[Theta]1]'[t] and \[Theta]1'[t] to $2t ,3t^2$, respectively.

So I use the command FullForm

θ1[t] // FullForm

So my question is why is it that Mathematica cannot do the full evaluation and how to fix it?

enter image description here


2 Answers 2


If you initially want to be able to work with the derivative of p[t] in a form that still contains θ1, θ2 in unevaluated form, then it may be useful to do something like this:

Clear[L1, L2, θ1, θ2, t];
px[t_] = L1 Cos[θ1[t]] + L2 Cos[θ1[t] + θ2[t]]

(* ==> L1 Cos[θ1[t]] + L2 Cos[θ1[t] + θ2[t]] *)

pDerivative = D[px[t], t]

==> -L1 Sin[θ1[t]] Derivative[1][θ1][t] - 
 L2 Sin[θ1[t] + θ2[t]] (Derivative[1][θ1][t] + 

So this is where you were in your question, and the derivative has been done while keeping the functions θ1[t] and θ2[t] unspecified.

Say you want to replace them by a specific form now.

It can be done using a replacement rule that directly inserts a function as follows:

pDerivative /. {θ1 -> (#^2 &), θ2 -> (#^3 &), 
  L1 -> 2, L2 -> 3}

(* ==> -4 t Sin[t^2] - 3 (2 t + 3 t^2) Sin[t^2 + t^3] *)

But this is less readable than simply doing it by adding a definition for the functions θ1[t] and θ2[t] before the next evaluation of pDerivative:

Clear[θ1, θ2];
θ1[t_] := t^2;
θ2[t_] := t^3;

pDerivative /. {L1 -> 2, L2 -> 3}

(* ==> -4 t Sin[t^2] - 3 (2 t + 3 t^2) Sin[t^2 + t^3] *)

So here pDerivative used the new definitions without you having to explicitly add replacement rules (it did that for you, internally). If you then want to get back to the general form, just use Clear as I did above to erase the definitions for θ1[t] and θ2[t].


The replacement needs to be made before taking the derivative.

As the argument to px[], t should be a pattern, i.e. t_, but px[t] as a variable also works.

px[t_] = L1 Cos[\[Theta]1[t]] + L2 Cos[\[Theta]1[t] + \[Theta]2[t]]

D[px[t] /. {\[Theta]1[t] -> t^2, \[Theta]2[t] -> t^3, L1 -> 2, L2 -> 3}, t]

-4 t Sin[t^2] - 3 (2 t + 3 t^2) Sin[t^2 + t^3]


Your Answer

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