如何使用matlab重新排列微分方程解?

时间:2015-04-14 09:04:30

标签: matlab differential-equations

我有一个等式:

  

dC(t)/ dt = -K * C + G

我使用MATLAB来解决这个等式,我得到了这个解决方案:

  

C(t)= G / K +(Co-G / K) exp(-K t / V)

如何重新排列此等式以获得K =?

1 个答案:

答案 0 :(得分:2)

因为你的方程在指数内外都有K,你无法得到一个很好的闭合形式解,所以你希望实现的最好是数值近似。

>> syms t C(t) K G C0
>> D=dsolve(diff(C)==-K*C+G,C(0)==C0) %// solve the ODE with an initial condition
D =
(G - exp(-K*t)*(G - C0*K))/K

%// Solve for k given particular values of the other variables
>> k=solve(subs(C(t)==D,{G,t,C,C0},{1,2,1,0.5}),K)
k =
0.91228212986814722960889983912519

如果你忽略了初始条件,你可以得到一个方程式,但它是以Lambert W函数表示的,对任何事情都没有用。

>> syms t C(t) K G
>> D=dsolve(diff(C)==-K*C+G)
D =
(G - C2*exp(-K*t))/K

>> solve(C==D,K)
ans =
(G + (C(t)*lambertw(0, -(C2*t*exp(-(G*t)/C(t)))/C(t)))/t)/C(t)