Я пытаюсь решить схему RLC как символьное дифференциальное уравнение в MATLAB, используя dsolve
, уравнение
U(t) = L*Q''(t) + R*Q'(t) + (1/C)*Q(t)
с начальными условиями
Q(0) = 0
Q'(0) = 0
и
U(t) = 10*sin(2*t)
L = 1
R = 0
C = 1/4
Пока это работает...
Когда я реализую это явно (и используя строки) как
Q = dsolve('D2Q(t) + 4*Q(t) = 10*sin(2*t)', 'DQ(0)=0, Q(0)=0');
Q = simplify(Q);
Я получу
Q =
5 sin(2 t) 5 t cos(2 t)
---------- - ------------
4 2
что правильно.
... это не так.
По чисто эзотерическим причинам я попытался вычислить его напрямую, используя символические уравнения, поскольку в документации к dsolve
говорилось, что это можно сделать.
Итак, начиная с
syms L R C t Q(t)
U = sym('10')*sin(sym('2')*t)
DEQ = L*diff(Q(t),t,2) + R*diff(Q(t),t) + (1/C)*Q(t)
DEQ = subs(DEQ, [L R C], [sym('1'), sym('0'), sym('1/4')])
eqn = (U == DEQ)
я получаю
eqn =
10*sin(2*t) == 4*Q(t) + diff(Q(t), t, t)
Что правильно. Если я сейчас подам его в dsolve
, используя
Q = dsolve(eqn, ...
Q(t) == 0, ...
diff(Q(t),t) == 0);
Матлаб выдает ошибку
Error using symengine (line 58)
Could not extract differential variables to solve for. Use 'solve' or 'vpasolve'
to compute the solutions of non-differential equations.
Это почему?