多项式方程的求解是一个基本的数值求解问题。
假设有一个N次实系数多项式方程 如下所示
其中aN≠0,要求通过数值算法求解出该方程的所有复根,且每个解的实部与虚部的绝对误差均不超过1e-4。
输入格式
输入共有N+2行
1)第一行为整数N
2)接下来N+1行是多项式方程的系数,顺序为从高次到低次,分别为aN, aN-1, ..., a0
输出格式
输出共N行 输出规则如下:
1)实部大小从大到小排列
2)共轭根成对输出,先输出虚部为正的根,在输出虚部为负的根
3)重根需要按照重数输出
4)每行2列 第一列为当前根的实部,第二列为当前根的虚部
常见的方程数值解法有二分法、不动点法以及牛顿法等,对于一元N次多项式方程常见迭代法存
在的问题有:
1)依赖解的大致区间
2)对于复根,常见的迭代方式无法使用(没有零点)
3)多根以及重根的穷尽问题
#牛顿拉弗逊迭代 Newton-Raphson method
例如,对于任意方程 假设存在解析解 x=x*,而我们并不知道x*,进行尝试猜测:
1)猜对了 f(xn)=0 bingo! 返回x*,并且可以去购买一张彩票
2)猜错了 f(xn)并不为0或并不足够接近0,基于xn进行下一次猜测:
过点(xn,f(xn)) 作曲线的切线 T 与x轴交点的横坐标xn+1