이 문제는 C/C++에서 해결 된 것으로 알고 있습니다. 그러나 파이썬으로 변환 할 수있는 언어로는 충분하지 않습니다. 파이썬에서 this을 만들려고합니다. 내가 올 수 있었던 가장 가까운이었다이 :파이썬의 Secant 메서드 함수
#This is meant to work for functions of the form x^a + b = 0
def secant(base, exp=2, it=20):
def f(x):
return x**exp - base
x1 = base/float(exp**2)
xnm1 = x1 - 5
xnm2 = x1 + 5
xn = 0
for n in range(it):
q = (xnm1-xnm2)/float(f(xnm1)-f(xnm2))
xn = xnm1 - (f(xnm1)*q)
xnm1, xnm2 = xn, xnm1
return xn
print secant(2, 2)
이 오류를 반환
Traceback (most recent call last):
File "/Users/Joe/Desktop/secant.py", line 16, in <module>
print secant(2, 2)
File "/Users/Joe/Desktop/secant.py", line 11, in secant
q = (xnm1-xnm2)/float(f(xnm1)-f(xnm2))
ZeroDivisionError: float division by zero
은 내가 오프이 코드를 기반으로 뉴턴 방법, 프로그램, 그러나 수 있었다. 도움이된다면, 여기있다 :
def newton(base, exp=2, it=20):
def f(x):
return x**exp - base
def df(x):
return exp*(x**(exp-1))
x1 = base/float(exp**2)
xnp = x1
xn = 0
for n in range(it):
xn = xnp - ((f(xnp)/df(xnp)))
xnp = xn
return xn
다음 방법은 20 반복 후 정확도 12 자리 대답을 제공합니다. 어떤 도움을 주시면 감사하겠습니다.
무엇이 작동하지 않습니까? –
실례합니다. 나는 제로 오류로 나눗셈을 얻는다. – JShoe