If you size the plot window so that x and y axes
are proportional, then
evn=: 2 : (':' ; '(; u)(+ [EMAIL PROTECTED]@(u d.1))^:(<x) y')
load'plot trig'
'marker'plot 80 (sin evn 0.1) 0
'marker'plot 40 (*: evn 0.2) 0
'marker'plot 80 (^. evn 0.2) 1
--- Devon McCormick <[EMAIL PROTECTED]> wrote:
> Members of the Forum:
>
> If I plot the points of a sine curve thusly
>
> 'type point;pensize 5' plot 1 o. 8%~i:49
>
> I get a nice graph but, due the nature of the sine function, points near the
> inflection points are more closely spaced than those further away. How can
> I adjust my input points to get more evenly-spaced (for simplicity, on the
> X-axis) outputs? I'd like a method I could use for any arbitrary function.
>
> Here's a simple attempt wherein I try to remove the point closest to the one
> before it and insert a point midway between the two most widely separated
> points:
>
> NB.* evenOut: adjust inputs to fnc so outputs more evenly spaced.
> evenOut=: 1 : 0
> diffs=. |2-~/\u y
> 'whi wlo'=. diffs i. (>./,<./)diffs
> wlo=. wlo-wlo=<:#y NB. Don't remove endpoint
> y=. (0 (>:whi)}1$~>:#y)#^:_1 y
> y=. (u -:+/y{~whi+0 2) (>:whi)}y
> y=. (<<<>:wlo){y
> )
>
> evenOut_test_=: 3 : 0
> tsts=. 0 1 10,0 10 11,:0 5 10
> assert. (] evenOut"1 tsts)-:(5.5 5 5) 1}&.|:tsts
> )
>
> If I could get a satisfactory version of this two-point substituter, it
> might work to apply it repeatedly until the point differences stabilize.
> I'm satisfied with the result for these simple test cases:
>
> ]tsts=. 0 1 10,0 10 11,:0 5 10
> 0 1 10
> 0 10 11
> 0 5 10
> ] evenOut"1 tsts
> 0 5.5 10
> 0 5 11
> 0 5 10
>
> (Testing with verb "]" for simplicity). However, this result
>
> ] evenOut 0 2 4 5
> 0 1 2 5
>
> isn't as good; a result like "0 2 3
> 5" might be better in this case. We could define a measure of evenness:
>
> msrEveness=: 13 : '%:+/*:2-/\|2-/\y'
>
> to quantify this preference (where a lower measure is better). This shows
> us that of the three possibilities,
>
> msrEveness ] evenOut 0 2 4 5
> 2
> msrEveness 0 2 4 5
> 1
> msrEveness 0 2 3 5
> 1.4142136
>
> the initial arrangement is best. An arrangement like this
>
> msrEveness 0 5r3 10r3 5
> 0
>
> is optimal in this case (we want to retain the endpoints unchanged).
>
> Any ideas on how to approach this?
>
>
>
>
>
>
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
____________________________________________________________________________________
Looking for last minute shopping deals?
Find them fast with Yahoo! Search.
http://tools.search.yahoo.com/newsearch/category.php?category=shopping
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm