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