跳转到内容

分形/数学/复二次映射的周期点

来自维基教科书,开放世界中的开放书籍

复二次映射的周期点

[编辑 | 编辑源代码]

本文描述了周期点的某些复二次映射。一个映射是根据变量本身的先前值或值计算变量值的公式;一个二次映射是涉及先前值被提升到一和二的映射;一个映射是一个变量和参数都是复数的映射。一个周期点是指映射中变量的值,该值在固定长度的间隔后会重复出现。

这些周期点在法图朱利亚集理论中发挥着作用。

复二次映射,其中复数

在符号上,-次复合本身(不要与导数混淆)—也就是说,在函数的第k迭代之后的的值。因此

复二次映射的周期的周期点是动力学平面上的点,使得

其中 是满足该方程式的最小正 整数

我们可以引入一个新函数

所以周期点是 零点 函数 : 满足以下条件的点 *z*

这是一个 次数 的多项式。

周期点的数量

[edit | edit source]

描述周期点的多项式 次数 ,所以根据 代数基本定理 它正好有 个复根(= 周期点),考虑 重数

周期点(轨道)的稳定性 - 乘子

[edit | edit source]
水平轴上周期点的稳定性指标
参数平面区域的边界,这些区域具有周期为 1-6 的吸引轨道
基于 复二次多项式 的离散动力系统的临界轨道。它趋向于弱 吸引不动点 ,其中 abs(乘子) = 0.99993612384259

有理映射 在周期点 迭代 次的 **乘子** (或特征值、导数) 定义为

其中 关于 处的 一阶 导数

由于乘数在给定轨道上的所有周期点处都相同,因此被称为周期 轨道 的乘数。

乘数为

  • 一个复数;
  • 在任何有理映射在其不动点处的共轭下是不变的;[1]
  • 用于检查周期点(也包括不动点)的稳定性,其 **稳定性指数** 为

周期点[2]

  • 时,为吸引点;
    • 时,为超吸引点;
    • 时,为吸引点但不是超吸引点;
  • 时,为中性点;
    • 是一个 单位根 时,为有理中性点或抛物线点;
    • 无理中性点 但乘数不是单位根时;
  • 时,为排斥点。

周期点

  • 是吸引点的,总是位于 Fatou 集 中;
  • 是排斥点的,位于 Julia 集中;
  • 是中性不动点的,可能位于其中一个或另一个。[3] 抛物线周期点位于 Julia 集中。

寻找周期点

[edit | edit source]
solve these equations using numerical methods for solving polynomials - and even something simple such as Newton's method is going to converge a lot faster than finding the cycles just by iterating a single point (as is how bifurcations diagrams are usually made) under fc itself. Milo Brandt[4]

方法

  • 简单迭代和检查收敛性
  • 数值方法
    • 符号计算,代数
    • 求解多项式方程根的数值方法


周期 1 点(不动点)

[edit | edit source]

有限不动点

[edit | edit source]

首先,让我们找出经过一次应用 后保持不变的所有有限点。这些点满足 。也就是说,我们要解以下方程:

可以改写为:

由于这是一个关于单个未知数的一般 二次方程,我们可以应用 标准二次方程求解公式

因此,对于 ,我们有两个有限不动点:

由于

,其中

我们有

因此,不动点关于 对称。

此图显示了不动点(均为排斥不动点)。
复动力系统
[编辑 | 编辑源代码]
沿水平轴的 c 的不动点
F(z) = z*zFatou 集,并标出了不动点

这里通常使用不同的符号:[5]

乘数为

以及

乘数为

我们再次得到

不动点之间的距离

是 delta

其中

因此
  • 对于 距离等于零: = 点重合(抛物线情况)
  • 对于 距离等于 1: = 超吸引情况(alfa 是中心,beta 在单位圆上)


由于 关于 *z* 的导数

我们有

这意味着 最多只能有一个吸引不动点。

这些点通过以下事实来区分

    • 角度为 0 时,外部射线 的着陆点,其中
    • Julia 集的最排斥不动点。
    • 位于右侧(当不动点在实轴 上不对称时),它是连接 Julia 集的最右端点(除花椰菜外)。[6]
    • 几条射线的着陆点。
    • 在 Mandelbrot 集的主心形内时,它是吸引的,在这种情况下,它位于填充的 Julia 集的内部,因此属于 Fatou 集(严格地说属于有限不动点的吸引盆)。
    • 在 Mandelbrot 集的肢体根点是抛物线的。
    • 对于 的其他值是排斥的。

特殊情况

二次映射的一个重要情况是 。在这种情况下,我们得到 。在这种情况下,0 是一个超吸引不动点,而 1 属于Julia 集

只有一个不动点

我们有 当且仅当 这个方程有一个解, 在这种情况下,。事实上, 是存在有限吸引子的最大正纯 值。

无限不动点

[edit | edit source]

我们可以通过添加无穷大复平面 扩展到黎曼球面(扩展复平面)

并扩展 使得

