【问题标题】:Plotting Jacobi Elliptic Function绘制 Jacobi 椭圆函数
【发布时间】:2014-02-15 19:41:54
【问题描述】:

我使用 pygame 库在 Python 上编写了程序,用于绘制复杂函数的相位和模数图形。
我不是程序员,也没有任何数学背景。但现在我想知道如何在某个点 z 数值上评估 Jacobi 椭圆函数值。我在 Wikipedia Jacobi elliptic function 中找到了函数的定义,并且有积分,但我不明白如何使用它来评估复平面 z 点的函数值。我知道如何从复平面中的某个点 a 到 b 对路径积分进行数值评估,但是有一些 theta 和 phi 参数,我不明白。

你能帮帮我吗? 我不需要Python代码(如果我明白原理我会自己写)但是如果您逐步提供算法如何做到这一点就足够了。

【问题讨论】:

    标签: python function math integral


    【解决方案1】:

    你可以使用mpmath

    from mpmath import ellipfun
    
    print(ellipfun('cd', 1.0 + 2.0j, 0.5))
    
    (1.90652944795345 + 0.225277477847159j)
    

    【讨论】:

      【解决方案2】:

      阅读了 Wikipedia Jacobi elliptic function 中的文章和 http://mysite.du.edu/~jcalvert/math/jacobi.htm 中的文章,我相信这是一种解释。

      z 是复平面中的一个点,然后 z' 是它的补模,其中 z'^2 = 1 - z^2

      这似乎是雅可比椭圆函数 k 代替 z 并且 m 用于 k^2 和 k 使得 k^2 是实数并且 0

      积分是两个参数 k 和 phi 的函数 u

      u(k,phi) = 给定的积分

      请注意,不是从复平面中的 z 开始,而是从实数 m 0

      因此,对于给定的 m,您可以对一系列值 phi 进行数值积分(例如,以 π/12 为步长的 0 到 6π)给出 u

      现在对于给定的 m,您有一个数据集绘制 u 对 phi

      椭圆函数 sn 是 this 的逆函数,即给定 u phi 给出的 u

      因此查看 u 数据将给出 phi 结果。

      注意对于给定的 u 会有多个 phi。

      【讨论】:

        【解决方案3】:

        scipyx,我对 SciPy 的扩展集合,has support for complex-valued arguments in Jacobi elliptic functions

        安装

        pip install scipyx
        

        并用作

        import scipyx as spx
        
        u = 1.0 + 2.0j
        m = 0.8
        # sn, cn, dn, ph = scipy.special.ellipj(x, m)  # not working
        sn, cn, dn, ph = spx.ellipj(u, m)
        

        如果您在绘制这些图之后,请查看cplot(也是我的):

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-09-04
          • 1970-01-01
          • 1970-01-01
          • 2016-02-05
          • 1970-01-01
          • 2012-07-10
          • 1970-01-01
          相关资源
          最近更新 更多