可以可靠计算多项式符号的区间

计算科学 浮点 多项式 准确性
2021-11-27 11:53:46

这是对上一个问题的跟进

p是具有浮点系数的多项式。

有没有一种方法可以找到评估区间p在浮点算术中总是给出正确的符号?

我想找到(理想情况下,最大)不相交间隔I1,,Im这样对于所有浮点数aIk, 的符号f(a)总是正确的。

这显然与隔离零点有关f.

一个标准的例子,其中的符号f在零附近是错误的f(x)=x66x5+15x420x3+15x26x+1接近多个零x=1. 注意f(x)是的扩展(x1)6.

2个回答

是的。您可以计算一个运行错误界限,即一个数字μ这样的精确值之间的差异y=p(x)并且计算值满足y^满足

|yy^|μu.
这里u是单位舍入。你可以相信符号计算的符号y, 什么时候|y^|>μu.

p(x)=j=0najxj,然后霍纳的方法计算

p0=an,pi=xpi1+ani,i=1,2,,n.
如果aix是机器编号,则可以按如下方式计算运行错误界限
μ0=0,zj=pj1x,pj=zj+anj,μj=μj1|x|+|zj|+|pj|,j=1,2,,n.
算法返回y=pnμ=μn.

可以将该算法的成本从 5n 次浮点数降低到 4n 次浮点数,有关详细信息,请参阅 Higham 的《数值算法的准确性和稳定性》一书。

我想补充一点,除了 Carl Christian 建议使用运行误差界限之外,您还可以采用一般相对误差界限

|p^(x)p(x)||p(x)|γ2ncond(p,x),γ2n2nu,cond(p,x)=|ai||x|i|aixi|=p~(x)|p(x)|,
(见http://www-pequan.lip6.fr/~jmc/polycopies/Compensation-horner.pdf),然后可以强加标志正确的条件
γ2ncond(p,x)1,or|p(x)|2nup~(x)

基本上所有这一切都是在识别那些x对多项式求值x条件良好,所以它只是条件数的一个界限。

为了(x1)6,这将导致类似|x1|>cu1/6在哪里c是一个小常数cu是单位舍入。对于一个简单的根α, 这将是|xα|>cu.