scipy.optimize에서 가져온 Newton 메소드를 사용하여 함수 "func"에 대한 루트 (즉, 값 x를 f (x) = 0으로 지정)를 찾고 싶습니다. C가 아닌Newton을 통한 수치 근원 찾기
Traceback (most recent call last):
File "root_finding_stack.py", line 25, in <module>
res = optimize.newton(func(U, c, b, a), U_0(b, c), fprime=func_prime(U, c, a), args=(c, b, a))
NameError: name 'c' is not defined
오류가 말한다 : 분석적 FUNC에서 = 0을 가정하고 U. 나는 follwing을 오류가 에 대한 해결함으로써
import numpy
from scipy import optimize
def A(b, c, e=70):
d = 1 - c
b_prime = ((1 + b) ** 3)
wurzel = numpy.sqrt(c * b_prime + d)
return e * wurzel
def U(b, c, e=70):
return A(b, c, e=70)/e
def func(U, c, b, a):
return U(b, c, e=70)**2 - (U(b, c, e=70)**a * (1-c)) - (c * (1+b)**3)
def func_prime(U, c, a):
return 2*U(b, c, e=70) - (a*(U(b, c, e=70)**(a-1)))*(1-c)
def U_0(b, c):
numpy.sqrt((c * (1+b)**3) + 1 - c)
res = optimize.newton(func(U, c, b, a), U_0(b, c), fprime=func_prime(U, c, a), args=(c, b, a))
내가 U_0 계산 : 나는 다음과 같은 코드를 작성 정의되었지만 그것이 핵심입니다. 저는 a, b, c를 definde하지 않고 U (a, b, c)를 찾아서 내 기능을 뿌리 내리고 싶습니다. 잘못된 방법을 사용하고 있습니까? 아니면 여기서 내가 뭘 잘못하고 있습니까? 나는 optimize.newton 기능을 제대로
편집을 3 개 인수를 전달하는 경우 또한, 나는 확실하지 않다 : 나는이 U (B을 찾기 위해 노력하고
수학 표기법으로 기능을 추가, c)이 방정식을 가득 채우십시오.
나는 scipy를 모른다.하지만 확실히'.newton'을 함수 객체로 전달해야한다. 마치'func'에'U'를 넘기는 것과 같다. 대신에'func (U, c, b, a)'호출의 _result_를 전달하고있다. 호출이 성공하면'.newton'은 그 arg에 대해 float를 얻는다. 물론 호출 할 때 arg는 정의되지 않기 때문에 성공하지 못합니다. –
평범한 수학 표기법으로 근근이 가려고하는 함수를 제공 할 수 있습니까? 이미지로 질문에 게시 할 수 있습니다. 네가 그렇게한다면 나에게 알려줘. –
수학 표기법을 추가했습니다. – user7248647