“$m \eta$是严格余量。边界上测了很多点并没有自动证明这两个整段界;测点之间仍可能经过零。怎样从有限数据补齐整个边界,是分段绕数证书另要完成的事。”
沿方形边界只看四个角,
形式陈述
从真实闭路到一张可验的折线
设
已知各节点的准确值
则整条曲线避零,并与按相同参数顺序连接
绕数采用有向路径积分
每只圆盘
导数把离散节点补成整段保证
若已知
因而可用
直觉
每段都住在一间不碰原点的房间里
只看小段的两个端点,它可能直接走过去,也可能绕原点很多圈再到达。式(1)把所有可能运动限制在一只不含原点的凸圆盘里;在这样的圆盘中,多余的绕行可以收回线段,不会撞上原点。真正关键的是整段包含,不是端点距离看起来很近。
这也说明为何一段检查失败时应细分。较短小段通常使变化半径变小,而函数值离零的距离未必同比变小。成功的检查给结论;失败本身不表示存在边界根,也不表示没有根。
例子与边界
四个相同值,不能证明零圈
取逆时针方形顶点
及
公开程序使用下文的平移导数界,自适应二分后生成80个认证叶段,共实际测试156段。每段保留来源边、两个有理参数端点、准确函数值、导数上界和严格余量;逐段复核后得到四。倒序走返回负四,完整走两遍返回八。
真边界根与计算预算耗尽是两种出口
把函数改为
对原来的
当根无限接近边界但尚未碰到边界时,算法可以需要很多段。只声明“多项式次数不高”不足以保证固定采样数成功。
推论与应用
不计算反三角函数的准确绕数
对于已知避零的闭折线,所有顶点坐标若为有理数,绕数可由加减乘与符号比较精确计算。记相邻顶点
从原点向右取正实射线,逐边累加:
- 若
且 ,加一 - 若
且 ,减一 - 其他情况加零
先拒绝任何零顶点,以及满足
为什么判别式的符号有用?对上行穿过横轴的边,交点横坐标为
半开规则负责顶点落在射线上的情况。一条边终止于零高度而下一条从那里离开时,真正的穿越只计一次;若两边都在射线同侧,进入和退出的贡献相消或都为零。连续水平边没有穿越,不直接贡献。也可以把射线作足够小的旋转来避开有限个顶点,再取极限,得到同一规则。不能对两端都使用严格不等号,否则会漏掉恰好经过采样顶点的穿越。
多项式小段的纯有理上界
给定Gaussian有理系数的多项式
对复数
令
因此充分检查为
这里的导数针对复变量;沿源线段积分再乘上长度界
完整证书必须检查每条原始边
公开格式给每条原始边编号,叶段另存
只有每段均通过(4),才对所有像顶点作上述交叉计数。删掉一个叶段、低报变化半径、改一个函数值,或把未决标签改成成功,都不能只凭日志自报的整数获得接受。完整边覆盖证明“没有漏掉运动”,局部圆盘证明“可以压成折线”,二者各司其职。
何时能保证有限停止
固定非零多项式和有限条源边,假设整个源边界上没有零点。由紧性,
这个证明没有给出事先可知的最小深度,更不适用于真边界根。若改用有误差的函数oracle,还需其误差随精度请求收缩;一个固定误差底可能让细分永远不能通过。
从绕数读出什么,以及花了多少代价
若源路径是某个全纯域内的正向简单边界,且函数在闭域邻域全纯,对数导数计数把认证绕数转成内部零点总重数。任意自交或重复路径仍有准确绕数,但读出的是带路径绕数权重的总和,不能直接称为某个集合的不同根数。
对有理函数
次数
参考资料
- Jiří Lebl,Guide to Cultivating Complex Analysis作者稿,§4.5,Definition4.5.4、Lemma4.5.5及Proposition4.5.6,连续辐角与避零同伦的绕数不变。本文的分段凸圆盘证书、半开射线规则及精确多项式实现另行展开证明。
- Michael Eisermann,The Fundamental Theorem of Algebra made effective,原论文书目入口,说明实代数绕数可用于复根算法。本页不采用其Sturm链计算、实闭域推广或边界计数约定;所有实际算法依据均在正文给出。