I have the following function:

f[n_, angle_, axis_] := Simplify[RotationMatrix[angle/n, axis]^n];

where n is a positive integer, angle is real and axis is a 3d real vector.

So the idea is that a specific rotation, given by axis and angle, is subdivided into n steps and is repeatedly applied onto itself n times.

This should approach some limit as n->+Inf.

Trying to compute the limit I did:

Simplify[Limit[f[n, a, {x, y, z}], n -> Infinity, 
  Assumptions -> Element[n, PositiveIntegers]]]

But mathematica just gives me:

Limit::alimv: Warning: Assumptions that involve the limit variable are ignored.
{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}

How can I get the proper limit function ?

  • 1
    $\begingroup$ Have you looked at the function RotationMatrix? That might be a good start. $\endgroup$
    – bill s
    Commented Mar 18, 2021 at 23:29
  • $\begingroup$ that part I found and solved. but that's about it. ;) $\endgroup$
    – Lenny
    Commented Mar 19, 2021 at 0:40
  • 1
    $\begingroup$ Then please show your progress. $\endgroup$
    – bill s
    Commented Mar 19, 2021 at 2:01
  • $\begingroup$ Welcome to MMA SE! I don't quite understand...do you really mean f(x/N) there? Isn't f defined on integers? x/N seems to approach 0 as N goes to infinity. $\endgroup$
    – thorimur
    Commented Mar 19, 2021 at 4:12
  • $\begingroup$ Also, I'm not totally sure you need recursion here—isn't f(n) simply the matrix RotZ(angleZ/N) * RotY(angleY/N) to the nth power, or is there some subtlety here about the axes changing, maybe? $\endgroup$
    – thorimur
    Commented Mar 19, 2021 at 4:14

1 Answer 1

expr1 = Simplify[
   RotationMatrix[angle/n, {a, b, c}], {angle \[Element] Reals, 
    n \[Element] Integers, a \[Element] Reals, b \[Element] Reals, 
    c \[Element] Reals}];
expr2 = Simplify[
   MatrixPower[expr1, n], {angle \[Element] Reals, 
    n \[Element] Integers, a \[Element] Reals, b \[Element] Reals, 
    c \[Element] Reals}];
expr3 = Limit[expr2, n -> Infinity];
expr4 = Simplify[
  expr3 - (expr1 /. {n -> 1}), {angle \[Element] Reals, 
   n \[Element] Integers, a \[Element] Reals, b \[Element] Reals, 
   c \[Element] Reals}]

In expr1, we assume an arbitrary axis of rotation, {a, b, c} with real components. Set up the RotationMatrix for angle/n as our general case. Use Simplify to ensure that it remains a manageable expression.

In expr2, we use MatrixPower to raise the result of expr1 to the n-th power and Simplify again with the same assumptions to ensure the expression remains manageable.

In expr3, take the Limit as n -> Infinity. This expression is the one you've stated that you're looking for, but it is also equivalent to expr1 /. {n -> 1}, which is proven by evaluating expr4 and finding that it equals {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}} after simplification.


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.