4

Mathematica の構文はまだ新しい。私がする時:

DSolve[{
  D[u[x, t], {x, 2}] == (1/(v*v))*D[u[x, t], {t, 2}],
  u[0, t] == 0,
  u[l, 0] == 0
  }, u, {x, t}]

入力したものを返すだけです

DSolve[{(u^(2,0))[x,t]==(u^(0,2))[x,t]/v^2,u[0,t]==0,u[l,0]==0},u,{x,t}]

ただし、境界条件を削除すると、

{{u->Function[{x,t},C[1][t-(Sqrt[v^2] x)/v^2]+C[2][t+(Sqrt[v^2] x)/v^2]]}}

C[1] と C[2] は境界条件の関数を表します。

なぜこれが起こっているのか知っている人はいますか?

4

2 に答える 2

5

2つのこと:

  1. 境界条件と初期条件が 2 つ以上必要ではないですか? 左辺と右辺に 2 次導関数があり、それぞれに 2 つの条件が必要です。したがって、合計は 4 です。http://mathworld.wolfram.com/WaveEquation1-Dimensional.htmlを参照してください。

  2. DSolve や NDSolve は初期値問題と境界値問題を解けないと思いますか? これは以前どこかで読んだような気がします。今チェックする時間はありません。

于 2011-09-21T23:12:55.933 に答える
2

Mathematica は2 次偏微分方程式のこれらの境界条件を処理する方法を認識していないと思います。どのように答えを返したいですか?一般的なフーリエ級数として?

これはMathematicaクックブック(およびおそらく他の場所)で言及されています...

Mathematica の問題を (次元係数 でv->1) 分解すると、次のことがわかります。

In[1]:= genSoln = DSolve[D[u[x, t], {x, 2}] == D[u[x, t], {t, 2}], u, {x, t}] // First
Out[1]= {u -> Function[{x, t}, C[1][t - x] + C[2][t + x]]}

In[2]:= Solve[u[0, t] == 0 /. genSoln]
Out[2]= {{C[1][t] -> -C[2][t]}}

In[3]:= u[l, 0] == 0 /. genSoln /. C[1][x_] :> -C[2][x] // Simplify
Out[3]= C[2][-l] == C[2][l]

解が次のように書かれていることf(t-x)-f(t+x)f注意して[-l,l]ください。

ソリューションの滑らかさについて仮定をしなければ、これ以上のことはできません。

標準のフーリエ級数アプローチが機能することを確認できます。

In[4]:= f[x_, t_] := Sin[n Pi (t + x)/l] - Sin[n Pi (t - x)/l]

In[5]:= And[D[u[x, t], {x, 2}] == D[u[x, t], {t, 2}], 
              u[0, t] == 0, u[l, 0] == 0] /. u -> f // Reduce[#, n] & // Simplify

Out[5]= C[1] \[Element] Integers && (n == 2 C[1] || n == 1 + 2 C[1])
于 2011-09-21T23:24:35.273 に答える