2016-04-04 22 views
1

Her eps_komp için 0 ile 700 arasında olan sig_a değerini hesapladığım bir ev saldırısı için python'da hızlı ve basit bir denklem çözücü yapıyorum. Bunu, denklemin mümkün olduğunca sıfıra yakın olması için, döngüler için 2, eps_komp değerini ilk seçen ve ikincinin sig_a en yakın değerini 0 ile 700 arasında aramak için ikincisi yaptım. İzin verilen hatayı "delta" ile tanımladım. Bu, bilişim yönteminde olduğu gibi benzer bir mantıktır. Bu kodu verilmiştir:Python sözdizimi hatası denklemi çözücü

eps_komp = [0.00012893048999999997, 
0.018839115269999998, 
0., 
0.022996934109999999, 
-0.0037319012899999999, 
0.023293921169999999, 
0.0036927752099999997, 
0.020621037629999998, 
0.0063656587500000002, 
0.020324050569999998] 

Rm=700 
sigma = np.linspace(0, Rm-0.01, Rm/0.01) 
delta = 0.001 
sig_a = [] 

for j in range(len(eps_komp)): 
    eps_j = eps_komp[j] 
    for i in range(len(sig)): 
     eps_j - sigma[i]/Emod - (sigma[i]/RO_K)**(1/RO_n) = diff 
     if diff <= delta: 
      sig_a.append(sigma[i]) 

eps_komp değerleri sadece ilk 10 vardır, orada sayılarının daha fazla olması ama sadece bir örnek için ilk 10 verdim.

SyntaxError:

Şimdi bu hatayı almaya devam ben yanlış bir endeks ile ilgili bir şey olduğunu biliyorum ama sadece sorunu göremiyorum operatörü

atayamayacağı. ...

Herhangi biri yardımcı olabilirse, benim için çok şey ifade eder. Teşekkürler.

Luka

+3

'atamak için bu _left_ tarafında olması gerekmektedir hesaplamaya diff' eşittir işareti: 'diff = eps_j - sigma [i]/Emod - (sigma [i]/RO_K) ** (1/RO_n)' –

+0

hala orada "sig" diye tanımlı olmamakla ilgili bir hata görüyorum. kodunuzla ilgili başka sorunlar olabilir. ('np' olarak ithalat numpy ekledikten sonra) –

+0

teşekkür ederim, ben sadece diff'yi öne geçiriyorum ve işe yarıyor :) – mcluka

cevap

0

Eşittir sol tarafında olması gerekmektedir hesaplama fark atamak için:

diff = eps_j - sigma[i]/Emod - (sigma[i]/RO_K)**(1/RO_n)