2013-01-23 61 views
0

我已经定义了以下ODE为什么我用dsolve得到不同的答案?

syms R1 C1 vc0 Vin 
Vc_ode = 'Dvc+vc/(R1*C1)=(Vin)/(R1*C1)'; 
Vc=dsolve(Vc_ode,'vc(0)=vc0','t'); 

和我收到的解决方案是

​​

而手动解决我得到

Vin +vc0*exp(-t/(C1*R1)) 

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

+1

您在解决方案中忘记了一个减号... – bla

+0

其错字... minus t。原始语法是vc0/exponent – YNWA

回答

0

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

在查看dsolve输入时,没有选项可以指定输出应该是什么样子。这只是一个猜测,但这可能是因为很难将你想要的风格转换成代码。

唯一可能会有所不同的是您编写输入公式的方式,但我会怀疑它不会产生太大的变化。

另一方面,学术答案会是:一切皆有可能,但您可能需要自己创建dsolve函数。

0

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

相关问题