[Jprogramming] Plotting complex lists
km
km at math.uh.edu
Tue Sep 24 02:00:07 UTC 2013
It is correct and better!
--Kip Murray
Sent from my iPad
> On Sep 23, 2013, at 6:00 PM, Henry Rich <HenryHRich at nc.rr.com> wrote:
>
> ratio =: [: %~/ [: (>./ - <./) [: +. ,
>
> untested
>
> Henry Rich
>
>> On 9/23/2013 6:16 PM, km wrote:
>> Verb ratio calculates (max - min of imaginary parts) % (max - min of real parts) , thus:
>>
>> ratio =: [: %~/ [: (>./ - <./)"1 [: |: [: +. ,
>>
>> Sample use:
>>
>> data =: _1 0j_1 1 0j1 _1 ,: 0j_3 0j_1.5 0 0j1.5 0j3
>> NB. square and straight line
>> ratio data
>> 3
>> 'aspect 3' plot data NB. Shows the square as a square
>>
>> --Kip Murray
>>
>> Sent from my iPad
>>
>>> On Sep 21, 2013, at 10:14 AM, km <km at math.uh.edu> wrote:
>>>
>>> I hope the following simpler example will clarify. Notes explain what the ratio is.
>>>
>>> data1 =: _1 0j_1 1 0j1 _1 ,: _2 _1 0 1 2
>>> NB. a square and a straight line
>>>
>>> data2 =: 0 { data1 NB. a square
>>>
>>> plot data1 NB. plot shows square as parallelogram
>>>
>>> ratio data1 NB. this ratio is (1 - _1) % 2 - _2, see plot
>>> 0.5
>>>
>>> 'aspect 0.5' plot data1 NB. plot shows square as square
>>>
>>> plot data2 NB. plot shows square as a parallelogram
>>>
>>> ratio data2 NB. this ratio is (1 - _1) % 1 - _1, see plot
>>> 1
>>>
>>> 'aspect 1' plot data2 NB. plot show square as square
>>>
>>> IFIPAD
>>> 1
>>> VERSION
>>> 1.3 5
>>>
>>> --Kip Murray
>>>
>>> Sent from my iPad
>>>
>>>> On Sep 21, 2013, at 8:26 AM, Raul Miller <rauldmiller at gmail.com> wrote:
>>>>
>>>> Do you mean something like an average of the sum along the last dimension?
>>>>
>>>> If so, how important is it that any excess precision gets discarded?
>>>>
>>>> Thanks,
>>>>
>>>> --
>>>> Raul
>>>>
>>>>> On Sat, Sep 21, 2013 at 8:38 AM, km <km at math.uh.edu> wrote:
>>>>> Challenge: devise a verb ratio so that if
>>>>>
>>>>> data1 =: ((,-)2j1) ,: _1^(%~i:)60
>>>>> data2 =: _1^(%~i:)60
>>>>>
>>>>> then
>>>>>
>>>>> ratio data1
>>>>> 0.5
>>>>> ratio data2
>>>>> 1
>>>>>
>>>>> i.e., if data is complex plot data and r is the result of ratio data then circles in
>>>>>
>>>>> 'aspect r' plot data
>>>>>
>>>>> appear circular.
>>>>>
>>>>> --Kip Murray
>>>>>
>>>>> Sent from my iPad
>>>>>
>>>>>> On Sep 21, 2013, at 4:08 AM, km <km at math.uh.edu> wrote:
>>>>>>
>>>>>> 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 <bojacoby at yahoo.dk> 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 <lindaalvord at verizon.net>
>>>>>>>> Til: programming at jsoftware.com
>>>>>>>> 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: programming-bounces at forums.jsoftware.com
>>>>>>>> [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Bo Jacoby
>>>>>>>> Sent: Wednesday, September 18, 2013 9:52 PM
>>>>>>>> To: programming at jsoftware.com
>>>>>>>> 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 <lindaalvord at verizon.net>
>>>>>>>>> Til: programming at jsoftware.com
>>>>>>>>> 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: programming-bounces at forums.jsoftware.com
>>>>>>>>> [mailto:programming-bounces at forums.jsoftware.com] On Behalf Of Bo
>>>>>>>>> Jacoby
>>>>>>>>> Sent: Tuesday, September 17, 2013 12:00 PM
>>>>>>>>> To: programming at jsoftware.com
>>>>>>>>> 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 <km at math.uh.edu>
>>>>>>>>>> Til: "programming at jsoftware.com" <programming at jsoftware.com>
>>>>>>>>>> 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
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
More information about the Programming
mailing list