matlabの境界条件について

조회 수: 10 (최근 30일)
Soto Honda
Soto Honda 2018년 1월 24일
댓글: Soto Honda 2018년 1월 25일
上記サイトのソースコードの
>> % オプションで値を指定すると固定値境界に, replicateを指定すると値のコピー, circularを指定すると周期境界になる.
U = 2.*U1 - U2 + c^2.*imfilter(U1, F, 'replicate').*dt*dt;
値を以下のように指定して u(hnx,0,t)=u(0,hny,t)=u(hnx,1,t)=u(1,hny,t)=0 固定値境界にしたいです。 このときどう書けばいいのでしょうか?
よろしくお願いします

채택된 답변

michio
michio 2018년 1월 25일
有限差分に imfilter を使うのは面白い活用例ですね。
>> % オプションで値を指定すると固定値境界に
とあるように、
U = 2.*U1 - U2 + c^2.*imfilter(U1, F, 100).*dt*dt;
などと数値を入れると配列の境界の外に位置する値(上の例だと 100) とし、計算を行います。何も指定しないと 0 であると想定します。
  댓글 수: 5
michio
michio 2018년 1월 25일
Qiitaのページでは
U = zeros(ny, nx)+0.5; % とりあえず水面は0.5の高さ
と設定しており、Uの初期値は 0.5 の模様です。ここで固定値境界を 0 に設定して計算すると、境界側から何らかの波が発生していしまうのではと想像しています。
”波形が境界に達する”ということは何を意味するのか、物理的な側面からも妥当だと思われる条件を考えてみてください。正解があるわけではない、面白い課題だと思います。
Soto Honda
Soto Honda 2018년 1월 25일
たくさんの助言ありがとうございます。 いただいたアドバイスをもとのに自分でシミュレーションしていきます。 ありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!