Hi all. I’ve developed a method to decompose complex numbers for Casio fx-115 Plus 1st & 2nd, 991ES 2nd and the 991EX Classwiz.
Since they all have the ARG function, I don’t need to write an ARG equivalent.
Sharp, on the other hand: the EL-W516T has the ARG function, but not the EL-W516X.
So, what would be the formula for ARG on the W516X?
Hello!
(12-02-2022 08:41 PM)Matt Agajanian Wrote: [ -> ]So, what would be the formula for ARG on the W516X?
I don't think there is a simple formula because one needs to take care of different cases separately. A matter of if...then...else. I don't know if the EL-W516X can handle that on it's own.
Wikipedia has an entire article about ATAN2:
https://en.wikipedia.org/wiki/Atan2
Regards
Max
(12-02-2022 08:41 PM)Matt Agajanian Wrote: [ -> ]So, what would be the formula for ARG on the W516X?
I'm not familiar with that calculator but with
Python you could use the following:
Code:
from math import pi, sqrt, atan
def arg(x, y):
r = sqrt(x**2 + y**2)
return pi if r + x == 0 else 2 * atan(y / (r + x))
It is based on the
tangent half-angle formula:
\(
\begin{align}
\tan \tfrac{1}{2}\theta = \frac{\sin \theta}{1+\cos \theta}
\end{align}
\)
(12-02-2022 09:48 PM)Maximilian Hohmann Wrote: [ -> ]Hello!
(12-02-2022 08:41 PM)Matt Agajanian Wrote: [ -> ]So, what would be the formula for ARG on the W516X?
I don't think there is a simple formula because one needs to take care of different cases separately. A matter of if...then...else. I don't know if the EL-W516X can handle that on it's own.
Wikipedia has an entire article about ATAN2: https://en.wikipedia.org/wiki/Atan2
Regards
Max
Beat you to it. That Wkipedia, they have everything. Looks like I need to employ that piecewise function approach.
The Python script looks like it could do the trick. Maybe a good alternative.
(12-02-2022 08:41 PM)Matt Agajanian Wrote: [ -> ]So, what would be the formula for ARG on the W516X?
Why don't you use polar/rectangular conversion then RCL the value of theta from variable y?!?
Cs.
(12-02-2022 10:13 PM)Csaba Tizedes Wrote: [ -> ] (12-02-2022 08:41 PM)Matt Agajanian Wrote: [ -> ]So, what would be the formula for ARG on the W516X?
Why don't you use polar/rectangular conversion then RCL the value of theta from variable y?!?
Cs.
Good Q.
Both P→R and R→P (→rθ, →xy) are disabled in COMPLEX mode). Second, I want preserve the quadrant value. Also, it looks like the registers don’t operate. Thus, I cannot recall the real component from X nor the imaginary component from Y.
How about using acos for atan2(y,x) ?
This covered edges cases, except for (y,x) == (0,0)
Code:
function sign(y) return signbit(y) and -1 or 1 end
function myatan2(y,x) return acos(x/hypot(x,y)) * sign(y) end
lua> function test(y,x) return atan2(y,x), myatan2(y,x) end
lua> test(4,3) --> 0.9272952180016122 0.9272952180016123
lua> test(4,-3) --> 2.214297435588181 2.214297435588181
lua> test(-4,3) --> -0.9272952180016122 -0.9272952180016123
lua> test(-4,-3) --> -2.214297435588181 -2.214297435588181
X axis:
lua> test(0, 1) --> 0 0
lua> test(0,-1) --> 3.141592653589793 3.141592653589793
Y axis:
lua> test(1, 0) --> 1.5707963267948966 1.5707963267948968
lua> test(-1,0) --> -1.5707963267948966 -1.5707963267948968
(12-03-2022 03:43 AM)Albert Chan Wrote: [ -> ]How about using acos for atan2(y,x) ?
This covered edges cases, except for (y,x) == (0,0)
Code:
function sign(y) return signbit(y) and -1 or 1 end
function myatan2(y,x) return acos(x/hypot(x,y)) * sign(y) end
lua> function test(y,x) return atan2(y,x), myatan2(y,x) end
lua> test(4,3) --> 0.9272952180016122 0.9272952180016123
lua> test(4,-3) --> 2.214297435588181 2.214297435588181
lua> test(-4,3) --> -0.9272952180016122 -0.9272952180016123
lua> test(-4,-3) --> -2.214297435588181 -2.214297435588181
X axis:
lua> test(0, 1) --> 0 0
lua> test(0,-1) --> 3.141592653589793 3.141592653589793
Y axis:
lua> test(1, 0) --> 1.5707963267948966 1.5707963267948968
lua> test(-1,0) --> -1.5707963267948966 -1.5707963267948968
Interesting! I worked out another formula, coincidentally with x=+/-3 and y=+/-4. I tested it with variations of (+/-3,+/-4) and received results which reflected the correct quadrant.
There is no need to use COMPLEX mode. Just add/substract like vectors in STAT mode, then store (sumX, sumY) into (X, Y) and you can do polar conversion. The complex mode is very limited, I guess all operations can be done without it in STAT+NORMAL mode.
(12-02-2022 11:21 PM)Matt Agajanian Wrote: [ -> ] (12-02-2022 10:13 PM)Csaba Tizedes Wrote: [ -> ]Why don't you use polar/rectangular conversion then RCL the value of theta from variable y?!?
Cs.
Good Q.
Both P→R and R→P (→rθ, →xy) are disabled in COMPLEX mode). Second, I want preserve the quadrant value. Also, it looks like the registers don’t operate. Thus, I cannot recall the real component from X nor the imaginary component from Y.
(12-03-2022 07:10 AM)Csaba Tizedes Wrote: [ -> ]There is no need to use COMPLEX mode. Just add/substract like vectors in STAT mode, then store (sumX, sumY) into (X, Y) and you can do polar conversion. The complex mode is very limited, I guess all operations can be done without it in STAT+NORMAL mode.
Aha (not the 80s band).
That was my second thought--adapt the Vector Arithmetic conversion, summation, recall, and conversion routine introduced in the HP-21 manual. Yes. That is the definitive option.
My intention was that:
Since polar/rectangular representation and complex numbers kinda go together, to me, it made sense that P/R conversion and representation would be functional in complex mode.
On another note, I agree and find it odd that complex mode is quite limiting about the functions allowed in that mode. Just a thought: perhaps because these Casio, Sharp, and TI models are targeted and priced for students, hence, the limited complex mode functionality.
I guess we're spoiled because since the 15C, a whole range of functions were operational in complex mode.