私は問題を解決しようとしています。私は60の異なった値が必要です、そしてそれぞれの--letのsay-5 A
の値には、Z
の値が1からA
になります。そして、私は関数g
のすべての可能な結果を試してみたいと思うし、実際に次のコードでそれを行うことができます。しかし、私が実際に必要とするのは、対応するA
とZ
の値です。 x = 1の場合、A = 1,2,3,4,5とZ = 1、 3,4,5 となり、これは45の成果をもたらします。私は必要なのgが、私はすべての値を見つけることができます最小値を与える引数を見つける
>>>"The x , A , and Z values that makes g min are:"
>>>[0.0001 , 3.0, 2.0, 0.015006343],
[0.01263, 9.0, 7.0, 0.01609543],
..... and so on, 60 rows in total.
from __future__ import division
import numpy as np
import math
#*************constants************
b1 = 0.9917949
b2 = 0.01911
b3 = 0.000840
b4 = 0.10175
b5 = 0.000763
mu = 1.66057*10**(-24) #gram
c = 3.0*10**10 #cm/sec
me=9.1093897e-28 #gram
e=4.80320425e-10 #statcoulumbs
h = 6.62607004e-27
hbar=h/(2.0*math.pi)
lambd=hbar/(me*c)
Xvec=np.logspace(-3,3,60)
Zvec=np.zeros(0,'float')
minpos=np.zeros(0,'int')
gvec=np.zeros(0,'float')
minofgvec=np.zeros(0,'float')
minposvec=np.zeros(0,'float')
def gibbs(Zs,A,x):
efe=me*c**2*(x**2+1)**0.5
El=(4./3)*Zs*(-1.444)*Zs**(2./3)*e**2*x*(3*math.pi**2)**(-1./3)*lambd**(-1./3)
SEMF = mu*c**2 * (b1*A + b2*A**(2./3) - b3*Zs + b4*A*((1./2) - (Zs/A))**2 + (b5*Zs**2)/(A**(1./3)))
g=(SEMF+Zs*efe+(4./3)*Zs*El)/A
return g
for x in (1,2,3): #was -in Xvec, for simplicity I tried 1,2,3
for A in range(1,6):
for Zs in np.arange(1, A+1 , 1 , dtype=float)
g=gibbs(Zs,A,x)
gvec=np.append(gvec,g)
#minposvec=np.append(minposvec,gvec.argmin())
#minofgvec=np.append(minofgvec,min(gvec))
#minpos=np.append(minpos,minposvec.argmin())
#Zvec=np.append(Zvec,(1+minposvec))
、私はXvec(明らかに)とそのxにグラムの最小値を書き込むことができますが、私は「できれば分で、何かのようにグラムの最小値でありますその最小値で真のZ値とA値を見つける。私はargmin()
コマンドを試しましたが、それは私にすべての45の範囲の結果を与えます。だから私はZの値を抽出することはできません。私はすべての助けをありがとう
私はあなたが何をしようとして、本当にわかりません。私が混乱する理由がいくつかあります。まず、文法上の問題がありますが、やはりとandで始まる文です。次に、リストのリストでJSON構文を使用することを怠り、代わりにスペースを使用することを選択しました.Z = [[1]、[1,2]、[1,2,3]、[1,2,3,4] [1,2,3,4,5]]。 3番目のコードでは、変数Zsを使用してリストとその要素の両方を意味しますが、これは本質的に混乱します。これらの質問にお答えしようとする人は、あなたの問題に精通しておらず、あなたのコードと詳細をできるだけ明確にしようとすることを覚えておいてください。 – kpie
また、すべての関数の出力を試したくなく、すべての関数の入力を試してみたい、コード内に問題がある場合でも、かっこを追加すると個人的に読みやすくなります。あなたが掲示したコードにインデントの問題があるかもしれません...行 'minposvec = np.append(minposvec、gvec.argmin())'の前にマンタブがあるようです。 – kpie
あなたのコメントをありがとう。私はネイティブスピーカーではなく、おそらくそれが私の文法の言い訳になります。あなたが話しているラインは私が問題を抱えている場所です。私はgの位置を見つけようとしているので、最小にするZ引数を計算するかもしれません。しかし、Zの次元がAで変わるので、最小のgの指数は実際にZの値を見つけるのには役立ちません。 –