3

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

私の場合、方程式が多すぎて一部のパラメーター (係数) がキャンセルされるため、単に代用することはできません。

ありがとう!

4

1 に答える 1

0

あなたの問題はFullSimplifyです。フォームexpは三角フォームよりも「単純」であると見なされるため、実行していることを元に戻しExpToTrigます。その場所だけを使用すると、変換Simplifyが維持されます。ExpToTrig以下の私の簡単な試しは、比較を示しています。

Mathematica のデモ

于 2015-09-19T21:52:09.203 に答える