内部ループは外部ループから新しい値を使用していません。 何が問題なのですか?それを修正するにはどうすればよいですか?内部変数forループ内に変数値が入りません
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
これは第2の実装です。変数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年代。自己文書化する名前は、特別なキーストロークの価値があります。特に、あとでコードを書く必要がある場合は特にそうです。 –