dsolve函数的功能_为什么Mathematica的DSolve函数会解不出显式解??

论坛 期权论坛 脚本     
已经匿名di用户   2022-4-16 00:32   1793   0

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啥的。。。。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP