For döngüsünde scipy.optimize paketinden ikiye ayırma yöntemini kullanıyorum. Buradaki fikir, "eps_komp" vektöründeki her eleman (değer) için ikiye ayırma yöntemiyle "sig" değeri elde etmektir. Ben bu kadar kodlanmış ettik:Python: İşlev bir for döngüsü içinde bir değer almıyor
import numpy as np
import scipy.optimize as optimize
K=300
n = 0.43
E = 210000
Rm = 700
sig_a = []
RO_K = 300
RO_n = 0.43
eps_komp = [0.00012893048999999997,
0.018839115269999998,
0.,
0.022996934109999999,
-0.0037319012899999999,
0.023293921169999999,
0.0036927752099999997,
0.020621037629999998,
0.0063656587500000002,
0.020324050569999998,
-0.0025439530500000001,
0.018542128209999998,
0.,
0.019730076449999998,
0.0045837363899999999,
0.015275270549999997,
-0.0040288883499999999,
0.021215011749999999,
-0.0031379271699999997,
0.023590908229999999]
def eps_f(i):
return eps_komp[i]
for j in range(len(eps_komp)):
eps_komp_j = eps_f(j)
if j <= len(eps_komp):
def func(sig):
return eps_komp_j - sig/E - (sig/RO_K)**(1/RO_n)
sig_a.append(optimize.bisect(func, 0, Rm))
else:
break
print(sig_a)
Şimdi 0'a eps_f (j) 'de "j" değerini değiştirirseniz:
eps_komp_j = eps_f(0)
çalıştığını ve bu nedenle diğer tüm için yaptığı el ile eklediğim değerler, ancak for döngüsünde olduğu gibi tutarsam, "j" değeri otomatik olarak değişmez ve bir hata alıyorum:
f (a) ve f (b) sahip olmalıdır farklı işaretler
Kimsenin bir ipucu sorunu nedir ve bu nasıl çözülebilir?
Selamlar,
L
P.S. Dün bu konuyla ilgili başka bir konu yazdım, ama sorunla çok ilgili değildim ve olumsuz geri bildirim aldım. Ancak, bugün bunu çözmem gerekiyor, bu yüzden tekrar göndermeye zorlandım, ancak kodla biraz daha ileriye gitmeyi başardım, daha sonra yazıya girdim, bu yüzden bir repost değil ...
Bir hata mesajı aldığınızda, lütfen sadece son iletiyi değil, * tam * izlemesini yapıştırın. –
'j'nin döngü için doğru bir şekilde güncellenmediğine inanamıyorum. 'Print (j, eps_komp_j) 'ifadesini' sig_a.append' (insert.bisect ... '? –
'dan önce girerseniz ne olur? Bu kodu çalıştırdığımda neden' NameError: name' Emod 'tanımlı değil') [Minimal, Tam, Doğrulanabilir Örnek] (http://stackoverflow.com/help/mcve) –