0
私はこれを達成する方法を知りました。Pythonで別のスクリプトを使って新しい変数を作成する
私は2つのpythonスクリプトを持っており、主要なものは3つの変数を渡しています。このスクリプトは1つの関数だけです。このスクリプトは長さ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