質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

122閲覧

File "G:\WMTX.py", line 252, in WMTX s.append(0) NameError: name 's' is not defined

tamanegi.gogo

総合スコア16

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/11 05:25

コード import math def WMTX (ndtl,lintl,ni,nj,d,e,yline,yii,rz,rw,su,sl,gu,gl, nqgst,npgst,nplst,pp,qq,wpl,wql,wpg,wqg,per,rp,rq, nqg,npg,bb,cc,nbqg,idqg,nbpg,idpg,ndsl,pl,nd_type): ### WMTX 修正方程式を作成するサブルーチン ### ### 修正方程式は対象行列であるため,このルーチンでは上三角のみを作成した後,### ### 下三角に上三角の値を対象行列となるように代入している。### ### 配列の初期化 ### ### W行列構成行列 ### diagW = [[0 for i in range(npg+nqg+4*ndtl+1)] for j in range(npg+nqg+4*ndtl+1)] Gvect = [[0 for i in range(1)] for j in range(npg+nqg+4*ndtl+1)] diagPG = [[0 for i in range(npg+1)] for j in range(npg+1)] gvctPG = [[0 for i in range(1)] for j in range(npg+1)] diagQG = [[0 for i in range(npg+1)] for j in range(nqg+1)] gvctQG = [[0 for i in range(1)] for j in range(nqg+1)] diagPF = [[0 for i in range(4*ndtl+1)] for j in range(4*ndtl+1)] gvctPF = [[0 for i in range(1)] for j in range(4*ndtl+1)] ### 有効潮流と無効潮流 ### p = [0]*(ndtl+1) q = [0]*(ndtl+1) ### diagPFの対角要素の構成要素 ### DLDD = [0]*(ndtl+1) DLDE = [0]*(ndtl+1) DLEE = [0]*(ndtl+1) DLD = [0]*(ndtl+1) DLE = [0]*(ndtl+1) dpl4 = [[0 for i in range(1)] for j in range(lintl*20+1)] #lintl print(dpl4) ### dpls4 = [[0 for i in range(1)] for j in range(lintl*6+1)] ### ### ☝   ### ### 増やすと配列増やせる ### for i in range(1,ndtl+1): for l in range(1,lintl+1): ii = ni[l] jj = nj[l] if ii>jj: jjtmp = jj jj = ii ii = jjtmp j = jj ### iとつながっているjで(i<j)のみ計算 ### if i == ii: di = d[i] ei = e[i] rpi = rp[i] rqi = rq[i] dj = d[j] ej = e[j] rpj = rp[j] rqj = rq[j] dij = di-dj eij = ei*ej Gij = yline[l].real Bij = yline[l].imag Gcos = Gij*math.cos(dij) Gsin = Gij*math.sin(dij) Bcos = Bij*math.cos(dij) Bsin = Bij*math.sin(dij) Pij = eij*( Gcos + Bsin) Pji = eij*( Gcos - Bsin) Qij = eij*( Gsin - Bcos) Qji = eij*(-Gsin - Bcos) ### 有効母線潮流と無効母線潮流の計算 ### p[i] = p[i] + Pij p[j] = p[j] + Pji q[i] = q[i] + Qij q[j] = q[j] + Qji ZPL = rz[nplst+l] WPL = rw[nplst+l] LPL = sl[nplst+l] UPL = su[nplst+l] PL = pl[l] PL_MAX = gu[nplst+l] PL_MIN = gl[nplst+l] ZWPL = ZPL + WPL SPL = WPL/UPL-ZPL/LPL SSPL = WPL/UPL*(PL + UPL -PL_MAX) -ZPL/LPL*(PL -LPL - PL_MIN)\ -per*(1/UPL-1/LPL) ### 有効線路潮流の1次微分と2次微分の値 ### ### i対i ### PLDiDi = -Pij PLDiEi = -Qij/ei PLEiEi = -2*Gij ### i対j ### PLDiDj = Pij PLDiEj = -Qij/ej PLEiDj = Qij/ei PLEiEj = Pij/eij ### j対j ### PLDjDj = -Pij PLDjEj = Qij/ej PLEjEj = 0 ### i ### PLDi = -Qij PLEi = Pij/ei - 2*Gij*ei ### j ### PLDj = Qij PLEj = Pij/ej ### 最大ステップ長を算出する際に必要となるため保存 ### dpl4[4*(l-1)+1][0] = PLDi dpl4[4*(l-1)+2][0] = PLEi dpl4[4*(l-1)+3][0] = PLEj dpl4[4*(l-1)+4][0] = PLEj ### diagPFの非対角成分に値を代入 ### ### 非対角のDi対Dj ### diagPF[4*(i-1)+1][4*(j-1)+1] = diagPF[4*(i-1)+1][4*(j-1)+1]\ +(rpi*Pij+rqi*Qij+rpj*Pji+rqj*Qji)\ +PLDi*SPL*PLDj+PLDiDj*ZWPL ### 非対角のDi対Ej ### diagPF[4*(i-1)+1][4*(j-1)+2] = diagPF[4*(i-1)+1][4*(j-1)+2]\ +(-rpi*Qij + rqi*Pij + rpj*Qji - rqj*Pji)/ej\ +PLDi*SPL*PLEj + PLDiEj*ZWPL ### 非対角のDi対RPj ### diagPF[4*(i-1)+1][4*(j-1)+3] = diagPF[4*(i-1)+1][4*(j-1)+3] + Qji ### 非対角のDi対RQj ### diagPF[4*(i-1)+1][4*(j-1)+4] = diagPF[4*(i-1)+1][4*(j-1)+4] - Pji ### 非対角のEi対Dj ### diagPF[4*(i-1)+2][4*(j-1)+1] = diagPF[4*(i-1)+2][4*(j-1)+1]\ +(rpi*Qij - rqi*Pij - rpj*Qji + rqj*Pji)/ei\ +PLEi*SPL*PLDj + PLEiDj*ZWPL ### 非対角のEi対Ej ### diagPF[4*(i-1)+2][4*(j-1)+2] = diagPF[4*(i-1)+2][4*(j-1)+2]\ +(rpi*Pij + rqi*Qij + rpj*Pji + rqj*Qji)/eij\ +PLEi*SPL*PLEj + PLEiEj*ZWPL ### 非対角のEi対RPj ### diagPF[4*(i-1)+2][4*(j-1)+3] = diagPF[4*(i-1)+2][4*(j-1)+3]+ Pji/ei ### 非対角のEi対RQj ### diagPF[4*(i-1)+2][4*(j-1)+4] = diagPF[4*(i-1)+2][4*(j-1)+4] + Qji/ei ### 非対角のRPi対Dj ### diagPF[4*(i-1)+3][4*(j-1)+1] = diagPF[4*(i-1)+3][4*(j-1)+1] + Qij ### 非対角のRPi対Ej ### diagPF[4*(i-1)+3][4*(j-1)+2] = diagPF[4*(i-1)+3][4*(j-1)+2] + Pij/ej ### 非対角のRPi対RPj ### diagPF[4*(i-1)+3][4*(j-1)+3] = diagPF[4*(i-1)+3][4*(j-1)+3] + 0 ### 非対角のRPi対RQj ### diagPF[4*(i-1)+3][4*(j-1)+4] = diagPF[4*(i-1)+3][4*(j-1)+4] + 0 ### 非対角のRQi対Dj ### diagPF[4*(i-1)+4][4*(j-1)+1] = diagPF[4*(i-1)+4][4*(j-1)+1] - Pij ### 非対角のRQi対Ej ### diagPF[4*(i-1)+4][4*(j-1)+2] = diagPF[4*(i-1)+4][4*(j-1)+2] + Qij/ej ### 非対角のRQi対RPj ### diagPF[4*(i-1)+4][4*(j-1)+3] = diagPF[4*(i-1)+4][4*(j-1)+3] + 0 ### 非対角のRQi対RQj ### diagPF[4*(i-1)+4][4*(j-1)+4] = diagPF[4*(i-1)+4][4*(j-1)+4] + 0 ##### diagPFの対角成分のための合算 ##### DLDD[i] = DLDD[i] + (-rpj*Pji - rqj*Qji)\ +PLDi*SPL*PLDi + ZWPL*PLDiDi DLDE[i] = DLDE[i] +( rpj*Qji - rqj*Pji)/ei\ +PLDi*SPL*PLEi + ZWPL*PLDiEi DLEE[i] = DLEE[i] + PLEi*SPL*PLEi + ZWPL*PLEiEi DLDD[j] = DLDD[j] +(-rpi*Pij - rqi*Qij)\ +PLDj*SPL*PLDj + ZWPL*PLDjDj DLDE[j] = DLDE[j] +( rpi*Qij - rqi*Pij)/ej\ +PLDj*SPL*PLEj + ZWPL*PLDjEj DLEE[j] = DLEE[j] + PLEj*SPL*PLEj + ZWPL*PLEjEj DLD[i] = DLD[i] + rpj*Qji - rqj*Pji + SSPL*PLDi DLE[i] = DLE[i] + (rpj*Pji + rqj*Qji)/ei + SSPL*PLEi DLD[j] = DLD[j] + rpi*Qij - rqi*Pij + SSPL*PLDj DLE[j] = DLE[j] + (rpi*Pij + rqi*Qij)/ej + SSPL*PLEj ### diagPFの対角成分を作成 ### for i in range(1,ndtl+1): ei = e[i] rpi = rp[i] rqi = rq[i] Pii = p[i] Qii = q[i] e_flag = round(nd_type[i]/100) if e_flag == 1: S = [] SS = [] s.append(0) ss.append(0) else: Z = rz[i] W = rw[i] L = sl[i] U = su[i] E_MIN = gl[i] E_MAX = gu[i] S = W/U-Z/L SS = W/U*(e[i] + U -E_MAX) - Z/L*(e[i] -L -E_MIN) -per*(1/U-1/L) Gii = yii[i].real Bii = yii[i].imag if i in range(idpg[i] == 0): q[i] = q[i] - Bii*ei*ei + wql[i] - wqg[i] else: q[i] = q[i] - Bii*ei*ei + wql[i] - qq(idqg[i]) if i in range(idpg[i] == 0): p[i] = p[i] + Gii*ei*ei + wpl[i] - wpg[i] else: p[i] = p[i] + Gii*ei*ei + wpl[i] - pp(idpg[i]) diagPF[4*(i-1)+1][4*(i-1)+1] = DLDD[i] - rpi*Pii-rqi*Qii diagPF[4*(i-1)+1][4*(i-1)+2] = DLDE[i] +(-rpi*Qii+rqi*Pii)/ei diagPF[4*(i-1)+1][4*(i-1)+3] = -Qii diagPF[4*(i-1)+1][4*(i-1)+4] = Pii diagPF[4*(i-1)+2][4*(i-1)+2] = DLEE[i] + 2*(rpi*Gii - rqi*Bii)+S diagPF[4*(i-1)+2][4*(i-1)+3] = Pii/ei+2*Gii*ei diagPF[4*(i-1)+2][4*(i-1)+4] = Qii/ei-2*Bii*ei return ''' **ボールドテキスト** File "G:\WMTX.py", line 252, in WMTX s.append(0) NameError: name 's' is not defined このエラーメッセージが出ます 助けていただきたいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

sという名前の変数が定義されてないというエラーです

#もしかして、S との間違い?

投稿2019/01/11 05:31

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tamanegi.gogo

2019/01/11 05:34

大文字のSでしょうか? 初心者ですが、プログラムを作成していて 右も左もわからない状態です。
y_waiwai

2019/01/11 05:42

大文字小文字は別と判断されるので、おそらくはS、SSだ、としかいえません。 あなたのコードなんですから、動作上、何が適切かはあなたが判断しないとダメですね
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問