내부 루프는 외부 루프의 새 값을 사용하지 않습니다. 무엇이 잘못되었으며 어떻게 해결할 수 있습니까?가변 값이 내부 루프에 들어 가지 않음
import numpy as np
a = 0.0000001
b = 15.
d = 0.1
TOL = 1.0e-6
a1 = []
dd = 0.1
da1 = []
for i in range(0,10):
def f(v):
return np.cosh(d * v) - (1./v) * np.sinh(d * v) - 1.
FA = f(a)
FB = f(b)
for I in range(0,1000):
p = a + (b - a)/2.0
FP = f(p)
if FA == 0 or (b - a)/2.0 < TOL:
break
I = I + 1
if FA * FP > 0:
a = p
FA = FP
if FA * FP < 0:
b = p
a1.append(p)
da1.append(d)
d = d + dd
print a1
print da1
다음은 두 번째 구현입니다. 변수 d은 새 값을 표시하지만 내부 루프는 새로운 d 값을 등록하지 않는 것과 같은 결과 결과를 계속 제공합니다.
import numpy as np
a = 0.00001
a1 = []
dd = 0.1
da = 1.e-5
d = 0.1
yvs=[]
ds = []
EE = []
while d <= 1.:
dnew = d
print dnew
for i in range(0,1000000):
dnew = d
yv = np.cosh(dnew * a) - (1./a) * np.sinh(dnew * a) - 1.
yvs.append(yv)
a = a + da
a1.append(a)
i = i + 1
for ii in range(0,999999):
As = (a1[ii]+a1[ii+1])/2.
E = -1. * As**2
if yvs[ii]*yvs[ii+1] < 0:
EE.append(E)
print As, E
ii = ii + 1
d = dnew + dd
루프 내부에서 메서드를 정의하는 이유는 무엇입니까? 그렇게 효율적인 방법은 없습니다. –
그건 알아보기 힘듭니다. [묻는 방법] (http://stackoverflow.com/help/how-to-ask)을 읽고 질문에 해당 코드를 편집하십시오. –
작고 이해하기 어려운 변수 이름은 잡지에서 직접 [TI-99/4A] (https://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A)로 직접 복사 한 TI BASIC 프로그램을 상기시켜줍니다. 1980 년대. 자체 문서화하는 이름은 특히 나중에 코드에 대해 더 많은 작업을해야하는 경우에 추가 키 누를 가치가 있습니다. –