为什么我会用dsolve获得不同的答案?

时间:2013-01-23 19:20:59

标签: matlab

我定义了以下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))

两者都是正确的解决方案,但有没有办法达到我想要的解决方案?

2 个答案:

答案 0 :(得分:0)

我认为实际答案将是:不,你不能让MATLAB达到你想要的解决方案。

查看dsolve输入时,没有选项可以指定输出的外观。这只是猜测,但这可能是因为很难将您想要的风格转换为代码。

唯一可能产生影响的是您编写输入公式的方式,但我怀疑它不会产生太大的影响。

另一方面,学术答案将是:一切皆有可能,您可能需要制作自己的dsolve功能。

答案 1 :(得分:0)

问题是手动解决方案vc(t) = Vin +vc0*exp(-t/(C1*R1))不正确。该解决方案的vc(0) = Vin + vc0不等于vc0,因此这就是您的解决方案不同的原因。有一个定理表明具有像vc(t_0) = ...这样的初始条件的一阶线性ODE只有一个解。我建议你仔细检查一下你的步骤。