弧长计算很慢,是哪里运用不对吗
mathematica吧
全部回复
仅看楼主
level 5
梁东林00 楼主
尝试分别用ArcLength函数或者用原本的弧长积分公式计算弧长,结果是能出来的,但是耗时起码3分钟。
结果与三维软件UG的曲线对照,计算出的弧长是一致的。电脑是内存8G的。
版本是mathematica10.3
代码如下,以及截图
绘制曲线也是立刻出来的,就是弧长算半天。。。
曾尝试用标准圆来测试ArcLength函数,也是立刻得出弧长的。。。
ClearAll;
a = 87;
amp = 1;
i21 = -(1/2 + amp*(Sin[t/2])^2);
rv[t_] := a*i21/(i21 - 1);
rw[t_] := a - rv[t];
xv[t_] := rv[t]*Cos[t];
yv[t_] := rv[t]*Sin[t];
xw[t_] := -rw[t]*Cos[t] + a;
yw[t_] := -rw[t]*Sin[t];
ParametricPlot[{{xv[t], yv[t]}, {xw[t], yw[t]}}, {t, 0, 2 Pi}]
(*ArcLength[{xv[t],yv[t]},{t,0,2Pi}]*)
L = \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(2 Pi\)]\(
\*SqrtBox[\(
\*SuperscriptBox[\((rv[t])\), \(2\)] +
\*SuperscriptBox[\((D[rv[t], t])\), \(2\)]\)] \[DifferentialD]t\)\);
N[L]
2023年07月07日 01点07分 1
level 7
慢是因为你算的是解析解
ArcLength[{xv[t], yv[t]}, {t, 0, 2 Pi}, WorkingPrecision -> MachinePrecision]或者用NItegrate
2023年07月07日 10点07分 2
确如你说讲的。 ArcLength[{xv[t], yv[t]}, {t, 0, 2 Pi}, Method -> {"NIntegrate", WorkingPrecision -> 7}]
2023年07月08日 02点07分
1