MATLAB: dsolve дает сложные термины в выводе - PullRequest
0 голосов
/ 01 апреля 2020

Я столкнулся с проблемой при использовании "dsolve". Вот мой код:

syms Vs(x) w l C phi Vcc Vr
q= 1/(w*sqrt(l*C));
ode = w*w*l*C*diff(Vs,x,2)+Vs==Vcc-Vr*sin(x+phi); % non-homogenous second order DE
Vs = dsolve(ode,x,'IgnoreAnalyticConstraints',1);
Vs= simplify(Vs);
pretty(Vs)

Это дает комплексное решение, которое после некоторого упрощения с рукой дает следующее:

         Vs(x)= (q^2/(1-q^2))*Vr*Sin(phi+x) - Vcc - C5*cosqx - i*C5*Sinqx - C6*cosqx + i*C6*sinqx

Если DE решается вручную, это дает следующее:

         V(x)= C1*cos(q*x) + C2*sin(q*x) + Vcc + (q^2)/(1-q^2)*Vr*sin(phi+x)

Ожидаемое решение, рассчитанное вручную, не содержит мнимой части. Более того, решение, данное dsolve, не полностью соответствует ожидаемому. Я не понимаю, где я делаю неправильно. Пожалуйста, помогите мне отладить это.

...