Python 2.7 牛顿法

Python 2.7 牛顿法,python-2.7,scipy,newtons-method,Python 2.7,Scipy,Newtons Method,我需要找到一个相当复杂的方程的根,我已经读到python有一组函数可以提供帮助。我试图弄清楚它们是如何工作的,但我失败了。我看到的例子都很简单,我需要找到这个函数的根: 用B和K实数正数。有人能帮忙吗?这里有两种解决方案,第二种可能是解决问题的更简单、更正确的方法 诀窍是你必须让函数f记住K和B的值。一种方法是让它成为另一个函数的内部函数。外部函数用于设置K和B。它们位于返回的内部函数的变量范围内。这样,内部f函数就可以记住这些值。然后将返回的函数简单地传递给Newton-Raphson方法,

我需要找到一个相当复杂的方程的根,我已经读到python有一组函数可以提供帮助。我试图弄清楚它们是如何工作的,但我失败了。我看到的例子都很简单,我需要找到这个函数的根:


用B和K实数正数。有人能帮忙吗?

这里有两种解决方案,第二种可能是解决问题的更简单、更正确的方法

诀窍是你必须让函数
f
记住K和B的值。一种方法是让它成为另一个函数的内部函数。外部函数用于设置K和B。它们位于返回的内部函数的变量范围内。这样,内部
f
函数就可以记住这些值。然后将返回的函数简单地传递给Newton-Raphson方法,并找到根

from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np

def get_f(K=1, B=1):
    def f(x):
        return np.exp(-B*(np.power(B, x))-factorial(x)*K)
    return f

f = get_f(K=2, B=3)
print newton(f, 3, maxiter=1000)
用户评论说,
newton
函数有一个
args
参数,可用于向newton-Raphson函数传递额外参数。如果函数的形式是f(x,a,b,c…),那么a,b,c。。。是可以在
args
中给出的额外参数

同样的解决方案如下所示:

from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np

def f(x, K, B):
    return np.exp(-B*(np.power(B, x))-factorial(x)*K)

print newton(f, 3, args=(2, 3), maxiter=1000)

这里有两种解决方案,第二种可能是解决问题的更简单、更正确的方法

诀窍是你必须让函数
f
记住K和B的值。一种方法是让它成为另一个函数的内部函数。外部函数用于设置K和B。它们位于返回的内部函数的变量范围内。这样,内部
f
函数就可以记住这些值。然后将返回的函数简单地传递给Newton-Raphson方法,并找到根

from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np

def get_f(K=1, B=1):
    def f(x):
        return np.exp(-B*(np.power(B, x))-factorial(x)*K)
    return f

f = get_f(K=2, B=3)
print newton(f, 3, maxiter=1000)
用户评论说,
newton
函数有一个
args
参数,可用于向newton-Raphson函数传递额外参数。如果函数的形式是f(x,a,b,c…),那么a,b,c。。。是可以在
args
中给出的额外参数

同样的解决方案如下所示:

from scipy.misc import factorial
from scipy.optimize import newton
import numpy as np

def f(x, K, B):
    return np.exp(-B*(np.power(B, x))-factorial(x)*K)

print newton(f, 3, args=(2, 3), maxiter=1000)

我试图找出它们是如何工作的,但我失败了,非常糟糕
请说明您尝试了什么,并包括您得到的错误。不,重点是B和K是常量,但它们可以根据之前设置的某些参数进行更改。我不明白我怎么能设置它们。我想定义一个函数def(x,B,K),但我不知道它是否可行。“我想定义一个函数def(x,B,K),但我不知道它是否可行。”这是使用scipy优化函数的标准方法。试一试。
我试图弄清楚它们是如何工作的,但失败得很惨
请说明您尝试了什么,并包括您得到的错误。不,重点是B和K是常量,但它们可以根据之前设置的某些参数进行更改。我不明白我怎么能设置它们。我想定义一个函数def(x,B,K),但我不知道它是否可行。“我想定义一个函数def(x,B,K),但我不知道它是否可行。”这是使用scipy优化函数的标准方法。试一试。“诀窍是你必须让函数f记住K和B的值。”不需要任何诀窍。只需使用牛顿的
args
参数。谢谢@WarrenWeckesser,很高兴知道:)“诀窍是你必须让函数f记住K和B的值。”不需要任何诀窍。只需使用牛顿的
args
参数即可。谢谢@WarrenWeckesser,很高兴知道:)