Newton-Raphson方法在二次方程中的应用

Newton-Raphson method application to a quadratic formulae

提问人:Johnny Azar 提问时间:11/27/2021 最后编辑:TMBaileyJohnny Azar 更新时间:11/30/2021 访问量:144

问:

我是 Python 的新手,如果这是一个愚蠢的问题,我深表歉意。我正在尝试回答以下问题:

具有一个变量 x 的多项式 p(.) 具有有限个 非零项,例如 p(x) = ax2 + bx + c 表示二度 多项式。多项式 p 的根是方程的解 p = 0,即 r 使得 p(r) = 0。牛顿-拉夫森定理 意味着如果一个值(称为 guess)是 多项式的根,则 guess− p(guess)/p'(guess), 其中 p' 是 p 的一阶导数,是更好的近似值。 编写一个名为 NR_Root 的函数,该函数接受作为输入:

  • 元组, 系数,多项式的系数,例如 (a,b,c)从最高阶项开始。多项式 可以是二阶、三阶或更高阶。
  • 最初的猜测,猜测
  • 容差,epsilon,误差的绝对值远离零

函数的定义应为:

def NR_Root(coefficients, guess, epsilon):

该函数返回根的值。

尝试它的一种方法是使用以下方法:

def nraphson(fn, x, tol = 0.0001, maxiter =1000):
    for i in range(maxiter):
        xnew = x - fn[0](x)/fn(x)
        if abs(xnew-x) < tol: break
        return xnew, i
        y = [lambda x: a*x**2+b*x+c, lamda x: 2*a*x+b]
  File "<ipython-input-4-5be43bc0c364>", line 6
    y = [lambda x: a*x**2+b*x+c, lamda x: 2*a*x+b]
                                       ^
SyntaxError: invalid syntax

但是,我得到一个无效的语法,目前无法解决此问题。 任何关于如何进行的指导都会很棒。

谢谢。

Python 元组 导数 牛顿法 epsilon

评论

0赞 TMBailey 11/28/2021
你拼写正确吗?lambda
0赞 Johnny Azar 11/28/2021
感谢您发现这一点,我已将拼写更改为正确的拼写
0赞 Johnny Azar 11/28/2021
以下是我尝试解决上述问题的最新方法: a=1 b=1 c=1 def p(x): 返回a x**2+b x+c def pprime(x): return 2*a*x+b def NR_Root(coefficients, guess, epsilon): 返回: sqrt(x) guess = 1 for val in range(1, 1000): nextGuess = guess-p(guess)/pprime(guess)
0赞 TMBailey 11/28/2021
如果你有一个有效的解决方案,你可以发布你自己问题的答案,以防其他人想看看如何做牛顿-拉夫森。但请注意,这与等等不同......axa*x
0赞 Johnny Azar 11/28/2021
谢谢你让我知道。当我完成我的工作时,我会“回答我的问题”而不是回答。结果如下(无法附加图像): 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.0 0.0 0.0 0.0 0.0 999 999 999 但是,我不确定这在语义上是否正确。我的一个疑问是我错误地进行了以下操作:a=1、b=1、c=1

答: 暂无答案