我已经定义了以下 ODE
syms R1 C1 vc0 Vin
Vc_ode = 'Dvc+vc/(R1*C1)=(Vin)/(R1*C1)';
Vc=dsolve(Vc_ode,'vc(0)=vc0','t');
我收到的解决方案是
Vin - (Vin - vc0)/exp(t/(C1*R1))
在手动解决时我得到
Vin +vc0*exp(-t/(C1*R1))
两者都是正确的解决方案,但有没有办法达到我想要的解决方案?
我已经定义了以下 ODE
syms R1 C1 vc0 Vin
Vc_ode = 'Dvc+vc/(R1*C1)=(Vin)/(R1*C1)';
Vc=dsolve(Vc_ode,'vc(0)=vc0','t');
我收到的解决方案是
Vin - (Vin - vc0)/exp(t/(C1*R1))
在手动解决时我得到
Vin +vc0*exp(-t/(C1*R1))
两者都是正确的解决方案,但有没有办法达到我想要的解决方案?
我认为实际的答案是:不,你不能让 MATLAB 达到你想要的解决方案。
查看 dsolve 输入时,没有选项可以指定输出的外观。这只是一个猜测,但这可能是因为很难将您想要的样式转换为代码。
唯一可能会有所不同的是您编写输入公式的方式,但我怀疑它不会有太大的不同。
另一方面,学术上的答案是:一切皆有可能,但您可能需要制作自己的 dsolve 函数。
问题是手动解决方案vc(t) = Vin +vc0*exp(-t/(C1*R1))
不正确。该解决方案具有vc(0) = Vin + vc0
不等于vc0
,因此这就是您的解决方案不同的原因。有一个定理表明具有初始条件的一阶线性 ODEvc(t_0) = ...
恰好有一个解。我建议您仔细完成您的步骤。