数值计算 Steinmetz 曲线的弧长

计算科学 数字 计算几何
2021-12-06 01:57:55

我想知道由两个具有不同半径 a 和 b 的正交圆柱的相交曲线构成的长度,其中 a > b > 0。

我遇到了这篇文章,它提供了一个椭圆积分的解决方案:

https://math.stackexchange.com/questions/1340318/arclength-of-intersection-between-2-perpendicular-cylinders

我的最终目标是在 excel 中创建一个类似于 steinmetzcur(a,b) = 弧长(英寸)的函数。我需要使用什么数值方法来解决这个问题,这可以在 excel 中完成吗?

1个回答

由于被积函数(在您引用的答案中)是周期性的且相当平滑,您可以使用梯形规则对其进行数值评估。对于这样的被积函数,收敛是指数的,所以你不应该需要太多的点。是一个很好的解释。我认为在 Excel 中这样做是非常可行的。

这是一些 matlab 代码,显示了相等半径情况下的快速收敛(和被积函数)。

I = zeros(50, 1);
f = @(x)sqrt((1-cos(x).^4)./(1-cos(x).^2));
for i = 2:2:100
    x = linspace(0, 2 * pi, i);
    y = f(x);
    y(1) = sqrt(2) / 2;   % f(0) = f(2*pi) = NaN, but f(0) -> sqrt(2). 
    y(end) = sqrt(2) / 2; % Divide by 2 for trapzeoidal rule
    I(i / 2) = sum(y) * (x(2) - x(1));
end
subplot(2,1,1), plot(x, f(x)), title('Integrand'), axis tight, xlabel('$\theta$')
subplot(2,1,2), semilogy(2:2:100, abs(I - I(end))), title('Convergence of trapezoidal rule'), ylabel('Error')

在此处输入图像描述