Can we rotate a sine wave 60o counterclockwise?
by Don Cohen, Shaleen Agrawal (age 14), & Lori Johnson Morse
(written in Google Drive)
It all started when Don asked Shaleen, to work with sine waves. He
graphed the sine wave using the unit circle, then Don asked Shaleen to change
the amplitude, to double the # of waves in 360o and finally to shift the sine
wave 60o to the left , then write the equation for each below.
Then Shaleen asked Don if we could rotate the sine wave 60o ccw!
A great question! Don tried copying the sine wave on tracing paper, then with a protractor,
rotated the sine wave 60o ccw. He had the answer, but no points or equation.
Shaleen on the other hand did the rotation by hand as we'll see later.
Don had never done this problem, but had rotated parabolas and ellipses in the Japanese
version of his book Changing Shapes With Matrices. He figured he could do this.
He called Wolfram support for help in how to write the matrix product. The
problem, as pointed out by a physics teacher and parent of one of Don's
students, was that {x, sin[x]} was not a function (after rotating it π/3), so we
had to use a parametric plot. With Wolfram support, Don was able to come up with
the graph for the rotated sine wave.
This 'mistake' wasn't a problem because Shaleen's method would work for any
angle up to 90 degrees. He was probably so full of excitement that he just
didn't notice, which is fine! At any rate, after rotating the x-axis, Shaleen,
translated the x-values vertically to the rotated x-axis (see the blue arrow).
Then, using the y-values from the original sine (and cosine) curve, plotted
those the same vertical distance but perpendicular to the rotated x-axis (see
the orange arrow), at each of the corresponding, rotated x-coordinates.
Now this is great work because Shaleen did not use any of the usual techniques
(rotation matrices, for example) for rotating graphs. He later rotated a log
function 60 degrees as well with his method!
Don rotated the sine wave using the rotation matrix, written in Mathematica as
{{Cos[π/3],-Sin[π/3]},{Sin[π/3],Cos[π/3]}} and gave him the new X and new Y for
the rotated sine wave.
.
He added equation 5 and equation 2, and substituted (Sqrt[3] y + x)/2 from equation 4,
in for t in the next to last equation to get the final x-y Cartesian equation
for the rotated sine wave
[y - x*Sqrt[3] == 2 Sin[( y*Sqrt[3] + x)/2]
Yeh!! Now the next question, after trying various substitutions for x Don was
unable to get an appropriate y-coordinate, because it is not a function. This is
where Lori came to the rescue. She made a ContourPlot of Don's equation.
It looks great!
Once Don used a ParametricPlot to graph the function, he wanted to
know if there was a way to plot this graph with one equation, the one he derived above:
y - x*Sqrt[3] == 2 Sin[(y*Sqrt[3] + x)/2]
He asked Lori to verify his work. She did and it seemed to be right but that
wasn't enough. Don wanted to verify this equation another way. He wanted to know
if the rotated x-y values make true statements if substituted into his new Cartesian
equation. And since most mathematical processes are reversible, rotating the new
sine wave -60 or 60 degrees clockwise would put the sine function into its
original position. Neither Don nor Lori wanted to do either of these by hand!
The question is how to do that in Mathematica! She had too much fun 'working'
for Don: making videos of Don and his students, taking pictures with his camera
and hers, working with his students, rummaging through his bookshelves, etc. So,
Lori had to do this when she got back to Kansas City.
Rotating the graph back to the original position should be the easiest thing to
do. So, she generated enough points for a smooth, rotated curve, applied a
rotation matrix of -60 degrees to generate original points, then plotted those.
Here are the results:
This code generates the rotated points:
Table[N@RotationMatrix[Pi/3].{t,Sin[t]},{t,-2Pi,2Pi,Pi/24}]
Here's the plot:
This code below, rotates the points back to their original position as the
following plot shows:
So that looks as if it works, but a mathematical confirmation would be nice
(finding pairs of numbers that work).
One problem with an equation like
y - x*Sqrt[3] == 2 Sin[(y*Sqrt[3] + x)/2] is, that it is
transcendental and cannot be solved using the methods for solving
algebraic
equations: addition, subtraction, multiplication, division, and integer (or
rational) root extraction. Also, because the equations contains two variables,
there are many, many solutions, so which solution should they try to find? AND
yet another problem is that one value could be substituted in for one variable
in order to find the other but which values would work best?
Don had chosen a value from the plot to substitute for x, and then chose to
solve for y. Now for the technical part. Lori tried the Mathematica functions
she already knew: Solve[], NSolve[], Reduce[], and FindRoot[], without success.
Then there was FindInstance[]. Given an equation, FindInstance will find at
least one solution but that may not be the solution needed. Lori was able to
find a solution for when x = -0.226401 but it didn't match the points on the
graph.
FindInstance [y - 3 x == 2 Sin[(3 y + x)/2] , {y}, Reals] /. x -> -.226401
{{y-> 1.12537}}
Oh! There are three y-values that correspond when x = -0.226401, so Lori told
FindInstance[] to find three solutions. The third solution matches the above
data:
FindInstance [y - 3 x == 2 Sin[(3 y + x)/2] , {y}, Reals, 3] /. x ->
-0.226401
{{y -> -2.19718}, {y -> 1.12537}, {y ->1.33991}}
In the midst of relating all this to Don, Lori realized that she probably should
have started by substituting the y-value and solving for x. That worked better.
Without indicating that multiple solutions should be found, FindInstance[] found
the desired solution the first time:
FindInstance [y - 3 x == 2 Sin[(3 y + x)/2] , {x},
Reals] /. y -> 1.33991
FindInstance [y - 3 x == 2 Sin[(3 y + x)/2] , {x},
Reals] /. y -> 2.24681
FindInstance [y - 3 x == 2 Sin[(3 y + x)/2] , {x},
Reals] /. y -> 2.7207
{{x -> -.226401}}
{{x -> 0.297194}}
{{x -> 1.5708}}
Lori loved this challenge. New questions arose: Why did FindInstance[] find
solutions that did not seem to relate to the rotated sine graph? How are the
complex solutions related to the equation when 'Reals' is not indicated as an
option in FindInstance[]?
This was a great learning experience for Don, Shaleen, and Lori, and Shaleen was
also able to find the Cartesian equation for the rotated sine wave.