Mathematica を使用して表題の問題を数値的に解こうとしていますが、役に立ちません。長さ L の棒を想像してください。棒の音速は c です。幅が L/c に匹敵するガウス形状の圧力インパルスが一端に適用されます。ロッド内の粒子変位関数 u(t,x) を解きたいと思います。Mathematica コードは次のとおりです。
c = 1.0 (*speed of wave*)
L = 1.0 (*length of medium*)
Subscript[P, 0] = 0.0 (*pressure of reservoir at one end*)
Subscript[t, 0] = 5.0*c/L; (*mean time of pressure impulse*)
\[Delta]t = 2.0*c/L; (*Std of pressure impulse*)
K = 1.0; (* proportionality constant, stress-strain *)
Subscript[P, max ] = 1.0; (*max. magnitude of pressure impulse*)
Subscript[P, 1][t_] :=
Subscript[P, max ]
PDF[NormalDistribution[Subscript[t, 0], \[Delta]t], t];
PDE = D[func[t, x], t, t] == c^2 D[func[t, x], x, x]
BC1 = -K func[t, 0] == Subscript[P, 1][t]
BC2 = -K func[t, L] == Subscript[P, 0]
IC1 = func[0,
x] == (-Subscript[P, 1][0]/K) (x/L) + (-Subscript[P, 0]/K) (1 - x/L)
IC2 = Derivative[1, 0][func][0, x] == 0.0
sol = NDSolve[{PDE, BC1, BC2, IC1, IC2},
func, {t, 0, 2 Subscript[t, 0]}, {x, 0, L}]
問題は、プログラムが何も出力せずに数分間実行し続けることです。問題が単純であること (つまり、解析解が存在すること) を考えると、数値解に到達するためのより迅速な方法があるはずです。誰かが私にいくつかの提案をしてくれませんか?