3

我有一个语法问题在Mathematica(第10版)中求解一个微分方程。在Mathematica中求解一个微分方程

的公式,我需要解决的输入如下:

solv = DSolve[{ a*u''[y] - b*u[y] == d, u'[0] == 0, u[1] == 0}, u, {y, -1, 1}] 

其中使用ExpToTrig和FullSimplify后,我得到我要的答案:

(d (-1 + Cosh[(Sqrt[b] y)/Sqrt[a]] Sech[Sqrt[b]/Sqrt[a]]))/b 

不过,我的问题当我想在方程中放置更多的系数时就会出现。例如:

solv = DSolve[{ a* u''[y] - b* c* u[y] == d, u'[0] == 0, u[1] == 0}, u, {y, -1, 1}] 

这一次,我获得:

FullSimplify[ExpToTrig[Evaluate[u[y] /. solv]]] 

下一个答案:

(d (1 + E^((2 Sqrt[b] Sqrt[c])/Sqrt[a]) - E^(-((Sqrt[b] Sqrt[c] (-1 + y))/Sqrt[a])) - E^((Sqrt[b] Sqrt[c] (1 + y))/Sqrt[a])) (-1 + Tanh[(Sqrt[b] Sqrt[c])/Sqrt[a]]))/(2 b c) 

相反,当我合并B和C(替补:BC = B * c):

solv = DSolve[{ a*u''[y] - bc*u[y] == d, u'[0] == 0, u[1] == 0}, u, {y, -1, 1}] 

我得到:

(d (-1 + Cosh[(Sqrt[bc] y)/Sqrt[a]] Sech[Sqrt[bc]/Sqrt[a]]))/bc 

在我的情况下,我不能只是替代,因为有太多的方程式和一些参数(系数)取消。

谢谢!

+0

你的问题,如果你把你的Dropbox上或其他一些服务代码,人们不必注册,登录,发送照片的身份证件等可能会得到在[mathematica.se] – 2015-07-21 01:28:00

+0

更多的关注等等,而且你清楚地在代码中展示了一个例子,并且准确地解释你想要做什么以及为什么它不工作,并且如果这被某人解决了,那么它几乎肯定会解决你所有的其他问题......然后有人可能会能够获取代码,尝试修复,验证它的工作原理并在此发布答案。如果有人给了你一个问题:“有点像这样,除了更大,不起作用”,那么你很难知道如何回答这个问题。 – Bill

回答

0

你的问题是FullSimplify。它认为exp形式比trig形式更“简单”,所以它正在取消ExpToTrig正在做的事情。只需使用Simplify即可保留ExpToTrig转换。我下面的快速尝试显示了一个比较。

mathematica demo