• Tidak ada hasil yang ditemukan

Java を用いた 1 次元熱方程式の数値解析

N/A
N/A
Protected

Academic year: 2025

Membagikan "Java を用いた 1 次元熱方程式の数値解析"

Copied!
4
0
0

Teks penuh

(1)

卒業研究要旨

Java を用いた 1 次元熱方程式の数値解析

大葉敏文 佐藤晴郎 ( 桂田研究室 ) 2001 年2月9日

1 差分法

1.1 Dirichlet Boundary Condition

まずはDirichlet Boundary Condition (以下Boundary ConditionをB.C.と略)の熱方程式の初期値境界値問題 を差分法で考える。

∂u

∂t = 2u

∂x2 (t >0,0< x <1) (1)

u(0, t) = A, u(1, t) =B (t >0) (2)

u(x,0) = f(x) (0≤x≤1) (3)

u=u(x, t)の定義域[0,1]×[0,+)を右図のような格子に切り、

- 6

O x

t

b 1 b b b b b

b b b b b b

b b b b b b

b b b b b b

b b b b b b

b b b b b b

各格子点(xi, tj)におけるuの値

ui,j≡u(xi, tj) (4)

の近似値Ui,jを求める。xの区間[0,1]をN等分して、その点を順番に x0,x1,x2,. . .,xN とする。

刻み幅hh= 1/N とすると

xi=ih (i= 0,1,2,· · ·, N) (5)

同様に時間変数tに関する刻み幅をτ(>0)として

tj= (j= 0,1,2,· · ·) (6)

と置く。格子点において∂u

∂t を前進差分近似、

2u

∂x2 2階中心差分近似すると

∂u

∂t(xi, tj) = ui,j+1−ui,j

τ +O(τ) (τ 0) (7)

2u

∂x2(xi, tj) = ui+1,j2ui,j+ui−1,j

h2 +O(h2) (h→0) (8)

式(1)を満たすことからτ,hを充分に小さくし、λ=τ /h2と置き換え、uUで近似すると

Ui,j+1−Ui,j=λ(Ui+1,j2Ui,j+Ui−1,j) (9)

1

(2)

移項して

Ui,j+1= (12λ)Ui,j+λ(Ui−1,j+Ui+1,j) (1≤i≤N−1; j = 0,1,· · ·) (10)

また、式(2),(3)から以下の二式が得られる

U0,j = A, UN,j =B (j= 1,2,· · ·) (11)

Ui,0 = f(xi) (0≤i≤N) (12)

ここまでの方法を陽解法と呼ぶのだが、陽解法では計算結果が満足行かない状況におちいってしまう場合がある (不 安定現象)。陽解法においてこのような不安定現象を起こさない必要十分条件としてλが0 < λ≤1/2を満たす必要 があることがわかっている。

またλの条件を緩和するための方法として計算法を陰解法に変えるという方法がある。陰解法では前進差分近似で 得た式の変わりに後退差分近似を行うことで得られる式を用いる。陰解法を用いるとλが0 < λ 1/2の条件を満 たさなくても安定した結果を得られる。

ここではもっと一般的に前進差分近似で得られた式と後退差分近似で得られた式を1−θ, θ (0≤θ≤1)の重 みで重ねた公式を使おう。

Ui,j+1−Ui,j

τ = (1−θ)Ui+1,j+12Ui,j+Ui−1,j+1

h2 +θUi+1,j+12Ui,j+1+Ui−1,j+1

h2 (13)

これを移項して整理すると

(1 + 2θλ)Ui,j+1−θλ(Ui+1,j+1+Ui−1,j+1) ={12(1−θ)λ}Ui,j+ (1−θ)λ(Ui+1,j+Ui−1,j) (14)

この公式を用いる方法をθ法と呼び、特にθ= 1/2の時をクランク-ニコルソン法とよぶ。(ちなみにθ= 0で陽解 法、θ= 1で陰解法になる。)

1.2 Neumann B.C.

Neumann B.C.の場合。境界条件である式(2)が

ux(0, t) =A, ux(1, t) =B (t >0) (15)

と変更になることで、式(11)が以下のように変更になる。

U1,j+1−U0,j+1

h =A (16)

UN,j+1−UN−1,j+1

h =B (17)

つまり

U0,j+1=U1,j+1−Ah, UN,j+1=UN1,j+1+Bh (18)

これと式(1)にθ法を用いたものからi= 1, i=N−1, 1< i < N−1の3つの式が生成される。それぞれ順番に 示すと

(1 +θλ)U1,j+1−θλU2,j+1 = [12(1−θ)λ]U1,j+ (1−θ)λ(U2,j +U0,j)−Aθλh (19) (1 +θλ)UN−1,j+1−θλUN2,j+1 = [12(1−θ)λ]UN1,j

+(1−θ)λ(UN,j+UN2,j) +Bθλh (20) (1 + 2θλ)Ui,j+1−θλ(Ui+1,j+1+Ui−1,j+1) = [12(1−θ)λ]Ui,j + (1−θ)λ(Ui+1,j+Ui−1,j) (21)

(j = 0,1,2,· · · , i= 1,2,· · ·, N−1)

2

(3)

1.3 連立方程式を解くにあたって

1.1, 1.2 で導入した差分方程式は連立1次方程式であるが、その係数行列は三重対角行列 (対角線とその両隣にの

み非零成分がある)になり、Gauss の消去法ではその性質をうまく利用して、非常に効率的に解を求めることができ る。

2 Java によるシミュレーションの意義

2.1 Java言語の特徴

