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.