       Re: FindCurvePath has a problem

• To: mathgroup at smc.vnet.net
• Subject: [mg127382] Re: FindCurvePath has a problem
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Fri, 20 Jul 2012 23:40:20 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• Delivered-to: mathgroup-newout@smc.vnet.net
• Delivered-to: mathgroup-newsend@smc.vnet.net

```On 7/20/12 at 3:50 AM, ralph.dratman at gmail.com (Ralph Dratman) wrote:

>The following input to FindCurvePath produces the output shown below
>it:

>FindCurvePath[{{278,141},{279,141},{279,142},{279,143},{280,143},{280,
>144},{280,145},{280,146},{281,147},{281,148},{281,149},{281,150},{282,
>150},{282,151},{282,152},{283,151},{283,152},{283,153},{284,153},{284,
>154},{285,155},{286,155},{286,156},{287,156},{287,157},{288,157},{289,
>156},{290,156},{290,157},{291,156},{291,157},{292,156},{292,157},{293,
>156},{293,157},{294,156},{294,157},{295,156},{295,157},{296,156},{296,
>157},{297,156},{297,157},{298,155},{298,156},{299,155},{299,156},{300,
>155},{301,154},{301,155},{302,153},{302,154},{303,152},{303,153},{304,
>150},{304,151},{304,152},{305,149},{305,150},{306,146},{306,147},(*{306
>,148},{306,149},{307,144},{307,145},{307,146},{308,141},{308,142},{308,
>143},{308,144},{309,139},{309,140},{309,141},{310,138},{310,139},{311,
>136},{311,137},{311,138},{312,135},{312,136},{313,134},{313,135},*){314
>,133},{314,134}}]

>FindCurvePath::ntri:    The data generates an inconsistent
>triangulation. You can perturb the data to make it valid. >> Fail

>If you restore the commented-out list elements (beginning with
>(*{306,148}...), then evaluate, you get an apparently never-ending
>silent hangup, which is of course far worse than an error message.

If the problem truly is a "hangup", i.e., Mathematica has gone
into an endless loop for a problem that should terminate, this
is indeed worse. But, it is far more likely the computation
FindCurvePath is simply more complex than you realize for this
data set and it simply takes longer to compute the answer or
determine it isn't possible to get an answer than you (or I for
that matter) are willing to wait.

Mathematica provides you with some very powerful tools and
generally doesn't give you a lot of insight into the algorithms
used or how execution time can depend on the data set you want
to apply the tools to.

If uncomment your data set and assign it to a variable dataList
and do

ListPlot[dataSet]

I see the data set has multiple y values for a single x value
and the general trend is a portion of a bell shaped curve. The
multiple y values are certain to be the issue. If there were at
most 2 y values for any x value, this data set could be
interpreted as a closed curve. But with 3 and 4 y values for a
given x value, I don't know how to interpret the data set as a
smooth curve and don't see how any automated algorithm could be successful.

Another way to view the plot produced by ListPlot is a simple
curve rather than a closed curve. If this is what the data is
intended to represent then reducing the data set by either

Mean/@GatherBy[dataSet, First]

or

Median/@GatherBy[dataSet, First]

will reduce the problem complexity to something FindCurvePath
can very rapidly deal with. In fact, simply sorting the reduced
data set will order the points correctly.

```

• Prev by Date: Re: Help with Reduce and ForAll
• Next by Date: Re: How to Scale and vary plot for a Differential Equation
• Previous by thread: Re: FindCurvePath has a problem
• Next by thread: Re: FindCurvePath has a problem