U658601 四次方程

题目背景

本题需要的前置知识如下: 1. 一元四次方程,是指含有一个未知数,未知数的最高次数为 4 的方程。通常形式为 $ax^4 + bx^3 + cx^2 + dx + e = 0$。 2. 对于函数 $f(x)$,求其导数函数过程如下: 取 $f(x)$ 多项式的每一项,如果该项为常数,导数为 $0$;否则,对于项 $ax^b$,其导数为 $bax^{b-1}$。求出多项式每一项的导数后,将各项导数相加,即是多项式函数的导数,通常用 $f'(x)$ 表示。这一过程称为“求导”。 例如,对 $f(x)=3x^2+2x+1$ 求导,首先对其每一项求导,得到 $6x$、$2$ 和 $0$,再将各项相加,得到其导数函数为 $f'(x) = 6x + 2$。 3. 牛顿迭代法,又称牛顿—哈弗森方法,其求解方程 $f(x) = 0$ 的根的步骤为: 令 $f'(x)$ 为 $f(x)$ 的导数,选取一个适当的初始值 $x_0$,以以下公式进行迭代: $$ x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)} $$ 持续不断,直到 $x_{n} = x_{n-1} $(在编程中可以认为是二者之差的绝对值小于某个误差值),则 $x_n$ 为方程 $f(x) = 0$ 的一个根。

题目描述

根据题目背景中的知识介绍,用牛顿迭代法实现一元四次方程 $ax^4 + bx^3 + cx^2 + dx + e = 0$ 的解。你只需要使用牛顿迭代法求出一个解即可。有如下约定: 1. 保证所求出方程的根是 $ -100 \sim 100 $ (包含两端)之间的实数。 2. 保证给出的方程左侧部分函数连续可导,并能使用牛顿迭代法求解。 3. 在使用牛顿迭代法的过程中,初始值 $x_0$ 统一从 1 开始。 4. 保证不存在 $e = 0$。如遇导数为 0 的情况,直接终止输出即可,不必考虑是否为正解。 5. 当 $|x_n - x_{n-1}| \leq 10^{-8}$ 时,认为 $x_n$ 是方程的根。

输入格式

输入五个整数,分别代表方程中的 $a$、$b$、$c$、$d$、$e$。

输出格式

一个浮点数,代表牛顿迭代法求出的解,使用 `printf` 输出,保留三位小数。

说明/提示

对于 $100\%$ 的数据,$-100 \leq a, b, c, d, e \leq 100 $。 考虑到误差和数据存储因素,生成测试数据的程序也将用 C++ 编写,并同样采用牛顿迭代法。