• 风螺旋切线计算的数学验证


    风螺旋切线计算的数学验证

    2017-10-14 刘崇军 风螺旋线

           在刚刚过去的一周里,全力抵抗节后综合症的你还好吧?在这一周里,有一件对本公众号很重要的事情发生了,那就是“风螺旋的切线与Eθ相垂直”用数学的方法证明了。

            为什么说这件事情很重要呢?因为这首先表示在未来,风螺旋线的相关算法可以全面的接受验证和测试,而不用担心被证伪了。其次,在这个数学基础上,将风螺旋概念泛化而得到的等距螺旋,将会对现有的螺旋线理论带来非常大的改变(感觉像是在做梦,但这个梦越来越真实了)。

            闲话少叙,先来总结一下现有的风螺旋公式:

            现有的风螺旋线公式是基于极坐标系下的表达方式,其中最核心的参数有偏流角DA、半径、Eθ 和 θ等。

            在现代数学中,对极坐标系下曲线的切线计算有着非常成熟的方法(知道的有点晚哈)。核心计算是通过导数方程来实现,具体的步骤是:

    1. 将极坐标系转换为直角坐标系的表达方式。

    2. 对直角坐标系的f(x),f(y)函数分别求导数f(x)'、f(y)'。

    3. 用k=f(y)'/f(x)'得到切线的斜率公式。

    4. 根据给定的(x0,y0)点,得到切线公式:y-y0= k(x-x0)。

            步骤相对简单,实际公式推导就没这么容易了。幸好现在的数学软件(比如:Mathematica)已经可以代替人来完成全部的公式推导过程,因此才有可能在几天的时间内完成整个的验证。

    在Mathatica中先列出基础公式及参数:

    接下来是切线斜率的验证代码:

            这段代码的核心是将切线的斜率按照反正切函数转换成角度,按照风螺旋的计算方法,θ角倒退一个偏流角DA,再加上90度,就等于切线的角度。这里用倒退后的角度减去切线角度,来观察最终的结果。

            斜率公式是下面的样子(我猜你一定不想看):

            做到这一步,有这样一种感觉,现代数学家列出的一堆公式,他(她)们未必真的会去看的,公式只是用来传递思路(很可能是计算机生成的),结果是才我们关心的。面对这样的公式我的内心是打鼓的,这么复杂的内容能够实现 θ-DA-ArcTan[k]= Pi/2 的目标么?在经历了多次的(必须的)试错之后,你看到了上面的最终代码,输出的结果也得到了:

    上图中Out[1220] 表示这里是第1220次计算的结果(重复次数多了,这个数字就会噌噌往上长,科学没有一帆风顺啊)。结果是激动我心的:90°和270°,风螺旋终于可以大胆上台面了。

    风螺旋曲线的验证代码:

    最终的风螺旋与切线的叠加效果图:

            反方向风螺旋公式其实很简单,将a角取负值,即可实现。上图中虚线段顺时针外扩的风螺旋即是。Mathematica软件中角度值是逆时针增长的,因此使用 θ-β得到的是逆时针增长的螺旋,使用-θ+β得到的是顺时针增长的螺旋。在计算机软件开发中,通常角度是按顺时针增加,因此,螺旋线的扩展方向刚好相反。无论风螺旋的方向是怎样的,θ角的取值始终必须大于零,表示从基圆圆周开始扩展。θ角小于零的情况下会出现等距螺旋公式突变的情况,这是我目前在进行的另一项“研究”,先保个密哈。

            感谢您耐心的阅读至此,今天的公式很复杂,今天的内容很简单:风螺旋线的切线必定与某个Eθ相垂直,而Eθ与对应的基圆半径相差为一个DA角,正如公众号里一直在重复提到的一样。

    微信扫一扫
    关注该公众号

  • 相关阅读:
    矩阵学习摘记,欢迎指正
    [poj1363]Rails_模拟_栈
    JLOI2018 记
    [poj3321]Apple Tree_dfs序_树状数组
    [poj3974]Palindrome_Manacher
    [poj1062]昂贵的聘礼_最短路_离散化
    STL:字符串用法详解
    C++ Primer 有感(管理类的指针成员)
    C++ Primer 有感(标准库set类型)
    C++ Primer 有感(标准库pair)
  • 原文地址:https://www.cnblogs.com/windspiral/p/7860821.html
Copyright © 2020-2023  润新知