如何在包含三角函数的python中求解以下方程式

问题描述 投票:-1回答:1

下面的代码将永远运行并且不会停止。我想问题出在最后一行代码中

from sympy import *
v_swe, alpha= symbols('v_swe alpha')
Tc=310; Th=635; r=287; M=1.5; r_t=100; W=7*1000*3600;
f=1; hours=6; stress=240e+6; sf=3; eff=1-Tc/Th
v_swc=v_swe
v_k=0.01*v_swe
v_r=0.01*v_swe
v_h=0.01*v_swe
v_dc=0.01*v_swe
v_de=0.01*v_swe
c=0.5*((v_swe/Th)**2+2*v_swe*v_swc*cos(alpha)/(Th*Tc)+(v_swc/Tc)**2)
s=v_swc/(2*Tc)+ v_dc/Tc+ v_k/Tc + v_r*log(Th/Tc)/(Th-Tc) +v_h/Th +v_swe/(2*Th)+ v_de/Th
b=c/s
beta=atan((v_swe*sin(alpha)/Th)/(v_swe*cos(alpha)/Th+v_swc/Tc))
p_max=M*r/(s*(1-b))
p_mean=M*r/(s*(sqrt(1-b**2)))
W_one_cycle=pi*v_swc*p_mean*(sqrt(1-b**2)-b)*(sin(beta)+sin(beta-alpha))/b
print(1)
eq1=Eq(W_one_cycle,W/(eff*hours*3600*f))
eq2=Eq(p_max,stress/(sf*r_t))
sol_dict=solve((eq1,eq2),(v_swe, alpha))
python math sympy equation-solving
1个回答
0
投票

是的,为一组高度非线性的方程组寻找精确解可能要花费很长时间甚至是不可能的(而且要花很长时间才能弄清楚)。如果您知道方程有解的地方,则可以使用nsolve获得数值结果。输出将是一个Matrix,您可以将其展平以获取结果列表:

>>> from sympy import flatten, nsolve
>>> flatten(nsolve((eq1,eq2),(v_swe, alpha),(1,0)))  # (1,0) is a guess
[0.213888341211035, -1.20903173428140e-5]
© www.soinside.com 2019 - 2024. All rights reserved.