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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm