Unexpected result from ArcLengthDetermining which rule NIntegrate selects automaticallyFinding minimum fly-by radius between Mars and spacecraft from interpolating functionCoarse-graining in numerical integrationsNIntegrate fails to converge around a value out of integration rangeA 1D numerical integral Mathematica cannot compute, from physicsDifferential Equation with Numerically Integrated Boundary ConditionsDifferents results of the intersection area between two regions when using the function “Area” and the function “NIntegrate”Issue with boundary Integration of FEM numerical solution (interpolation function)How to get the most accurate volume of a special solid?Numerical solution of 3 dim integral with singularity

What does Jesus mean regarding "Raca," and "you fool?" - is he contrasting them?

Bash - pair each line of file

Does .bashrc contain syntax errors?

What can I do if I am asked to learn different programming languages very frequently?

Brake pads destroying wheels

Word for flower that blooms and wilts in one day

Can other pieces capture a threatening piece and prevent a checkmate?

Right piano pedal is bright

What favor did Moody owe Dumbledore?

Better use of rounded corners with tikz on draw[->]

Coworker is lying about having kids. What should I do?

Deletion of copy-ctor & copy-assignment - public, private or protected?

Print a physical multiplication table

Is there a term for accumulated dirt on the outside of your hands and feet?

Is it possible to stack the damage done by the Absorb Elements spell?

If "dar" means "to give", what does "daros" mean?

How could an airship be repaired midflight?

Have the tides ever turned twice on any open problem?

When did antialiasing start being available?

A Ri-diddley-iley Riddle

How does 取材で訪れた integrate into this sentence?

Why are there no stars visible in cislunar space?

Asserting that Atheism and Theism are both faith based positions

Does multi-classing into Fighter give you heavy armor proficiency?



Unexpected result from ArcLength


Determining which rule NIntegrate selects automaticallyFinding minimum fly-by radius between Mars and spacecraft from interpolating functionCoarse-graining in numerical integrationsNIntegrate fails to converge around a value out of integration rangeA 1D numerical integral Mathematica cannot compute, from physicsDifferential Equation with Numerically Integrated Boundary ConditionsDifferents results of the intersection area between two regions when using the function “Area” and the function “NIntegrate”Issue with boundary Integration of FEM numerical solution (interpolation function)How to get the most accurate volume of a special solid?Numerical solution of 3 dim integral with singularity













7












$begingroup$


I want to determine the arc lenght of a parametric curve $C: x(t),y(t) = cos(t)^p , sin(t)^p $ with $p$ between $0$ and $1$, and $t$ between $0$ and $pi/2$.



I set up the following function of $p$:



L[p_] := ArcLength[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, 
Method -> "NIntegrate", MaxRecursion -> 20]


For $p=1$ we have a quarter of a circle of radius 1 and we know the arc length is equal to $pi/2$. The above function gives the correct result: 1.5708.



For $p$ close to zero, the curve approaches a square, and we know the result should be very close to $2$. However, the function doesn't even come close to it. Evaluating L[1/100] results in 1.30603. Not close to 2 (it's not even bigger than Pi/2).



Plotting, results in the following:



Plot[L[p], p, 0, 1]



enter image description here



Any ideas? I'm running 11.0.0.0










share|improve this question











$endgroup$







  • 1




    $begingroup$
    I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
    $endgroup$
    – MarcoB
    2 days ago











  • $begingroup$
    @MarcoB I don't get any warnings when evaluating L[1/100]
    $endgroup$
    – Ivan
    2 days ago















7












$begingroup$


I want to determine the arc lenght of a parametric curve $C: x(t),y(t) = cos(t)^p , sin(t)^p $ with $p$ between $0$ and $1$, and $t$ between $0$ and $pi/2$.



I set up the following function of $p$:



L[p_] := ArcLength[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, 
Method -> "NIntegrate", MaxRecursion -> 20]


For $p=1$ we have a quarter of a circle of radius 1 and we know the arc length is equal to $pi/2$. The above function gives the correct result: 1.5708.



For $p$ close to zero, the curve approaches a square, and we know the result should be very close to $2$. However, the function doesn't even come close to it. Evaluating L[1/100] results in 1.30603. Not close to 2 (it's not even bigger than Pi/2).



Plotting, results in the following:



Plot[L[p], p, 0, 1]



enter image description here



Any ideas? I'm running 11.0.0.0










share|improve this question











$endgroup$







  • 1




    $begingroup$
    I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
    $endgroup$
    – MarcoB
    2 days ago











  • $begingroup$
    @MarcoB I don't get any warnings when evaluating L[1/100]
    $endgroup$
    – Ivan
    2 days ago













7












7








7





$begingroup$


I want to determine the arc lenght of a parametric curve $C: x(t),y(t) = cos(t)^p , sin(t)^p $ with $p$ between $0$ and $1$, and $t$ between $0$ and $pi/2$.



I set up the following function of $p$:



L[p_] := ArcLength[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, 
Method -> "NIntegrate", MaxRecursion -> 20]


For $p=1$ we have a quarter of a circle of radius 1 and we know the arc length is equal to $pi/2$. The above function gives the correct result: 1.5708.



For $p$ close to zero, the curve approaches a square, and we know the result should be very close to $2$. However, the function doesn't even come close to it. Evaluating L[1/100] results in 1.30603. Not close to 2 (it's not even bigger than Pi/2).



Plotting, results in the following:



Plot[L[p], p, 0, 1]



enter image description here



Any ideas? I'm running 11.0.0.0










share|improve this question











$endgroup$




I want to determine the arc lenght of a parametric curve $C: x(t),y(t) = cos(t)^p , sin(t)^p $ with $p$ between $0$ and $1$, and $t$ between $0$ and $pi/2$.



I set up the following function of $p$:



L[p_] := ArcLength[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, 
Method -> "NIntegrate", MaxRecursion -> 20]


For $p=1$ we have a quarter of a circle of radius 1 and we know the arc length is equal to $pi/2$. The above function gives the correct result: 1.5708.



For $p$ close to zero, the curve approaches a square, and we know the result should be very close to $2$. However, the function doesn't even come close to it. Evaluating L[1/100] results in 1.30603. Not close to 2 (it's not even bigger than Pi/2).



Plotting, results in the following:



Plot[L[p], p, 0, 1]



enter image description here



Any ideas? I'm running 11.0.0.0







numerical-integration






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago









Henrik Schumacher

56.8k577157




56.8k577157










asked 2 days ago









IvanIvan

1,637821




1,637821







  • 1




    $begingroup$
    I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
    $endgroup$
    – MarcoB
    2 days ago











  • $begingroup$
    @MarcoB I don't get any warnings when evaluating L[1/100]
    $endgroup$
    – Ivan
    2 days ago












  • 1




    $begingroup$
    I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
    $endgroup$
    – MarcoB
    2 days ago











  • $begingroup$
    @MarcoB I don't get any warnings when evaluating L[1/100]
    $endgroup$
    – Ivan
    2 days ago







1




1




$begingroup$
I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
$endgroup$
– MarcoB
2 days ago





$begingroup$
I get a warning from NIntegrate ("Numerical integration converging too slowly; suspect one of the following: singularity...") when trying to evaluate L for small p.
$endgroup$
– MarcoB
2 days ago













$begingroup$
@MarcoB I don't get any warnings when evaluating L[1/100]
$endgroup$
– Ivan
2 days ago




$begingroup$
@MarcoB I don't get any warnings when evaluating L[1/100]
$endgroup$
– Ivan
2 days ago










3 Answers
3






active

oldest

votes


















10












$begingroup$

Seems to be a precision thing.



L[p_] = Cos[t]^p, Sin[t]^p

ArcLength[L[1/100], t, 0, π/2, WorkingPrecision -> 1000]

1.99447959240474567...





share|improve this answer









$endgroup$




















    6












    $begingroup$

    I can only provide an alternative to bypass ArcLength.



    The points pts of a quarter circle are scaled such that they lie on the desired curve; afterwards the length of the polygonal line is computed.



    You will still get problems for values of p very close to 0, but at least you may obtain a qualitatively correct plot (so I hope).



    Certainly this method won't provide you with the best possible accuracy. The relative error between the arclength $ell$ of an arc and the length $s$ of a secant is roughly $|ell/s - 1| leq ell^2 , max(|kappa|)$ in the limit of $ell to 0$. Here $kappa$ denotes the curvature of the curve. Since the maximal curvature of the curve goes to $infty$ for $p to infty$, the quality of this approximation will reduce significantly for $p to 0$.



    n = 10000;
    pts = Transpose[Cos[Subdivide[0., Pi/2, n]], Sin[Subdivide[0., Pi/2, n]]];
    L[p_] := With[x = pts/Power[Dot[(Abs[pts]^(1/p)), 1., 1.], p],
    Total[Sqrt[Dot[Differences[x]^2, 1., 1.]]]
    ]
    Plot[L[p], p, 0.001, 1]


    enter image description here



    Edit



    The ratio behind this is that in contrast to the parameterization



    γ[t_, p_] = Cos[t]^p, Sin[t]^p;


    the parameterization



    η[t_, p_] = Cos[t], Sin[t]/ Power[Cos[t]^(1/p) + Sin[t]^(1/p), p];


    has finite speed which is always helpful for determining the arclength by integration:



    assume = p > 0, 0 < t < Pi/2;
    speedγ[t_, p_] = Simplify[Sqrt[D[γ[t, p], t].D[γ[t, p], t]], assume];
    speedη[t_, p_] = Simplify[Sqrt[D[η[t, p], t].D[η[t, p], t]], assume];
    Quiet@GraphicsRow[
    Plot[Evaluate[Table[speedγ[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
    PlotLabel -> "Speed of γ",
    PlotRange -> 0, 10
    ],
    Plot[Evaluate[Table[speedη[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
    PlotLabel -> "Speed of η",
    PlotRange -> 0, 10
    ]
    ,
    ImageSize -> Large
    ]


    enter image description here



    Whit this parameterization, one can also employ NIntegrate to compute the arclength, at least for not too small p.



    NIntegrate[speedη[t, 1/1000], t, 0, Pi/2]



    2.







    share|improve this answer











    $endgroup$




















      3












      $begingroup$

      Manipulate[ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2], p, 0.01, 1]


      gives this plot at $p=0.01$:



      (An unpreprocessing plot was here.)



      UPDATE:



      p = 0.01; ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, Axes -> False, Frame -> True, PlotRange -> 0, 1.1, 0, 1.1]


      enter image description here



      So yes, the sides are not shrinking, but Mathematica seems to be missing some of the curve ...



      ADDITIONAL UPDATE:



      f[t_][p_] := Cos[t]^p, Sin[t]^p;
      p = 0.01;
      k = 10^6;
      Show[
      ListLinePlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> Red],
      ListPlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> PointSize[Large]],
      AspectRatio -> 1, Frame -> True, Axes -> False
      ]


      If we sample $t$ with one million equally spaced points, there are big jumps to the first and the last point!



      enter image description here



      Plot[f[10^-q][.01][[2]], q, 0, 100, Frame -> True, Axes -> False, FrameLabel -> "-Log10[t]", "f[[2]]"]


      This plot shows that we need $t le 10^-100$ for the $y$-value of the curve to be less than $approx 0.1$ when $p=.01$.



      enter image description here






      share|improve this answer











      $endgroup$












      • $begingroup$
        >but the sides are shrinking. Not really. Check your plotrange
        $endgroup$
        – Ivan
        2 days ago







      • 2




        $begingroup$
        No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
        $endgroup$
        – mjw
        2 days ago







      • 2




        $begingroup$
        @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
        $endgroup$
        – Henrik Schumacher
        2 days ago






      • 1




        $begingroup$
        @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
        $endgroup$
        – mjw
        2 days ago







      • 3




        $begingroup$
        A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
        $endgroup$
        – hobbs
        2 days ago










      Your Answer





      StackExchange.ifUsing("editor", function ()
      return StackExchange.using("mathjaxEditing", function ()
      StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
      StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
      );
      );
      , "mathjax-editing");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "387"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );













      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193346%2funexpected-result-from-arclength%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      10












      $begingroup$

      Seems to be a precision thing.



      L[p_] = Cos[t]^p, Sin[t]^p

      ArcLength[L[1/100], t, 0, π/2, WorkingPrecision -> 1000]

      1.99447959240474567...





      share|improve this answer









      $endgroup$

















        10












        $begingroup$

        Seems to be a precision thing.



        L[p_] = Cos[t]^p, Sin[t]^p

        ArcLength[L[1/100], t, 0, π/2, WorkingPrecision -> 1000]

        1.99447959240474567...





        share|improve this answer









        $endgroup$















          10












          10








          10





          $begingroup$

          Seems to be a precision thing.



          L[p_] = Cos[t]^p, Sin[t]^p

          ArcLength[L[1/100], t, 0, π/2, WorkingPrecision -> 1000]

          1.99447959240474567...





          share|improve this answer









          $endgroup$



          Seems to be a precision thing.



          L[p_] = Cos[t]^p, Sin[t]^p

          ArcLength[L[1/100], t, 0, π/2, WorkingPrecision -> 1000]

          1.99447959240474567...






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 2 days ago









          Bill WattsBill Watts

          3,5611621




          3,5611621





















              6












              $begingroup$

              I can only provide an alternative to bypass ArcLength.



              The points pts of a quarter circle are scaled such that they lie on the desired curve; afterwards the length of the polygonal line is computed.



              You will still get problems for values of p very close to 0, but at least you may obtain a qualitatively correct plot (so I hope).



              Certainly this method won't provide you with the best possible accuracy. The relative error between the arclength $ell$ of an arc and the length $s$ of a secant is roughly $|ell/s - 1| leq ell^2 , max(|kappa|)$ in the limit of $ell to 0$. Here $kappa$ denotes the curvature of the curve. Since the maximal curvature of the curve goes to $infty$ for $p to infty$, the quality of this approximation will reduce significantly for $p to 0$.



              n = 10000;
              pts = Transpose[Cos[Subdivide[0., Pi/2, n]], Sin[Subdivide[0., Pi/2, n]]];
              L[p_] := With[x = pts/Power[Dot[(Abs[pts]^(1/p)), 1., 1.], p],
              Total[Sqrt[Dot[Differences[x]^2, 1., 1.]]]
              ]
              Plot[L[p], p, 0.001, 1]


              enter image description here



              Edit



              The ratio behind this is that in contrast to the parameterization



              γ[t_, p_] = Cos[t]^p, Sin[t]^p;


              the parameterization



              η[t_, p_] = Cos[t], Sin[t]/ Power[Cos[t]^(1/p) + Sin[t]^(1/p), p];


              has finite speed which is always helpful for determining the arclength by integration:



              assume = p > 0, 0 < t < Pi/2;
              speedγ[t_, p_] = Simplify[Sqrt[D[γ[t, p], t].D[γ[t, p], t]], assume];
              speedη[t_, p_] = Simplify[Sqrt[D[η[t, p], t].D[η[t, p], t]], assume];
              Quiet@GraphicsRow[
              Plot[Evaluate[Table[speedγ[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
              PlotLabel -> "Speed of γ",
              PlotRange -> 0, 10
              ],
              Plot[Evaluate[Table[speedη[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
              PlotLabel -> "Speed of η",
              PlotRange -> 0, 10
              ]
              ,
              ImageSize -> Large
              ]


              enter image description here



              Whit this parameterization, one can also employ NIntegrate to compute the arclength, at least for not too small p.



              NIntegrate[speedη[t, 1/1000], t, 0, Pi/2]



              2.







              share|improve this answer











              $endgroup$

















                6












                $begingroup$

                I can only provide an alternative to bypass ArcLength.



                The points pts of a quarter circle are scaled such that they lie on the desired curve; afterwards the length of the polygonal line is computed.



                You will still get problems for values of p very close to 0, but at least you may obtain a qualitatively correct plot (so I hope).



                Certainly this method won't provide you with the best possible accuracy. The relative error between the arclength $ell$ of an arc and the length $s$ of a secant is roughly $|ell/s - 1| leq ell^2 , max(|kappa|)$ in the limit of $ell to 0$. Here $kappa$ denotes the curvature of the curve. Since the maximal curvature of the curve goes to $infty$ for $p to infty$, the quality of this approximation will reduce significantly for $p to 0$.



                n = 10000;
                pts = Transpose[Cos[Subdivide[0., Pi/2, n]], Sin[Subdivide[0., Pi/2, n]]];
                L[p_] := With[x = pts/Power[Dot[(Abs[pts]^(1/p)), 1., 1.], p],
                Total[Sqrt[Dot[Differences[x]^2, 1., 1.]]]
                ]
                Plot[L[p], p, 0.001, 1]


                enter image description here



                Edit



                The ratio behind this is that in contrast to the parameterization



                γ[t_, p_] = Cos[t]^p, Sin[t]^p;


                the parameterization



                η[t_, p_] = Cos[t], Sin[t]/ Power[Cos[t]^(1/p) + Sin[t]^(1/p), p];


                has finite speed which is always helpful for determining the arclength by integration:



                assume = p > 0, 0 < t < Pi/2;
                speedγ[t_, p_] = Simplify[Sqrt[D[γ[t, p], t].D[γ[t, p], t]], assume];
                speedη[t_, p_] = Simplify[Sqrt[D[η[t, p], t].D[η[t, p], t]], assume];
                Quiet@GraphicsRow[
                Plot[Evaluate[Table[speedγ[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                PlotLabel -> "Speed of γ",
                PlotRange -> 0, 10
                ],
                Plot[Evaluate[Table[speedη[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                PlotLabel -> "Speed of η",
                PlotRange -> 0, 10
                ]
                ,
                ImageSize -> Large
                ]


                enter image description here



                Whit this parameterization, one can also employ NIntegrate to compute the arclength, at least for not too small p.



                NIntegrate[speedη[t, 1/1000], t, 0, Pi/2]



                2.







                share|improve this answer











                $endgroup$















                  6












                  6








                  6





                  $begingroup$

                  I can only provide an alternative to bypass ArcLength.



                  The points pts of a quarter circle are scaled such that they lie on the desired curve; afterwards the length of the polygonal line is computed.



                  You will still get problems for values of p very close to 0, but at least you may obtain a qualitatively correct plot (so I hope).



                  Certainly this method won't provide you with the best possible accuracy. The relative error between the arclength $ell$ of an arc and the length $s$ of a secant is roughly $|ell/s - 1| leq ell^2 , max(|kappa|)$ in the limit of $ell to 0$. Here $kappa$ denotes the curvature of the curve. Since the maximal curvature of the curve goes to $infty$ for $p to infty$, the quality of this approximation will reduce significantly for $p to 0$.



                  n = 10000;
                  pts = Transpose[Cos[Subdivide[0., Pi/2, n]], Sin[Subdivide[0., Pi/2, n]]];
                  L[p_] := With[x = pts/Power[Dot[(Abs[pts]^(1/p)), 1., 1.], p],
                  Total[Sqrt[Dot[Differences[x]^2, 1., 1.]]]
                  ]
                  Plot[L[p], p, 0.001, 1]


                  enter image description here



                  Edit



                  The ratio behind this is that in contrast to the parameterization



                  γ[t_, p_] = Cos[t]^p, Sin[t]^p;


                  the parameterization



                  η[t_, p_] = Cos[t], Sin[t]/ Power[Cos[t]^(1/p) + Sin[t]^(1/p), p];


                  has finite speed which is always helpful for determining the arclength by integration:



                  assume = p > 0, 0 < t < Pi/2;
                  speedγ[t_, p_] = Simplify[Sqrt[D[γ[t, p], t].D[γ[t, p], t]], assume];
                  speedη[t_, p_] = Simplify[Sqrt[D[η[t, p], t].D[η[t, p], t]], assume];
                  Quiet@GraphicsRow[
                  Plot[Evaluate[Table[speedγ[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                  PlotLabel -> "Speed of γ",
                  PlotRange -> 0, 10
                  ],
                  Plot[Evaluate[Table[speedη[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                  PlotLabel -> "Speed of η",
                  PlotRange -> 0, 10
                  ]
                  ,
                  ImageSize -> Large
                  ]


                  enter image description here



                  Whit this parameterization, one can also employ NIntegrate to compute the arclength, at least for not too small p.



                  NIntegrate[speedη[t, 1/1000], t, 0, Pi/2]



                  2.







                  share|improve this answer











                  $endgroup$



                  I can only provide an alternative to bypass ArcLength.



                  The points pts of a quarter circle are scaled such that they lie on the desired curve; afterwards the length of the polygonal line is computed.



                  You will still get problems for values of p very close to 0, but at least you may obtain a qualitatively correct plot (so I hope).



                  Certainly this method won't provide you with the best possible accuracy. The relative error between the arclength $ell$ of an arc and the length $s$ of a secant is roughly $|ell/s - 1| leq ell^2 , max(|kappa|)$ in the limit of $ell to 0$. Here $kappa$ denotes the curvature of the curve. Since the maximal curvature of the curve goes to $infty$ for $p to infty$, the quality of this approximation will reduce significantly for $p to 0$.



                  n = 10000;
                  pts = Transpose[Cos[Subdivide[0., Pi/2, n]], Sin[Subdivide[0., Pi/2, n]]];
                  L[p_] := With[x = pts/Power[Dot[(Abs[pts]^(1/p)), 1., 1.], p],
                  Total[Sqrt[Dot[Differences[x]^2, 1., 1.]]]
                  ]
                  Plot[L[p], p, 0.001, 1]


                  enter image description here



                  Edit



                  The ratio behind this is that in contrast to the parameterization



                  γ[t_, p_] = Cos[t]^p, Sin[t]^p;


                  the parameterization



                  η[t_, p_] = Cos[t], Sin[t]/ Power[Cos[t]^(1/p) + Sin[t]^(1/p), p];


                  has finite speed which is always helpful for determining the arclength by integration:



                  assume = p > 0, 0 < t < Pi/2;
                  speedγ[t_, p_] = Simplify[Sqrt[D[γ[t, p], t].D[γ[t, p], t]], assume];
                  speedη[t_, p_] = Simplify[Sqrt[D[η[t, p], t].D[η[t, p], t]], assume];
                  Quiet@GraphicsRow[
                  Plot[Evaluate[Table[speedγ[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                  PlotLabel -> "Speed of γ",
                  PlotRange -> 0, 10
                  ],
                  Plot[Evaluate[Table[speedη[t, 2^-k], k, 0, 10]], t, 0, Pi/2,
                  PlotLabel -> "Speed of η",
                  PlotRange -> 0, 10
                  ]
                  ,
                  ImageSize -> Large
                  ]


                  enter image description here



                  Whit this parameterization, one can also employ NIntegrate to compute the arclength, at least for not too small p.



                  NIntegrate[speedη[t, 1/1000], t, 0, Pi/2]



                  2.








                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited yesterday

























                  answered 2 days ago









                  Henrik SchumacherHenrik Schumacher

                  56.8k577157




                  56.8k577157





















                      3












                      $begingroup$

                      Manipulate[ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2], p, 0.01, 1]


                      gives this plot at $p=0.01$:



                      (An unpreprocessing plot was here.)



                      UPDATE:



                      p = 0.01; ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, Axes -> False, Frame -> True, PlotRange -> 0, 1.1, 0, 1.1]


                      enter image description here



                      So yes, the sides are not shrinking, but Mathematica seems to be missing some of the curve ...



                      ADDITIONAL UPDATE:



                      f[t_][p_] := Cos[t]^p, Sin[t]^p;
                      p = 0.01;
                      k = 10^6;
                      Show[
                      ListLinePlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> Red],
                      ListPlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> PointSize[Large]],
                      AspectRatio -> 1, Frame -> True, Axes -> False
                      ]


                      If we sample $t$ with one million equally spaced points, there are big jumps to the first and the last point!



                      enter image description here



                      Plot[f[10^-q][.01][[2]], q, 0, 100, Frame -> True, Axes -> False, FrameLabel -> "-Log10[t]", "f[[2]]"]


                      This plot shows that we need $t le 10^-100$ for the $y$-value of the curve to be less than $approx 0.1$ when $p=.01$.



                      enter image description here






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        >but the sides are shrinking. Not really. Check your plotrange
                        $endgroup$
                        – Ivan
                        2 days ago







                      • 2




                        $begingroup$
                        No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                        $endgroup$
                        – mjw
                        2 days ago







                      • 2




                        $begingroup$
                        @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                        $endgroup$
                        – Henrik Schumacher
                        2 days ago






                      • 1




                        $begingroup$
                        @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                        $endgroup$
                        – mjw
                        2 days ago







                      • 3




                        $begingroup$
                        A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                        $endgroup$
                        – hobbs
                        2 days ago















                      3












                      $begingroup$

                      Manipulate[ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2], p, 0.01, 1]


                      gives this plot at $p=0.01$:



                      (An unpreprocessing plot was here.)



                      UPDATE:



                      p = 0.01; ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, Axes -> False, Frame -> True, PlotRange -> 0, 1.1, 0, 1.1]


                      enter image description here



                      So yes, the sides are not shrinking, but Mathematica seems to be missing some of the curve ...



                      ADDITIONAL UPDATE:



                      f[t_][p_] := Cos[t]^p, Sin[t]^p;
                      p = 0.01;
                      k = 10^6;
                      Show[
                      ListLinePlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> Red],
                      ListPlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> PointSize[Large]],
                      AspectRatio -> 1, Frame -> True, Axes -> False
                      ]


                      If we sample $t$ with one million equally spaced points, there are big jumps to the first and the last point!



                      enter image description here



                      Plot[f[10^-q][.01][[2]], q, 0, 100, Frame -> True, Axes -> False, FrameLabel -> "-Log10[t]", "f[[2]]"]


                      This plot shows that we need $t le 10^-100$ for the $y$-value of the curve to be less than $approx 0.1$ when $p=.01$.



                      enter image description here






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        >but the sides are shrinking. Not really. Check your plotrange
                        $endgroup$
                        – Ivan
                        2 days ago







                      • 2




                        $begingroup$
                        No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                        $endgroup$
                        – mjw
                        2 days ago







                      • 2




                        $begingroup$
                        @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                        $endgroup$
                        – Henrik Schumacher
                        2 days ago






                      • 1




                        $begingroup$
                        @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                        $endgroup$
                        – mjw
                        2 days ago







                      • 3




                        $begingroup$
                        A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                        $endgroup$
                        – hobbs
                        2 days ago













                      3












                      3








                      3





                      $begingroup$

                      Manipulate[ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2], p, 0.01, 1]


                      gives this plot at $p=0.01$:



                      (An unpreprocessing plot was here.)



                      UPDATE:



                      p = 0.01; ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, Axes -> False, Frame -> True, PlotRange -> 0, 1.1, 0, 1.1]


                      enter image description here



                      So yes, the sides are not shrinking, but Mathematica seems to be missing some of the curve ...



                      ADDITIONAL UPDATE:



                      f[t_][p_] := Cos[t]^p, Sin[t]^p;
                      p = 0.01;
                      k = 10^6;
                      Show[
                      ListLinePlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> Red],
                      ListPlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> PointSize[Large]],
                      AspectRatio -> 1, Frame -> True, Axes -> False
                      ]


                      If we sample $t$ with one million equally spaced points, there are big jumps to the first and the last point!



                      enter image description here



                      Plot[f[10^-q][.01][[2]], q, 0, 100, Frame -> True, Axes -> False, FrameLabel -> "-Log10[t]", "f[[2]]"]


                      This plot shows that we need $t le 10^-100$ for the $y$-value of the curve to be less than $approx 0.1$ when $p=.01$.



                      enter image description here






                      share|improve this answer











                      $endgroup$



                      Manipulate[ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2], p, 0.01, 1]


                      gives this plot at $p=0.01$:



                      (An unpreprocessing plot was here.)



                      UPDATE:



                      p = 0.01; ParametricPlot[Cos[t]^p, Sin[t]^p, t, 0, Pi/2, Axes -> False, Frame -> True, PlotRange -> 0, 1.1, 0, 1.1]


                      enter image description here



                      So yes, the sides are not shrinking, but Mathematica seems to be missing some of the curve ...



                      ADDITIONAL UPDATE:



                      f[t_][p_] := Cos[t]^p, Sin[t]^p;
                      p = 0.01;
                      k = 10^6;
                      Show[
                      ListLinePlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> Red],
                      ListPlot[Transpose@f[[Pi]/(2 k) Range[0, k]][p], PlotStyle -> PointSize[Large]],
                      AspectRatio -> 1, Frame -> True, Axes -> False
                      ]


                      If we sample $t$ with one million equally spaced points, there are big jumps to the first and the last point!



                      enter image description here



                      Plot[f[10^-q][.01][[2]], q, 0, 100, Frame -> True, Axes -> False, FrameLabel -> "-Log10[t]", "f[[2]]"]


                      This plot shows that we need $t le 10^-100$ for the $y$-value of the curve to be less than $approx 0.1$ when $p=.01$.



                      enter image description here







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited yesterday

























                      answered 2 days ago









                      mjwmjw

                      6859




                      6859











                      • $begingroup$
                        >but the sides are shrinking. Not really. Check your plotrange
                        $endgroup$
                        – Ivan
                        2 days ago







                      • 2




                        $begingroup$
                        No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                        $endgroup$
                        – mjw
                        2 days ago







                      • 2




                        $begingroup$
                        @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                        $endgroup$
                        – Henrik Schumacher
                        2 days ago






                      • 1




                        $begingroup$
                        @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                        $endgroup$
                        – mjw
                        2 days ago







                      • 3




                        $begingroup$
                        A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                        $endgroup$
                        – hobbs
                        2 days ago
















                      • $begingroup$
                        >but the sides are shrinking. Not really. Check your plotrange
                        $endgroup$
                        – Ivan
                        2 days ago







                      • 2




                        $begingroup$
                        No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                        $endgroup$
                        – mjw
                        2 days ago







                      • 2




                        $begingroup$
                        @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                        $endgroup$
                        – Henrik Schumacher
                        2 days ago






                      • 1




                        $begingroup$
                        @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                        $endgroup$
                        – mjw
                        2 days ago







                      • 3




                        $begingroup$
                        A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                        $endgroup$
                        – hobbs
                        2 days ago















                      $begingroup$
                      >but the sides are shrinking. Not really. Check your plotrange
                      $endgroup$
                      – Ivan
                      2 days ago





                      $begingroup$
                      >but the sides are shrinking. Not really. Check your plotrange
                      $endgroup$
                      – Ivan
                      2 days ago





                      2




                      2




                      $begingroup$
                      No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                      $endgroup$
                      – mjw
                      2 days ago





                      $begingroup$
                      No, not that desperate ... By the way, you guys are tough! Imagine a classroom where a student gives an answer/suggestion that is not correct. Or a collaboration with somebody making a mistake. Seems that "Mathematica Stack Exchange" culture does not like people taking risks. May hurt creativity ... But we will have strictly precise, quality answers!!
                      $endgroup$
                      – mjw
                      2 days ago





                      2




                      2




                      $begingroup$
                      @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                      $endgroup$
                      – Henrik Schumacher
                      2 days ago




                      $begingroup$
                      @mjw "Seems that "Mathematica Stack Exchange" culture does not like people taking risks." To the contrary. I was really surprise that posts in this threads were downvoted so quickly. Downvotes on answers are actually very uncommon on this site.
                      $endgroup$
                      – Henrik Schumacher
                      2 days ago




                      1




                      1




                      $begingroup$
                      @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                      $endgroup$
                      – mjw
                      2 days ago





                      $begingroup$
                      @Ivan, yes, point well taken! Could be an artifact. But why is the ArcLength[] returning wrong results? Seems that in both cases Mathematica is undersampling ...
                      $endgroup$
                      – mjw
                      2 days ago





                      3




                      3




                      $begingroup$
                      A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                      $endgroup$
                      – hobbs
                      2 days ago




                      $begingroup$
                      A downvote doesn't mean that you're a bad person, it means that someone somewhere didn't find your answer useful. It's an unremarkable, ordinary thing that can be allowed to pass without comment.
                      $endgroup$
                      – hobbs
                      2 days ago

















                      draft saved

                      draft discarded
















































                      Thanks for contributing an answer to Mathematica Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      Use MathJax to format equations. MathJax reference.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f193346%2funexpected-result-from-arclength%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Adding axes to figuresAdding axes labels to LaTeX figuresLaTeX equivalent of ConTeXt buffersRotate a node but not its content: the case of the ellipse decorationHow to define the default vertical distance between nodes?TikZ scaling graphic and adjust node position and keep font sizeNumerical conditional within tikz keys?adding axes to shapesAlign axes across subfiguresAdding figures with a certain orderLine up nested tikz enviroments or how to get rid of themAdding axes labels to LaTeX figures

                      Luettelo Yhdysvaltain laivaston lentotukialuksista Lähteet | Navigointivalikko

                      Gary (muusikko) Sisällysluettelo Historia | Rockin' High | Lähteet | Aiheesta muualla | NavigointivalikkoInfobox OKTuomas "Gary" Keskinen Ancaran kitaristiksiProjekti Rockin' High