Javaは1991年に米国Sun Microsystems社によって作成されたオブジェクト指向プログラミング言語であり、近 年のインターネットの急速な普及と共に注目されている。本来Javaは家庭電化製品用のソフトウェア環境を構築す るために研究された言語であった。しかし、Javaを使用するとプラットホームに依存せず、様々なハードウェア/ ソフトウェア環境で動作するプログラムを作成することができるため、現在では多種多様な業界において重要なアプ リケーションを開発するのに使われている。

また、Java言語には以下のような優れた特徴がある。

Java言語はオブジェクト指向であるためコードを大幅に再利用することがきる。

例外処理機能が用意されており、実行時に発生する問題を整然とした方法で処理することができる。

ガーベッジコレクション機能を装備し使用しなくなったメモリーソースを自動的に再利用できる。

C++の文法を簡略化したものであり、Java言語の構文は非常にシンプルに構成されている。

マルチスレッドプログラミングがサポートされている。

クラスライブラリに豊富な機能が用意されている。

これらの機能により、Javaではプログラムをとても簡単に作成する事ができるようになっている。

2.2 Javaにおけるシミュレーション

シミュレーションとは現実世界の現象をコンピュータで表現し、数値計算を用いその現象に関連する結果を推定 する分野である。オブジェクト指向の出発点も現実世界をコンピュータ上に直接表現することであり、シミュレー ションとオブジェクト指向の考え方は非常に類似している。そのため、Javaなどのオブジェクト指向言語により数 値計算を行うのは自然なことである。また、Javaのクラスライブリーに備え付けられた機能を用いればGUI(グラ フィック・ユーザー・インターフェース)を容易に作成することができる。

Javaにおいてシミュレーションを行うことには次のようなメリットがある。

1. Portability(移植可能性)

従来グラフィックスを利用するプログラムは各々のシステムに依存した形になっていたため、あるシステムで 作成したグラフィックスを別のシステムで動かすことができなかった。しかし、Javaは基本的にインタプリ タ言語であるので、グラフィックスも含めて、”Write once, run anywhere” (一度作成してしまえばどこでも 実行できる)という利点がある。

2. GUIの利便性

Javaではアプレット(Webブラウザ又はアプレットビューアで実行されるプログラム)で図形やイメージを表 示する。アプレットのGUIにはボタン、チェックボックス、リスト、テキストエリアやテキストフィールド など様々なコンポーネントを入れることができる。ユーザーはこれらを介しアプレットと対話することができ、

また、マウスやキーボードを使用して入力することもできる。

JavaによるGUIのプログラミングは従来のものに比べて簡易化された上、やはり一度書いてしまえば他のシ ステムでも実行できるようになっている。

3

(4)

さらに、Javaではアニメーションを書くことや音声対応の標準化も進んでいるため、マルティメディア教材をも扱 うこともできる。なお、Javaは開発途上の言語であり、今後は操作性や即応性などの点で改善されることが期待さ れている。

3 Java による数値解析実験

実際にJavaのアプレットを作り、熱方程式を差分法にて数値解析してみる。アプレットは前記の通り、Webブ ラウザ上でアクセスし実行することができるので、以下にURLを記しておく。

http://www.math.meiji.ac.jp/~ee78038/9745/soturon/heat1d.html

4

Referensi

Dokumen terkait

一方, 係数行列A の階数はrankA = 2である... 一方, 係数行列A の階数はrankA =

多変数多項式の割り算(余りを求める) ⇓ Gr¨obner基底 (広中-Buchberger の algorithm) 多変数多項式環のidealの標準的な生成系を 組織的に与えるアルゴリズム 連立方程式 −→(一般には高次の)1 変数方程式へ (変数消去)... では、 この解法を現代の記号法で見ていこう

3 Poisson 方程式の境界値問題に対する Ritz-Galerkin 法 前回の講義で、Poisson 方程式の境界値問題を題材にして、弱定式化弱解の 方法 を説明し、最小型 変分原理が成り立つことを確認した。 今回は、同じ問題を題材に、Ritz-Galerkin法という近似解法を説明する。有 限要素法は、Ritz-Galerkin

本日の内容・連絡事項 今日の話は 弱解の方法現象数理学科の「応用複素関数」を履修した人は、今日の話は70%位は 聴いた覚えがあるかもしれません。しかし大事なことなので、端折らないで説明します。 種本は前回も紹介した菊地[1]です。 有限要素法を用いる際に必ず必要になるのが、解こうとしている問題の弱形式 weak form

付録 : ガウス・ジョルダンの掃き出し法と計算コスト ガウスジョルダンの掃き出し法 連立1次方程式 Ax=b を解くことを考える.. xを求めようとするとき,形式的に,Aの逆行列を左から掛け, x=A−1b

行列の対角化(一般論) 定理 次正方行列 の固有多項式 に対して、 が成立するとする。このとき は対角化可能です。すなわち正則行列が存在し て ½

非線型方程式の場合、問題の自由度が低くても反復計算になる。 a 有限回の四則では exact 厳密 に解けない問題がほとんどである。 b 「反復法」で多くの問題が解ける。 すなわち、真の解 x∗ をある列 {xn} の極限としてとらえ lim n→∞xn = x∗、 十分大 きなn に対して xn をx∗ の近似として採用する。近似解ではあるが、コンピュー

振動方程式への応用 本節では振動方程式, dU dt =fU, t, 1 fU, t =iωU ω∈R について,様々な時間差分スキームを適用し,その安定性を調べる... 7に振動方程式をあてはめるとfn =iωUnなので, Un+1∗