0
我一直在想如何實現這一點。通過Python中的另一個腳本創建一個新變量
我有2個python腳本,主要一個調用另一個並將它們傳遞給3個變量,然後這個只有一個函數的腳本返回一個長度爲4的元組。最後我通過第一個腳本調用這個腳本。
我的問題是有沒有什麼方法可以使元組在第一個腳本中創建一個新變量,例如矩陣或各種向量,所以不要一遍又一遍地調用函數。
腳本1
import numpy as np
import scipy.integrate as integrate
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from Funcion_gamma import Fgamma
import time
start_time = time.time()
"Aluminio"
E=7e10 #Modulo de Young
v=0.33 #Modulo de Poison
G=2.63e10 #Modulo de cizalladura
h=0.00286 #Anchura de la placa
a=0.85 #Lado 1 de la placa
b=0.65 #Lado 2 de la placa
rho=2703.6 #Densidad del material
Kmuelle=3
"M y N"
m=7
n=m
Fgamma(Kmuelle,a,m)
腳本2
import sympy as sp
import numpy as np
def Fgamma(KK,aa,M):
'Definicion de las variables simbolicas'
g, a, A, C, D, K, x = sp.symbols("g a A C D K x")
'Funcion Gartner y sus derivadas'
X=(A*sp.cos(g*x/a))+(sp.sin(g*x/a))+(C*sp.exp(-g*x/a))+(D*sp.exp(-g*(a-x)/a))
dx1=sp.diff(X,x,1)
dx2=sp.diff(X,x,2)
'Ecuaciones a resolver'
eq1= sp.Eq(X.subs(x,0),0)
eq2= sp.Eq(dx2.subs(x,0)/dx1.subs(x,0),K)
eq3= sp.Eq(X.subs(x,a),0)
eq4= sp.Eq(dx2.subs(x,a)/dx1.subs(x,a),-K)
'Resolucion de las ecuaciones'
D1=sp.solve(eq1,D)
eq33 = eq3.subs(D, D1[0])
C33=sp.solve(eq33,C)
D11=D1[0].subs(C,C33[0])
eq22=eq2.subs([(C, C33[0]),(D,D11)])
A22=sp.solve(eq22,A)
eq44=eq4.subs([(C,C33[0]),(D,D11)])
A44=sp.solve(eq44,A)
'Obtencion de A'
AF=A22[0]-A44[0]
AFF=sp.sympify(AF.subs([(K,KK),(a,aa)]))
'Calculo de las raices de gamma'
nn=np.linspace(0,M,num=M,endpoint=False,dtype='int')
gamma=np.zeros(M)
Afinal=np.zeros(M)
Cfinal=np.zeros(M)
Dfinal=np.zeros(M)
for jj in nn:
gamma[jj]=sp.nsolve(sp.Eq(AFF,0),(3+(jj*np.pi)))
Afinal[jj]=AFF.subs(g,gamma[jj])
Cfinal[jj]=C33[0].subs([(A,Afinal[jj]),(a,aa),(g,gamma[jj])])
Dfinal[jj]=D11.subs([(A,Afinal[jj]),(a,aa),(g,gamma[jj])])
print gamma
return gamma,Afinal,Cfinal,Dfinal
你想緩存功能的結果,以提高訪問速度? – user2464424
是的,如果可能的話,在第一個腳本上創建新變量並使用該變量來存儲結果。 –
然後就做吧。使用'cache = Fgamma(Kmuelle,a,m)'將該函數的結果存儲到名爲'cache'的變量中。否則,我可能不會正確理解你的問題。 – user2464424