Python 辛线性方程组的求解
你能告诉我吗,我需要用python中的sympy符号解线性方程组。我已经编程自动创建了一个线性方程组,方程组的数量由n(预定义)决定。我也设置了变量。 结果如下:Python 辛线性方程组的求解,python,sympy,Python,Sympy,你能告诉我吗,我需要用python中的sympy符号解线性方程组。我已经编程自动创建了一个线性方程组,方程组的数量由n(预定义)决定。我也设置了变量。 结果如下: ########## system of linear equations ########## [-mui0*exp(Ea0**2/(T0*k)) - mui0*exp(Ea1**2/(T0*k)) - mui0*exp(Ea2**2/(T0*k)) - mui0*exp(Ea3**2/(T0*k)) + (Eb0**2/(T
########## system of linear equations ##########
[-mui0*exp(Ea0**2/(T0*k)) - mui0*exp(Ea1**2/(T0*k)) - mui0*exp(Ea2**2/(T0*k)) - mui0*exp(Ea3**2/(T0*k)) + (Eb0**2/(T0*k) - 2*Ec0)*exp(Ea0**2/(T0*k)) + (Eb1**2/(T0*k) - 2*Ec1)*exp(Ea1**2/(T0*k)) + (Eb2**2/(T0*k) - 2*Ec2)*exp(Ea2**2/(T0*k)) + (Eb3**2/(T0*k) - 2*Ec3)*exp(Ea3**2/(T0*k)), -mui1*exp(Ea0**2/(T1*k)) - mui1*exp(Ea1**2/(T1*k)) - mui1*exp(Ea2**2/(T1*k)) - mui1*exp(Ea3**2/(T1*k)) + (Eb0**2/(T1*k) - 2*Ec0)*exp(Ea0**2/(T1*k)) + (Eb1**2/(T1*k) - 2*Ec1)*exp(Ea1**2/(T1*k)) + (Eb2**2/(T1*k) - 2*Ec2)*exp(Ea2**2/(T1*k)) + (Eb3**2/(T1*k) - 2*Ec3)*exp(Ea3**2/(T1*k)), -mui2*exp(Ea0**2/(T2*k)) - mui2*exp(Ea1**2/(T2*k)) - mui2*exp(Ea2**2/(T2*k)) - mui2*exp(Ea3**2/(T2*k)) + (Eb0**2/(T2*k) - 2*Ec0)*exp(Ea0**2/(T2*k)) + (Eb1**2/(T2*k) - 2*Ec1)*exp(Ea1**2/(T2*k)) + (Eb2**2/(T2*k) - 2*Ec2)*exp(Ea2**2/(T2*k)) + (Eb3**2/(T2*k) - 2*Ec3)*exp(Ea3**2/(T2*k)), -mui3*exp(Ea0**2/(T3*k)) - mui3*exp(Ea1**2/(T3*k)) - mui3*exp(Ea2**2/(T3*k)) - mui3*exp(Ea3**2/(T3*k)) + (Eb0**2/(T3*k) - 2*Ec0)*exp(Ea0**2/(T3*k)) + (Eb1**2/(T3*k) - 2*Ec1)*exp(Ea1**2/(T3*k)) + (Eb2**2/(T3*k) - 2*Ec2)*exp(Ea2**2/(T3*k)) + (Eb3**2/(T3*k) - 2*Ec3)*exp(Ea3**2/(T3*k))]
###### vars ######
[Ea0, Ea1, Ea2, Ea3, Ea4, Eb0, Eb1, Eb2, Eb3, Eb4, Ec0, Ec1, Ec2, Ec3, Ec4]
###### ###### ###### ###### ###### ###### ###### ######
现在当我写:a=linsolve(list\u eq,list\u var)
sympy如何找到线性方程组的解这是我的全部代码:
from sympy import exp,symbols
from sympy import Float,linsolve
def chis_znam_construct(T,i_eq,n):
En1 = symbols('Eb:' + str(n+1))
En0 = symbols('Ea:' + str(n+1))
En2 = symbols('Ec:' + str(n+1))
mui = symbols('mui:' + str(n+1))
k = symbols('k')
chis=0
znam=0
i_levels=0
eq=[]
varS=[]
dictvanfleck=dict({})
dictvanfleck['eq']=[]
dictvanfleck['vars']=[]
def getvars(f,varS):
i_var=0
while i_var<=(len(f)-1):
varS.append(f[i_var])
i_var+=1
return varS
variable=getvars(En0,varS)
variable=getvars(En1,varS)
variable=getvars(En2,varS)
for i_levels in range(n):
chis+=((En1[i_levels]**2)/(k*T)-
(En2[i_levels]+En2[i_levels]))*exp((En0[i_levels]**2)/(k*T))
znam+=mui[i_eq]*exp((En0[i_levels]**2)/(k*T))
i_levels+=1
print('')
print('')
eq.append(chis-znam)
dictvanfleck['vars']=variable
dictvanfleck['eq']=eq
return dictvanfleck
def eq_construct(T,n):
i_eq=0
eq=[]
for i_eq in range(n):
eq.append(chis_znam_construct(T[i_eq],i_eq,n))
i_eq+=1
return eq
print('')
print('')
def solve_eq(T,n):
equations=eq_construct(T,n)
eqA=equations[1]
var=eqA['vars']
i=0
equat=[]
while i<=(n-1):
eqA=equations[i]
eqq=eqA['eq']
equat.append(eqq[0])
i+=1
list_eq=str(equat)
list_var=str(var)
print('')
print('list_eq',list_eq)
print('')
print('list_var',list_var)
a = linsolve(list_eq,list_var)
return a
n = 4
T = symbols('T:' + str(n+1))
equations=solve_eq(T,n)
从sympy导入exp,符号
来自sympy导入浮点,linsolve
定义chis_znam_构造(T,i_eq,n):
En1=符号('Eb:'+str(n+1))
En0=符号('Ea:'+str(n+1))
En2=符号('Ec:'+str(n+1))
mui=符号('mui:'+str(n+1))
k=符号('k')
chis=0
znam=0
i_水平=0
eq=[]
变量=[]
dictvanfleck=dict({})
dictvanfleck['eq']=[]
dictvanfleck['vars']=[]
def getvars(f,varS):
i_var=0
虽然i_var你会笑,但是发现了一个错误:首先,我从列表中创建了一个元组,一些错误消失了;但最有趣的是,当我显式设置方程和变量时,simpi无法求解方程:
n = 4
T = sp.symbols('T:' + str(n+1))
Ea0, Ea1, Ea2, Ea3, Ea4, Eb0, Eb1, Eb2, Eb3, Eb4, Ec0, Ec1, Ec2, Ec3, Ec4, T0, T1, T2,
T3, T4, mui0, mui1, mui2, mui3, mui4 = sp.symbols('Ea0, Ea1, Ea2, Ea3, Ea4, Eb0, Eb1,
Eb2, Eb3, Eb4, Ec0, Ec1, Ec2, Ec3, Ec4, T0, T1, T2, T3, T4, mui0, mui1, mui2, mui3,
mui4')
eq_one=sp.Eq(-mui0*exp(Ea0**2/(T0*k)) - mui0*exp(Ea1**2/(T0*k)) -
mui0*exp(Ea2**2/(T0*k)) -
mui0*exp(Ea3**2/(T0*k)) + (Eb0**2/(T0*k) - 2*Ec0)*exp(Ea0**2/(T0*k)) +
(Eb1**2/(T0*k) - 2*Ec1)*exp(Ea1**2/(T0*k)) + (Eb2**2/(T0*k) -
2*Ec2)*exp(Ea2**2/(T0*k)) +
(Eb3**2/(T0*k) - 2*Ec3)*exp(Ea3**2/(T0*k)))
eq_two=sp.Eq(-mui1*exp(Ea0**2/(T1*k)) - mui1*exp(Ea1**2/(T1*k)) -
mui1*exp(Ea2**2/(T1*k)) - mui1*exp(Ea3**2/(T1*k)) +
(Eb0**2/(T1*k) - 2*Ec0)*exp(Ea0**2/(T1*k)) + (Eb1**2/(T1*k) -
2*Ec1)*exp(Ea1**2/(T1*k)) + (Eb2**2/(T1*k) - 2*Ec2)*exp(Ea2**2/(T1*k)) +
(Eb3**2/(T1*k) - 2*Ec3)*exp(Ea3**2/(T1*k)))
eq_three=sp.Eq(-mui2*exp(Ea0**2/(T2*k)) - mui2*exp(Ea1**2/(T2*k)) -
mui2*exp(Ea2**2/(T2*k)) -
mui2*exp(Ea3**2/(T2*k)) + (Eb0**2/(T2*k) - 2*Ec0)*exp(Ea0**2/(T2*k)) +
(Eb1**2/(T2*k) - 2*Ec1)*exp(Ea1**2/(T2*k)) + (Eb2**2/(T2*k) -
2*Ec2)*exp(Ea2**2/(T2*k)) +
(Eb3**2/(T2*k) - 2*Ec3)*exp(Ea3**2/(T2*k)))
eq_four=sp.Eq(-mui3*exp(Ea0**2/(T3*k)) - mui3*exp(Ea1**2/(T3*k)) -
mui3*exp(Ea2**2/(T3*k)) - mui3*exp(Ea3**2/(T3*k)) + (Eb0**2/(T3*k) -
2*Ec0)*exp(Ea0**2/(T3*k)) +
(Eb1**2/(T3*k) - 2*Ec1)*exp(Ea1**2/(T3*k)) + (Eb2**2/(T3*k) -
2*Ec2)*exp(Ea2**2/(T3*k)) +
(Eb3**2/(T3*k) - 2*Ec3)*exp(Ea3**2/(T3*k)))
ans = sp.solve((eq_one, eq_two,eq_three,eq_four), (Ea0, Ea1, Ea2, Ea3))
print('ответ :', ans)
raise NotImplementedError('could not solve %s' % eq2)
NotImplementedError: could not solve ....
您应该显示完整的代码来演示示例。我不知道如何查看您看到的错误消息。在任何情况下,您显示的方程式在vars
中给出的符号中都不是线性的。
n = 4
T = sp.symbols('T:' + str(n+1))
Ea0, Ea1, Ea2, Ea3, Ea4, Eb0, Eb1, Eb2, Eb3, Eb4, Ec0, Ec1, Ec2, Ec3, Ec4, T0, T1, T2,
T3, T4, mui0, mui1, mui2, mui3, mui4 = sp.symbols('Ea0, Ea1, Ea2, Ea3, Ea4, Eb0, Eb1,
Eb2, Eb3, Eb4, Ec0, Ec1, Ec2, Ec3, Ec4, T0, T1, T2, T3, T4, mui0, mui1, mui2, mui3,
mui4')
eq_one=sp.Eq(-mui0*exp(Ea0**2/(T0*k)) - mui0*exp(Ea1**2/(T0*k)) -
mui0*exp(Ea2**2/(T0*k)) -
mui0*exp(Ea3**2/(T0*k)) + (Eb0**2/(T0*k) - 2*Ec0)*exp(Ea0**2/(T0*k)) +
(Eb1**2/(T0*k) - 2*Ec1)*exp(Ea1**2/(T0*k)) + (Eb2**2/(T0*k) -
2*Ec2)*exp(Ea2**2/(T0*k)) +
(Eb3**2/(T0*k) - 2*Ec3)*exp(Ea3**2/(T0*k)))
eq_two=sp.Eq(-mui1*exp(Ea0**2/(T1*k)) - mui1*exp(Ea1**2/(T1*k)) -
mui1*exp(Ea2**2/(T1*k)) - mui1*exp(Ea3**2/(T1*k)) +
(Eb0**2/(T1*k) - 2*Ec0)*exp(Ea0**2/(T1*k)) + (Eb1**2/(T1*k) -
2*Ec1)*exp(Ea1**2/(T1*k)) + (Eb2**2/(T1*k) - 2*Ec2)*exp(Ea2**2/(T1*k)) +
(Eb3**2/(T1*k) - 2*Ec3)*exp(Ea3**2/(T1*k)))
eq_three=sp.Eq(-mui2*exp(Ea0**2/(T2*k)) - mui2*exp(Ea1**2/(T2*k)) -
mui2*exp(Ea2**2/(T2*k)) -
mui2*exp(Ea3**2/(T2*k)) + (Eb0**2/(T2*k) - 2*Ec0)*exp(Ea0**2/(T2*k)) +
(Eb1**2/(T2*k) - 2*Ec1)*exp(Ea1**2/(T2*k)) + (Eb2**2/(T2*k) -
2*Ec2)*exp(Ea2**2/(T2*k)) +
(Eb3**2/(T2*k) - 2*Ec3)*exp(Ea3**2/(T2*k)))
eq_four=sp.Eq(-mui3*exp(Ea0**2/(T3*k)) - mui3*exp(Ea1**2/(T3*k)) -
mui3*exp(Ea2**2/(T3*k)) - mui3*exp(Ea3**2/(T3*k)) + (Eb0**2/(T3*k) -
2*Ec0)*exp(Ea0**2/(T3*k)) +
(Eb1**2/(T3*k) - 2*Ec1)*exp(Ea1**2/(T3*k)) + (Eb2**2/(T3*k) -
2*Ec2)*exp(Ea2**2/(T3*k)) +
(Eb3**2/(T3*k) - 2*Ec3)*exp(Ea3**2/(T3*k)))
ans = sp.solve((eq_one, eq_two,eq_three,eq_four), (Ea0, Ea1, Ea2, Ea3))
print('ответ :', ans)
raise NotImplementedError('could not solve %s' % eq2)
NotImplementedError: could not solve ....