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

本文探讨了Mathematica中的DSolve函数在解决非线性常微分方程组时的行为,特别关注了它如何处理系统ODE,如特征值法的应用。通过实例展示了DSolve在处理标准形式解和复杂表达式解的能力,以及在遇到特定边界条件时可能的局限性,强调了Mathematica在符号运算中的优势和适用场景.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值