Pyinstallerを使って.pyファイルを.exeとして生成したいのですが
Recursion error : maximum recursion depth exceededと表示されてエラーになります
Anaconda Promptで入力しています
Recursion error : maximum recursion depth exceeded
ソースコードは単調減少する2曲線によって囲まれた領域に内接する正方形の最大値を求めるためのプログラムです。
該当のソースコード
Pthhon3.6
1from __future__ import division 2import numpy as np 3import matplotlib.pyplot as plt 4import sys 5sys.setrecursionlimit(50000) 6 7 8x1, y1 = np.loadtxt('./SNMmeasure_1.txt',comments='#',unpack='True') 9y2, x2 = np.loadtxt('./SNMmeasure_2.txt',comments='#',unpack='True') 10 11 12 13def intercept(p1,p2,p3,p4): 14 15 16 17 def line(pA,pB): 18 19 #2点pA,pBを通る直線を y=Ax+B で定義 20 A = (pB[1]-pA[1])/(pB[0]-pA[0]) 21 B = pA[1] - A*pA[0] 22 23 return A, B 24 25 def intersection(L1,L2): 26 #2直線L1,L2の交点を求める 27 #Lはy=Ax+Bの表記からL(A,B)で定義する 28 29 x = -(L2[1]-L1[1])/(L2[0]-L1[0]) 30 y = L1[0]*x + L1[1] 31 32 return x,y 33 34 35 L1 = line([p1[0],p1[1]],[p2[0],p2[1]]) 36 L2 = line([p3[0],p3[1]],[p4[0],p4[1]]) 37 38 39 40 R = intersection(L1,L2) 41 return R 42 43 44 45arrayintersection = [] 46arraydistance = [] 47array_i = [] 48 49i = 0 50while (i < len(x1)-1): 51 j = 0 52 while(j < len(x1)-1): 53 p1 = (x2[j],y2[j]) 54 p2 = (x2[j+1],y2[j+1]) 55 p3 = (x2[j],x2[j]-x1[i]+y1[i]) 56 p4 = (x2[j+1],x2[j+1]-x1[i]+y1[i]) 57 58 R = intercept(p1,p2,p3,p4) 59 60 61 62 if (abs((p1[0]+p2[0])/2 - R[0]) <= abs(p2[0]-p1[0])/2 ): #領域内で交差する条件:AcC 63 64 65 d = np.sqrt(((R[0]-x1[i])**2 + (R[1]-y1[i])**2)/2) 66 arrayintersection.append(R) 67 arraydistance.append(d) 68 array_i.append(i) 69 70 j += 1 71 72 i += 1 73 74 75 76 77 78 79fig = plt.figure(figsize=(6, 6)) 80plt.plot(x1, y1,'c') 81plt.plot(x2, y2,'c') 82 83 84print('SNM '+str(max(arraydistance))) 85 86 87k0 = np.where(arraydistance == max(arraydistance)) 88 89k = int(k0[0]) 90 91R_k = arrayintersection[k] 92 93x_dline = (R_k[0],x1[k]) 94A_dline = (y1[k]-R_k[1])/(x1[k]-R_k[0]) 95y_dline = (A_dline)*(x_dline-x1[k])+y1[k] 96 97plt.plot(x_dline,y_dline,'k',linestyle="dashed") 98plt.xlabel('V_in (V)') 99plt.ylabel('V_out (V)') 100plt.title('Static noise margin') 101plt.text(0.125,0.150,'SNM '+ str(round((1000*max(arraydistance)),1)) +' (mV)') 102 103 104#print(max(arraydistance)) 105 106 107
試したこと
sys.setrecursionlimitで再帰の上限を50000に引き上げました
初期値は1000らしいのですが5000,10000,25000と順に引き上げましたがダメでした
補足情報(FW/ツールのバージョンなど)
Python3.6
Win7
Python初めて5日くらいの初心者です
回答くださっても理解できないかもしれないですがよろしくお願いします
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/03 05:22