我正在尝试使用牛顿法来计算根,但是当我打印结果时,我得到了nan。请问错误是什么。当我手动区分时,我得到正确的结果。
from sympy import *
x_sym = sym.symbols('x')
a = 0.1
b = pi
x = 1.0
func = x**2 - sin(x)
for i in range(1, 10):
x1 = x - func / diff(func, x_sym)
if abs(b - a) <= 1.0E-8:
break
x = x1
print('The root is: %0.8f' % x1)
What is inf and nan?您被零除。 “ diff(func,x_sym)”
for i in range(1, 10):
x1 = x - func / diff(func, x_sym)
z=diff(func, x_sym)
print('is diff zero?',z,type(z),z/z,'bonus why zoo?',1/z)
像Python中的东西一样被零除会产生nan或如果它是“真实的”零则抛出零除错误。
`diff: 0 <class 'sympy.core.numbers.Zero'>`