Kip, -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of km Sent: Saturday, September 21, 2013 5:08 AM To: [email protected] Subject: Re: [Jprogramming] Plotting complex lists
Try 'aspect 0.5' plot ((,-)2j1) ,: _1^(%~i:)60 and 'aspect 1' plot _1^(%~i:)60 --Kip Murray Sent from my iPad > On Sep 21, 2013, at 3:15 AM, Bo Jacoby <[email protected]> wrote: > > 'aspect 1' plot ((,-)2j1) ,: _1^(%~i:)60 NB. This makes the frame of the > plot square, but it has different units on the two axes, so the circle is > deformed. How do I make the circle circular? > plot ((,-)2j1),:_1^(%~i:)60 NB. This is different, but not correct either. > > >> ________________________________ >> Fra: Linda Alvord <[email protected]> >> Til: [email protected] >> Sendt: 3:39 lørdag den 21. september 2013 >> Emne: Re: [Jprogramming] Plotting complex lists >> >> >> Square isn't so square either. Linda (Yet again, life is a series >> of >> approximations.) >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Bo >> Jacoby >> Sent: Wednesday, September 18, 2013 9:52 PM >> To: [email protected] >> Subject: Re: [Jprogramming] Plotting complex lists >> >> Thanks Linda! The 'aspect 1' makes the plot square. Do you know how >> to make circles circular? >> >> >>> ________________________________ >>> Fra: Linda Alvord <[email protected]> >>> Til: [email protected] >>> Sendt: 2:48 torsdag den 19. september 2013 >>> Emne: Re: [Jprogramming] Plotting complex lists >>> >>> >>> Try replacing the last line with: >>> >>> 'aspect 1' plot circle,ellipse,:hyperbola >>> >>> Linda >>> >>> -----Original Message----- >>> From: [email protected] >>> [mailto:[email protected]] On Behalf Of Bo >>> Jacoby >>> Sent: Tuesday, September 17, 2013 12:00 PM >>> To: [email protected] >>> Subject: Re: [Jprogramming] Plotting complex lists >>> >>> One benefit of using complex numbers is that you may forget about >>> trigonometry. >>> >>> load'plot' >>> circle=._1^n=.(%~i:)60 >>> ellipse=.(circle*-.a)+(+circle)*a=.0.8 >>> hyperbola=.-:((+%)j.(-%))^n >>> plot circle,ellipse,:hyperbola >>> >>> >>> >>> >>> >>> >>>> ________________________________ >>>> Fra: km <[email protected]> >>>> Til: "[email protected]" <[email protected]> >>>> Sendt: 0:40 tirsdag den 17. september 2013 >>>> Emne: Re: [Jprogramming] Plotting complex lists >>>> >>>> >>>> Summary of results. The strategy of hyperbola below (plotting a >>>> complex >>> table) is not well known. Henry Rich found it and reported it. >>>> >>>> Bo Jacoby gave the best way to change the sign of the real part of >>>> a >>> complex number. >>>> Simply do [: + - . >>>> >>>> >>>> >>>> NB. Complex Analytic Geometry >>>> >>>> >>>> NB. How to calculate complex number lists and tables for NB. >>>> plotting lines, circles, ellipses, and hyperbolas. How to NB. >>>> modify these tables to achieve translations, rotations, NB. and >>>> reflections. Begin with preliminaries: >>>> >>>> >>>> steps =: {.@] + -~/@] * [ %~ [: i. >:@[ >>>> >>>> NB. n steps a,b produces n+1 equally spaced values from a to b >>>> >>>> to =: 512 steps , NB. Usage a to b for 512 steps from a to b >>>> >>>> sin =: 1&o. >>>> >>>> cos =: 2&o. >>>> >>>> sinh =: 5&o. >>>> >>>> cosh =: 6&o. >>>> >>>> arcsinh =: _5&o. >>>> >>>> >>>> NB. Now, results >>>> >>>> >>>> line =: 2 : 'm + (n-m)*]' >>>> >>>> NB. A line B [ t is point "t of the way from A to B". Command NB. >>>> NB. plot 0 line 1j1 [ _1 to 2 >>>> NB. >>>> NB. shows the line segment from _1j_1 to 2j2 >>>> >>>> NB. You are plotting a list of 513 complex numbers. >>>> >>>> >>>> parabola =: 1 : '] j. (1 % 4 * m) * *:' >>>> >>>> NB. p parabola x produces point x j. y on parabola NB. (*: x) = >>>> 4*p*y . Command NB. >>>> NB. plot 1r4 parabola _2 to 2 >>>> NB. >>>> NB. plots parabola y = *: x for x from _2 to 2 >>>> >>>> NB. You are plotting a list of 513 complex numbers. >>>> >>>> >>>> ellipse =: 2 : '((m * cos) j. n * sin) 0 to 2p1' >>>> >>>> NB. Suggested by Henry Rich >>>> >>>> NB. Command >>>> NB. >>>> NB. plot a ellipse b >>>> NB. >>>> NB. plots the ellipse 1 = (*: x % a) + *: y % b . >>>> >>>> NB. If a = b you get the circle (*: x) + (*: y) = *: a >>>> >>>> >>>> hyperbola =: 2 : '[: (,: +) (n * sinh) j. m * cosh' >>>> >>>> NB. Suggested by Henry Rich >>>> >>>> toh =: [: to/ [: arcsinh %~ >>>> >>>> NB. b toh c,d is (arcsinh c%b) to (arcsinh d%b) >>>> >>>> NB. Command >>>> NB. >>>> NB. plot a hyperbola b [ b toh c,d >>>> NB. >>>> NB. plots y^2/a^2 - x^2/b^2 = 1 for x from c to d. >>>> >>>> NB. Remember the pattern b [ b toh c,d >>>> >>>> NB. You are plotting rows of a 2 by 513 table to get the two NB. >>>> branches of the hyperbola. >>>> >>>> >>>> NB. Rotations, translations, and reflections >>>> >>>> NB. Multiply a complex number list or table by (^&j. theta) NB. to >>>> rotate all of its points by theta radians. The center NB. of >>>> rotation is the origin 0 = 0j0 . >>>> >>>> NB. Add 5j3 to a complex list or table to move all of its points NB. >>>> the distance and direction of 5j3 from 0j0. >>>> >>>> NB. Use (+ list) or (+ table) (monadic + is conjugate) to NB. >>>> reflect all the points of the list or table across the NB. line >>>> through 0j0 and >>>> 1j0 -- the x-axis. Afterwards NB. multiply by (^&j. theta) to >>>> achieve a reflection across NB. the line through 0j0 and (^&j. theta). >>>> >>>> NB. Multiply a positive number p times a list or table to NB. >>>> achieve an expansion from 0 or compression toward 0 NB. according >>>> as p > 1 or p < 1 . >>>> >>>> NB. If you want to combine several operations do the NB. reflection >>>> first and the translation last. >>>> >>>> NB. Example >>>> NB. >>>> NB. plot (^&j. theta) * p parabola _2 to 3 NB. >>>> NB. plots a parabola rotated by theta radians, with 0j0 NB. the >>>> center of rotation. If theta is _1r2p1 (that is NB. - pi%2 >>>> radians) you have converted a (*: x) = 4 * p * y NB. parabola into >>>> a (*: y) = 4 * p * x parabola. >>>> >>>> >>>> --Kip Murray >>>> >>>> Sent from my iPad >>>> >>>> ------------------------------------------------------------------- >>>> --- For information about J forums see >>>> http://www.jsoftware.com/forums.htm >>> -------------------------------------------------------------------- >>> -- For information about J forums see >>> http://www.jsoftware.com/forums.htm >>> >>> -------------------------------------------------------------------- >>> -- For information about J forums see >>> http://www.jsoftware.com/forums.htm >> --------------------------------------------------------------------- >> - For information about J forums see >> http://www.jsoftware.com/forums.htm >> >> --------------------------------------------------------------------- >> - For information about J forums see >> http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
