In[6]:= DSolve[v''[t] == 3 v'[t] - 2 v[t] - 2 v[t]^2 + 2 v[t] v'[t],
v[t], t]
Out[6]= {{v[t] -> E^t Sqrt[-C[1]] Tan[E^t Sqrt[-C[1]] + C[2]]}}说明书里面是这么说的,DSolve includes general procedures that handle almost all the nonlinear ordinary differential equations whose solutions are given in standard reference books such as Kamke.但system of ODEs就一点说明也没有,估计消元比较残念吧(而且似乎很难设计算法不增添或者遗漏解吧),你看这个,
In[28]:= DSolve[{u'[t] == v[t], v'[t] == w[t]}, {u[t], v[t]}, t]
Out[28]= {{u[t] ->
1/2 E^-t (1 + E^(2 t)) C[1] + 1/2 E^-t (-1 + E^(2 t)) C[2],
v[t] -> 1/2 E^-t (-1 + E^(2 t)) C[1] + 1/2 E^-t (1 + E^(2 t)) C[2]}}从解的结构可以看出来是用特征值法做的,没用消元,
我猜DSolve这个函数是对未知函数向量 {u[t], v[t]}做整体的线性或者非线性的变换,而后比对自己的函数库(MM喜欢内建已知的函数和其性质,但Simplify的功能一直很鸡肋,看起来似乎是做了一个简单的parser,更别提复杂的有目的性的代数计算了),比对完了就返回空值,你看这个例子,
DSolve[{u'[t] == 3 v[t], v'[t]^3 == 8 u[t]}, {u[t], v[t]}, t]
{{v[t] -> -Sqrt[
2] \[Sqrt](C[1] -
1/4 InverseFunction[(3 I (EllipticE[
I ArcSinh[(
Sqrt[((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[
C[1]]] #1^(1/3))/Sqrt[2]], -1] -
EllipticF[
I ArcSinh[(
Sqrt[((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[
C[1]]] #1^(1/3))/Sqrt[2]], -1]) Sqrt[(
8 C[1] + (-2 - 2 I Sqrt[3]) #1^(4/3))/
C[1]])/((((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[C[1]])^(
3/2) Sqrt[4 C[1] + (-1 - I Sqrt[3]) #1^(4/3)]) &][-((
3 t)/Sqrt[2]) + C[2]]^(4/3) -
1/4 I Sqrt[3]
InverseFunction[(3 I (EllipticE[
I ArcSinh[(
Sqrt[((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[
C[1]]] #1^(1/3))/Sqrt[2]], -1] -
EllipticF[
I ArcSinh[(
Sqrt[((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[
C[1]]] #1^(1/3))/Sqrt[2]], -1]) Sqrt[(
8 C[1] + (-2 - 2 I Sqrt[3]) #1^(4/3))/
C[1]])/((((-1)^(3/4) Sqrt[I - Sqrt[3]])/Sqrt[C[1]])^(
3/2) Sqrt[4 C[1] + (-1 - I Sqrt[3]) #1^(4/3)]) &][-((
3 t)/Sqrt[2]) + C[2]]^(4/3)),我只把v[t] copy过来了,这个system of ODEs是用u[t]=t^3, v[t]=t^2 造的,但即便添加u[0]==0, v[0]==0或者类似的条件也得不出那个特解,而是会提示,
In[44]:= DSolve[{u'[t] == 3 v[t], v'[t]^3 == 8 u[t], u[0] == 0,
v[0] == 0}, {u[t], v[t]}, t]
During evaluation of In[44]:= DSolve::bvnul: For some branches of the general solution, the given boundary conditions lead to an empty solution. >>
During evaluation of In[44]:= DSolve::bvnul: For some branches of the general solution, the given boundary conditions lead to an empty solution. >>
During evaluation of In[44]:= DSolve::bvnul: For some branches of the general solution, the given boundary conditions lead to an empty solution. >>
During evaluation of In[44]:= General::stop: Further output of DSolve::bvnul will be suppressed during this calculation. >>
Out[44]= {}MM自己椭圆函数没玩好玩脱了。
所以即便MM号称符号运算强大,还是用来处理流水线计算比较稳妥,比如算个Riemann tensor啥的。。。。