我正在尝试在Tensorflow中找到以下四次多项式方程的根的方法:
k1 = 339.749
k2 = -31.988
k3 = 48.275
k4 = -7.201
r = k1 * x + k2 * x**2 + k3 * x**3 + k4 * x**4
其中r
是一个给定的Tensor,我需要找到r
中每个元素的根,具体来说,我需要一个Tensor,其中每个元素都是解的真实的部,该解的实部在由Tensorr
的对应元素定义的方程中具有最小的实部。
因为有一个四次多项式方程的公式,我希望有一个计算效率高的解决方案,我不能找到这个问题。
1条答案
按热度按时间ruarlubt1#
首先,随机选择一个起始点(该点不能是函数梯度为零的点),然后用牛顿-拉夫逊法求出第二个近似值。
其中
f(x)
计算方程式,f_prime(x)
计算方程式在点x
处的坡度比。可以使用
tensorflow.GradientTape()
生成f_prime(x)
下面是一个完整的工作示例,
计算出的根将是最接近所选起点的根。尝试不同的数字,如200,您将得到不同的结果。
如果没有得到f(x)=0的点,这是因为你的起点离解很远,所以你需要设置一个更大的历元数
尝试不同的函数和不同的起点来更好地理解牛顿-拉夫逊方法来求解连续方程。如果你在理解这个方法时遇到问题,this可能会有帮助。