迭代牛顿法到递归(Java)
Posted
技术标签:
【中文标题】迭代牛顿法到递归(Java)【英文标题】:Iterative Newton's Method to recursive (Java) 【发布时间】:2022-01-16 08:05:42 【问题描述】:我需要使用牛顿的递归方法。我有这段代码使用迭代牛顿法,但我对编程很陌生,所以我无法思考如何将它变成递归。我真的很感激一些视觉演示。
public static double f(double x)
return x*x*x-3.5*x*x+0.5*x + 5;
public static double prf(double x)
return 3 * x * x - 7 * x + 0.5;
// ВЫЧИСЛЕНИЕ КОРНЯ МЕТОДОМ НЬЮТОНА
public static double x_newton(double a, double e)
double x = a;
double razn;
do
double xn = x - f(x) / prf(x);
razn = Math.abs(xn - x);
x = xn;
while (razn > e);
return x - f(x)/prf(x);
【问题讨论】:
【参考方案1】:通常我们想换一种方式,即消除递归。如果是尾递归:
func(arguments)
if (condition)
return something(arguments)
arguments = modify_arguments(arguments)
return func(arguments)
有一个机械重写:
func(arguments)
while (!condition)
arguments = modify_arguments(arguments)
return something(arguments)
现在你只需要向后应用它。
也就是说,while (razn > e)
不是终止循环的可靠方法。如果导数很大,它可能会过早终止,远离根。
另外,使用英语作为标识符。 razn
对于俄语和英语读者来说看起来同样丑陋。 delta_x
更好。 pr
同上。
【讨论】:
注意!感谢您的帮助以上是关于迭代牛顿法到递归(Java)的主要内容,如果未能解决你的问题,请参考以下文章