我制作了一个用于查找导数的代码,现在我试图使用它来帮助我使用牛顿拉夫森方法的代码:
- def derivative (f,x,h):
- import math
- return float(1/(2*h)) * (f(x+h) - f(x-h))
-
- def solve (f,x0,h):
- delta= f(x(n))/fp(x(n)
- for x(n+1) in solve():
- x(n)-delta
第一个DEF工作正常,但我无法让第二个DEF上班,任何人都可以看到我在做什么错吗?
# 回答1
在函数solve()中,您已经传递了参数'f','x0'和'h'。 " x"," fp"和" n"定义在哪里?您正在递归调用函数" solve()",但您没有传递任何参数。 " solve()"需要三个论点。 a" for"循环的格式是:
- for item in iterable:
- ......code......
"项目"不能是表达式。
- >>> for x+1 in range(10):
- ... print x
- Traceback (SyntaxError: can't assign to operator
- >>>
# 回答2
我应该如何修复它?求解中的FP是FISRT函数。 u使用第一个函数在第一个函数中获取F的导数。你知道我如何解决这个问题吗?
# 回答3
我不熟悉您正在尝试的计算。我知道,如果" fp()"在" solve()"中或在您的模块上全球范围内定义,则它将不起作用。
# 回答5
假设您的代码位于名为function.py的文件中。
- # code.py
- def fp():
- ....code....
-
- def derivative (f,x,h):
- import math
- return float(1/(2*h)) * (f(x+h) - f(x-h))
-
- def solve (f,x0,h):
- delta= f(x(n))/fp(x(n)
- for x(n+1) in solve():
- x(n)-delta
-
- if __name__ == __main__:
- ....call your functions...
函数'fp()'是全局到模块'函数'。
# 回答6
好的。是否有一种更简单的方法来编写Python中的Newton Raphsons方法?香港专业教育学院(Ive)研究了这里的论坛上的讨论,还没有发现任何可以帮助Mefurther的东西。您对如何编写该方法有任何线索吗?
# 回答7
Newton Raphson方法使用迭代过程来近似函数的根。这就是我对这个主题的了解,我必须查找。
# 回答8
这是我想到的:
导入数学
- def derivative (f, x, h):
- return float((f(x + h) - f(x))) / h
-
- def solve(f, x0, h, depth):
- if depth > 0:
- delta = f(x0) / derivative(f, x0, h)
- return solve(f, x0 - delta, h, depth - 1)
- else:
- return x0
我将您的功能中的公式更改为更熟悉的功能,并且我不得不添加参数"深度"才能告诉求解功能何时停止。这是必要的,因为在使用Newton-Raphson方法时,您必须选择使用多少次。
要使用求解功能,您可以做这样的事情:
- def function(x):
- return math.cos(x) - x**3
-
- solve(function, 0.5, 0.001, 6)
或者:
- function = lambda x: math.cos(x) - x**3
- solve(function, 0.5, 0.001, 6)
在该示例中,无论哪种方式,您都通过使用牛顿 - 拉夫森方法6次使用" 0.5"的牛顿 - 拉夫森方法来近似" cos(3) - x ** 3"。 " 0.001"是用于近似您的导数的" H"值。衍生物的准确性越低。
# 回答9
那是很棒的Kaezarrex-解决一个有趣的问题的很好解决方案。
BV
# 回答10
你好!
(牛顿 - 拉夫森法)
谁能描述该代码如何工作?
什么是深度,如何解决工作?
该函数导数仅给我们一个函数的导数:
例如:
- >>> derivative(math.sin, math.pi, 0.0001)
- -0.9999999983354435
-
但是如何解决工作?
求解使用衍生功能。
- def derivative (f, x, h):
- return float((f(x + h) - f(x))) / h
-
- def solve(f, x0, h, depth):
- if depth > 0:
- delta = f(x0) / derivative(f, x0, h)
- return solve(f, x0 - delta, h, depth - 1)
- else:
- return x0
-