【问题标题】:Solving a differential equation in Mathematica在 Mathematica 中求解微分方程
【发布时间】:2015-10-10 02:33:32
【问题描述】:

我在求解 Mathematica(第 10 版)中的微分方程时遇到语法问题。

我需要求解的方程的输入如下:

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

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

谢谢!

【问题讨论】:

  • 您的问题可能会在Mathematica得到更多关注
  • 如果您将代码放在 Dropbox 或其他人们无需注册、登录、发送照片 ID 等的服务上,并且您在该代码中清楚地展示了一个示例并解释正是您想要完成的工作以及为什么它不起作用,如果有人解决了这个问题,那么它几乎肯定会解决您的所有其他问题......然后有人可能能够获取代码,尝试修复,验证它是否有效并且在这里发布答案。如果有人给你一个问题:“有点像这样,除了更大而且不起作用”,那么你将很难知道如何回答。

标签: wolfram-mathematica equation ode differential-equations dsolve


【解决方案1】:

您的问题与FullSimplify 有关。它认为 exp 形式比 trig 形式更“简单”,因此它正在撤消 ExpToTrig 正在做的事情。仅使用 Simplify 代替它将保持 ExpToTrig 转换。我在下面的快速尝试显示了一个比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    相关资源
    最近更新 更多