Я пытаюсь решить эту проблему, используя sympy.Однако dsolve()
жалуется на мой ODE, содержащий несколько функций.У ODE есть r и u (r), что является проблемой.Я попытался решить ODE с помощью Matlab, и это сработало без проблем.
import numpy as np
import matplotlib.pyplot as plt
from sympy import *
init_printing(use_latex='mathjax')
r = Symbol('r')
u = Function('u')(r)
eps_r = u.diff(r)
eps_t = u/r
Eps = Matrix([[eps_r, 0 ,0],
[0, eps_t, 0],
[0,0,eps_t]
])
L, G = symbols('L G')
x,y = Matrix([1,0,0]),Matrix([0,1,0])
Sig = L*Eps.trace()*eye(3) + 2*G*Eps
sig_r = (x.T*Sig*x)[0]
sig_t = (y.T*Sig*y)[0]
eq1 = diff(sig_r,r) + (sig_r-sig_t)*2/r
eq1 = factor(eq1)
eq1 = eq1/(2*G+L)
dsolve(eq1,r)
Код Matlab:
syms u(r)
eps_r = diff(u,r);
eps_t = u/r;
Eps = [eps_r 0 0;
0 eps_t 0;
0 0 eps_t];
syms L G
Sig = L*trace(Eps)*eye(3) + 2*G*Eps;
x = [1;0;0];
y = [0;1;0];
sig_r = x'*Sig*x
sig_t = y'*Sig*y
eq1 = diff(sig_r,r) + 2/r*(sig_r-sig_t);
eq1 = simplify(eq1)/(2*G + L)
u = dsolve(eq1==0, r)
Ошибка при запуске dsolve(eq1,r)
:
ValueError: dsolve () и classify_ode () работают только с функциями одной переменной, но не r
Ожидаемый результат, сгенерированный с помощью matlab:
u (r) = C2 / r ^ 2 - (C1 * r) / 3