2016-11-16 6 views
-3

内部ループは外部ループから新しい値を使用していません。 何が問題なのですか?それを修正するにはどうすればよいですか?内部変数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 
+0

なぜループ内でメソッドを定義していますか?効率的な方法はありません。 –

+1

それは読みにくいです。 [質問する](http://stackoverflow.com/help/how-to-ask)を読んで、そのコードをあなたの質問に編集してください。 –

+0

これらの小さな変数名は、私が雑誌から[TI-99/4A](https://en.wikipedia.org/wiki/Texas_Instruments_TI-99/4A)に直接コピーしたTI BASICプログラムを思い出させます。 1980年代。自己文書化する名前は、特別なキーストロークの価値があります。特に、あとでコードを書く必要がある場合は特にそうです。 –

答えて

1

以前の回答が削除されました。あなたが持っている主な問題ではありません。

あなたは間違った値をトレース: dnew D行い、実際に、変更を。しかし、あなたが気にしている値のデータフローの一部ではありません。上位プログラムで

Dは、その開始値と増分値に排他的に依存するそれら0.1の両方、及びDDは変化しません。 pは、,およびbの値にのみ依存し、これらの値も変更されません。

はい、あなたはFA、FB、FPを計算するのにうってつけの仕事をしますが、ループの一番下に来たらどこにも保存しないで、次のループでtehmを上書きします。

下のプログラムは、 Eとおりとと同じ問題がある場合:あなたは、彼らが依存するパラメータ、(それがYVS、あなたがプリントアウトしたことがないですべてです)ので、出力を変更することはありませんがすべてのループで同じです。

1文字と2文字の変数を使用していて、コードを文書化していないので、これを修正する方法はありません。あなたのプログラムは何をすべきかほとんど考えていませんがいくつかの計算シリーズを収束させたいと思われる。

+0

ありがとう、私は修正した.. –

関連する問題