那么无穷大

  • 超吸引
  • 的不动点:[7]

2 周期循环

[编辑 | 编辑源代码]
从周期 1 到 2 的分岔 复二次映射
fc(z)=z*z +c 中周期点从周期 1 到 2 的分岔

2 周期循环是两个不同的点 ,使得 ,因此

对于

将此等式设置为z,我们得到

此方程是 4 次多项式,因此有四个(可能不不同的)解。但是,我们已经知道两个解。它们是 ,在上面计算,因为如果这些点在一次应用 后保持不变,那么很明显,它们在多次应用 后也会保持不变。

因此,我们的 4 次多项式可以用两种方式分解

第一种分解方法

[编辑 | 编辑源代码]

这直接扩展为 (注意交替符号),其中

我们已经有两个解,只需要另外两个。因此问题相当于求解一个二次多项式。特别注意,

以及

将这些加到上面,我们得到 。将这些与展开的 中的系数进行匹配,我们得到

由此,我们很容易得到

.

从这里,我们构造一个以 为系数的二次方程,并应用标准解公式得到

仔细观察表明

这意味着这两个点是单个周期为 2 的循环上的两个点。

第二种因式分解方法

[编辑 | 编辑源代码]

我们可以使用 多项式长除法 将因子 从四次方程中分解出来,它们解释了两个不动点 (它们的值在前面给出,并且在两次迭代后仍然保持在不动点)

第一个因式的根是两个不动点。它们在主心形之外是排斥的。

第二个因式有两个根

这两个根,与第一种方法找到的相同,形成了周期为 2 的轨道。[8]

特殊情况
[edit | edit source]

再次,让我们看看 。然后

它们都是复数。我们有 。因此,这两个点都“隐藏”在朱利亚集中。另一个特殊情况是 ,它给出 。这给出了在二次曼德尔布罗特集合的最大周期为 2 的瓣中发现的众所周知的超吸引循环。

周期大于 2 的循环

[edit | edit source]
f(z) = z*z−0.75 的周期为 6 的周期点作为 2 个隐式曲线的交点

方程 的次数为 2n;因此例如,要找到 3 循环上的点,我们需要求解一个 8 次方程。在分解出给出两个不动点的因式后,我们将得到一个六次方程。

不存在 五次或更高次的多项式方程的 根式解,因此,一般情况下,周期大于 2 的循环上的点必须使用 数值方法 计算。但是,在周期为 4 的特定情况下,循环点具有根式解的冗长表达式。[9]

c = –2 时,所有周期的周期点都存在三角函数解。情况 等价于 逻辑斯谛映射 情况 r = 4: 这里的等价关系由 给出。逻辑斯谛变量 xk 循环之一(所有循环都是排斥的)是


通用数值方法

[编辑 | 编辑源代码]


为了创建曼德布罗集的周期性分量,对于

  • 开始迭代,其中
  • 对于每个 按顺序
  • 计算
  • 如果
    • 设置
    • 使用 牛顿法 求解 ,初始猜测为 (这可能会无法收敛,在这种情况下,继续下一个 ),步骤如下
    • 计算循环的导数
    • 如果 ,则该循环是吸引的,并且 位于周期为 的双曲分量内,停止(成功)。


其中

  • 可用作双曲分量内的“内部坐标”。
  • 可用于内部距离估计。

使用牛顿法是为了加速计算 ,即极限循环吸引子的一个点。仅仅通过迭代 来计算 可能需要成千上万次的迭代,尤其是在 接近 时。

我没有关于正确性的完整证明(但这并不意味着我认为它是错误的;这些图像看起来合理)。它依赖于围绕给定周期的每个双曲分量的“原子域”。

它还依赖于牛顿法得到的循环与迭代得到的极限循环相同:这对于二次曼德布罗特集是正确的,因为它只有一个有限的临界点, 是一个不动点)并且每个吸引或抛物线循环在其直接盆地中都有一个临界点(参见 <https://math.stackexchange.com/a/3952801>),这意味着最多只能有一个吸引或抛物线循环。

有关 C99 实现,请参见我的博客文章 <https://mathr.co.uk/blog/2014-11-02_practical_interior_distance_rendering.html>


心形/球体检查

int GivePeriod(complex double c){

	if (cabs2(c)>4.0) {return 0;} // exterior : out of first lemniscte
	if (cabs2(1.0 - csqrt(1.0-4.0*c))<=1.0 ) {return 1;} // main cardioid
	if (cabs2(4.0*c + 4)<=1.0){return 2;} // period 2 component
	
	int period =  GivePeriodByIteration(c);
	
	if ( period < 0) // last chance
		{
			iUnknownPeriod +=1;
			//period = m_d_box_period_do(c, 0.5, iterMax_LastIteration); // not working good
	
		}
	
	// period > 0 means is periodic
	// period = 0 means is not periodic = exterior = escaping to infinity
	// period < 0 means period not found, maybe increase global variable iterMax_Period ( see local_setup)
	return period;
}

进一步阅读

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
华夏公益教科书