Я пытаюсь решить систему дифференциальных уравнений четвертого порядка, используя Sympy.Уравнения, которые я использовал, показаны на рисунке и написаны в следующем коде:
latex_equations:
![enter image description here](https://i.stack.imgur.com/Ihjkc.jpg)
from sympy import *
x = symbols('x')
EI1,EI2,EI3,a1,a2,a3,Qh,Mecc = symbols('EI1 EI2 EI3 a1 a2 a3 Qh Mecc')
u1,u2,u3 = symbols('u1 u2 u3', cls=Function)
eq = (Eq(EI1*diff(u1(x),x,x,x,x)+EI2*diff(u2(x),x,x,x,x)+EI3*diff(u3(x),x,x,x,x), Qh),Eq(a1*EI1*diff(u1(x),x,x,x,x)+a2*EI2*diff(u2(x),x,x,x,x)+a3*EI3*diff(u3(x),x,x,x,x),Mecc),Eq((u1(x)+u3(x))/2,u2(x)))
dsolve(eq)
И я получил следующую ошибку:
AttributeError Traceback (most recent call last)
<ipython-input-1-63c42d2751be> in <module>
6 eq = (Eq(EI1*diff(u1(x),x,x,x,x)+EI2*diff(u2(x),x,x,x,x)+EI3*diff(u3(x),x,x,x,x), Qh),Eq(a1*EI1*diff(u1(x),x,x,x,x)+a2*EI2*diff(u2(x),x,x,x,x)+a3*EI3*diff(u3(x),x,x,x,x),Mecc),Eq((u1(x)+u3(x))/2,u2(x)))
7
----> 8 dsolve(eq)
~\Anaconda3\lib\site-packages\sympy\solvers\ode.py in dsolve(eq, func, hint, simplify, ics, xi, eta, x0, n, **kwargs)
583 """
584 if iterable(eq):
--> 585 match = classify_sysode(eq, func)
586 eq = match['eq']
587 order = match['order']
~\Anaconda3\lib\site-packages\sympy\solvers\ode.py in classify_sysode(eq, funcs, **kwargs)
1528 if isinstance(func, list):
1529 for func_elem in func:
-> 1530 if len(func_elem.args) != 1:
1531 raise ValueError("dsolve() and classify_sysode() work with "
1532 "functions of one variable only, not %s" % func)
AttributeError: 'list' object has no attribute 'args'
Я пытался найти более простую систему уравнений, используя dsolve, и она отлично решалась:
from sympy import *
x = symbols('x')
EI1,EI2 = symbols('EI1 EI2')
u1,u2 = symbols('u1 u2', cls=Function)
eq = (Eq(EI1*diff(u1(x),x), 12*x*u1(x) + 8*u2(x)), Eq(EI2*diff(u2(x),x), 21*u1(x) + 7*x*u2(x)))
dsolve(eq)
Формат, который я использовал для этих двухслучаи одинаковы, но один решает, а второй терпит неудачу.Я знаю, что у первой системы уравнений есть решение, потому что я решил это в Maple.
Я допустил ошибку в своем коде, или Sympy dsolve просто не в состоянии решить такую сложную системууравнения?Есть ли ограничение на то, насколько сложной может быть система уравнений, пока dsolve больше не сможет ее решить?Любая помощь или понимание этой проблемы будет принята с благодарностью.
Спасибо!