12章:偏微分方程式(ラプラスの方程式)

作成2012.10.11
     偏微分方程式(ラプラスの方程式)は温度分布や電圧分布で使用されます。

  1. 計算方法
     ラプラスの方程式は

    で与えられる偏微分方程式です。今任意の関数φ(x,y)を考え、微小量hだけ位置を変化させた場合

    が成立します。(12.2)式から(12.5)式を加算すると

    となります。ここで、(12.1)式と(12.6)式から

    の関係式が得られます。しかし、(12.7)式は近似式であり正確ではありません。このため新しいφをφ'とし

    (12.8)式の計算を繰り返すことにより、誤差を低減する必要があります。また(12.8)式が成立するには、xの変化量hとyの変化量hが等しい必要があります。


  2. 境界条件
     (12.8)式の計算を実行するには、計算領域より小さい方向と大きい方向にひとつ余分な値を設定する必要があります。
     この設定が境界条件です。境界条件の設定無しには(12.8)式の実行はできません。(12.1)式の解は無限に存在し、境界条件を設定しないと値が決定できません。
     偏微分方程式はひとつの条件を規定しますが、変数が多数あるため厳密に境界条件を規定する必要があります。偏微分方程式が難解なのは、厳密に境界条件を規定する必要があるためです。


  3. 偏微分方程式1.xls(フリーソフト)のダウンロード
    1. ダウンロード
       下記の偏微分方程式1.xls(フリーソフト)]をダウンロードしてください。

       ダウンロード後はダブルクリックで解凍してから使用してください。
       
      [偏微分方程式1.xls(フリーソフト)]をダウンロードする。


    2. 偏微分方程式1.xls(フリーソフト)
    3. ファイル構成
      (1) 偏微分方程式1.xls :フリーソフトです。
      (2)シート「Sheet1」:計算条件の設定を行います。
      (2)シート「Sheet2」:計算結果の出力されます。

    4. 注意事項
      (1)ファイルの保存場所の制限はありません。

    5. 標準的な実行方法
      (1)「偏微分方程式1.xls」をダブルクリックで起動します。
         (マクロを有効にして開いてください!!)
      (2)行数(j)、列数(j)、変化幅、収束判定値、最大演算回数、演算領域指定を設定します。
      (3)境界条件表を設定します。(最外周は全て 境界条件とする必要があります。)
      (4)境界条件表の最大は100×100です。
      (5)演算領域の初期値は境界条件(i=0,j=0)と同じ値に自動設定されます。
      (6)「計算実行」ボタンを押します。
      (7)計算結果がシート「Sheet2」に表示されます。


  4. プログラムリスト
     VBAのプログラムリストは以下のようになります。
    Dim T(101, 101), DT(101, 101), C(101, 101)
    Sub Main()
    'Sheet2クリア
    Sheets("Sheet2").Select
    Cells.Select
    Selection.Clear
    '初期入力
    Ni = Sheets("Sheet1").Cells(4, 3).Value
    Nj = Sheets("Sheet1").Cells(5, 3).Value
    h = Sheets("Sheet1").Cells(6, 3).Value
    e = Sheets("Sheet1").Cells(7, 3).Value
    Nc = Sheets("Sheet1").Cells(8, 3).Value
    Ce = Sheets("Sheet1").Cells(9, 3).Value
    '計算部分
    For i = 0 To Ni - 1 Step 1
    For j = 0 To Nj - 1 Step 1
    F = Sheets("Sheet1").Cells(15 + i, 2 + j).Value
    If F = Ce Then
    C(i, j) = 1
    T(i, j) = T(0, 0)
    Else
    C(i, j) = 0
    T(i, j) = F
    End If
    Next j
    Next i

    For k = 0 To Nc Step 1
    Nk = 0
    Se = 0
    For i = 0 To Ni - 1 Step 1
    For j = 0 To Nj - 1 Step 1
    If C(i, j) = 1 Then
    DT(i, j) = (T(i - 1, j) + T(i + 1, j) + T(i, j - 1) + T(i, j + 1)) / 4
    Nk = Nk + 1
    Se = Se + Abs(DT(i, j) - T(i, j))
    Else
    End If
    Next j
    Next i

    For i = 0 To Ni - 1 Step 1
    For j = 0 To Nj - 1 Step 1
    If C(i, j) = 1 Then T(i, j) = DT(i, j)
    Next j
    Next i
    '収束状況出力
    Sheets("Sheet2").Cells(5 + k, 1).Value = k
    Sheets("Sheet2").Cells(5 + k, 2).Value = Se / Nk
    If Se / Nk < e Then Exit For
    Next k
    '結果出力
    Sheets("Sheet2").Cells(1, 1).Formula = "計算結果"
    Sheets("Sheet2").Cells(4, 1).Formula = "計算回数"
    Sheets("Sheet2").Cells(4, 2).Formula = "変化量"
    For j = 0 To Nj - 1 Step 1
    Sheets("Sheet2").Cells(4, 4 + j).Value = j
    Next j

    For i = 0 To Ni - 1 Step 1
    Sheets("Sheet2").Cells(5 + i, 3).Value = i
    For j = 0 To Nj - 1 Step 1
    Sheets("Sheet2").Cells(5 + i, 4 + j).Value = T(i, j)
    Next j
    Next i
    End Sub


  5. サンプル条件の実行結果
    偏微分方程式1(ラプラスの方程式)(温度分布の計算)
    計算条件
    項目記号
    行数(j)Ni21
    列数(j)Nj21
    変化幅h1
    収束判定値e0.01
    最大演算回数Nc400
    演算領域指定Ce-99

    *境界条件表(最大100×100まで)
    -j=0j=1j=2j=3j=4j=5j=6j=7j=20j=8j=9j=10j=11j=12j=13j=14j=15j=16j=17j=18j=20
    i=0300300300300300300300300300300300300300300300300300300300300300
    i=1300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=2300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=3300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=4300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=5300-99-99600600550-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=6300-99-99600600550-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=7300-99-99600600550-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=8300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=9300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=10300-99-99-99-99-99-99-99300-99-9900-99-99-99-99-99-99-99300
    i=11300-99-99-99-99-99-99-99300-99-9900-99-99-99-99-99-99-99300
    i=12300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=13300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=14300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=15300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=16300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=17300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=18300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=19300-99-99-99-99-99-99-99300-99-99-99-99-99-99-99-99-99-99-99300
    i=20300300300300300300300300300300300300300300300300300300300300300

    計算結果
    *計算回数毎の変化量が表示されます
    計算回数変化量
    04.13074712643678
    13.09806034482759
    22.74784482758621
    32.36900592672414
    42.10901019216954
    51.87704152074353
    61.69420790398258

    計算結果表
    -01234567208910111213141516171820
    0300300300300300300300300300300300300300300300300300300300300300
    1300312324332335333328322300315309304300298296295295296297298300
    2300326350368374370358344300329317306299294291290290292293295300
    3300343383415425414391365300341322306296289285284285287289293300
    4300362425484495471426384300350322302288280276275277281285290300
    5300380472600600550459397300351316291275266263265268274280286300
    6300385482600600550462393300340300271254247247251258266274283300
    7300380471600600550446373300317272239223220226236247258269279300
    8300362424480487456397338300282232192178185201218235250263276300
    9300343382410413391350299300242180121110142174202224243259274300
    103003283513653633453112653002061260098153190217238256272300
    113003163293353313142862453001921170095151188216238256272300
    1230030931531631029527123930019814910196132167196220240257272300
    13300304306304297285266241300212182158153168189209229246261275300
    14300301300297291280266248300228209195191198210224239253265277300
    15300299298294288280269256300242230221219222229239250261271281300
    16300299297293288282274265300256248242240242247253261269277285300
    17300298297294290286280274300268263259258259262266271277283288300
    18300299297295293290286283300279276274273273275278281285288292300
    19300299299298296295293291300290288287287287288289291292294296300
    20300300300300300300300300300300300300300300300300300300300300300

    計算結果グラフ



  6. まとめ
     偏微分方程式(ラプラスの方程式)は温度分布や電圧分布を与える基礎方程式です。 数値計算でほとんどの条件の分布状態を求めることが可能なことがわかります。

13章:1次元熱伝導方程式に行く。



トップページに戻る。