我已經定義了以下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))
都是正確的解決方案,但有什麼辦法達到我想要的解決方案?
我已經定義了以下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))
都是正確的解決方案,但有什麼辦法達到我想要的解決方案?
我認爲實際答案會是:不,你不能讓MATLAB達到你想要的解決方案。
在查看dsolve輸入時,沒有選項可以指定輸出應該是什麼樣子。這只是一個猜測,但這可能是因爲很難將你想要的風格轉換成代碼。
唯一可能會有所不同的是您編寫輸入公式的方式,但我會懷疑它不會產生太大的變化。
另一方面,學術答案會是:一切皆有可能,但您可能需要自己創建dsolve函數。
問題是手動解決方案vc(t) = Vin +vc0*exp(-t/(C1*R1))
不正確。該解決方案的vc(0) = Vin + vc0
不等於vc0
,所以這就是您的解決方案不同的原因。有一個定理說明一個初始條件如vc(t_0) = ...
的一階線性ODE只有一個解。我建議你仔細檢查你的步驟。
您在解決方案中忘記了一個減號... – bla
其錯字... minus t。原始語法是vc0/exponent – YNWA