はじめMath! Javaでコンピュータ数学

第44回 行列の数学 逆行列と連立一次方程式 [後編]

この記事を読むのに必要な時間:およそ 6 分

前回学習したガウス-ジョルダン法のアルゴリズムをJava言語で実装しましょう。少々長いサンプルコードですが,「コード・リーディング」の訓練だと思ってじっくり読み込んでから演習に取り組んでみてください。

問題 ガウス-ジョルダン法で連立一次方程式を解く次のプログラムを完成させましょう。

ガウス-ジョルダン法によるプログラムを次に示します。肝心のピボット処理,掃き出し処理のメソッドが未完成です。不足を補って完成させましょう。ソースコードにはスモークテスト※1が含まれています。未完成版をそのままコンパイルしても,一応動作し次のような出力を得ることが出来ます。

c:\temp>java Sample_GaussJordanElimination
Gauss-Jordan Elimination Test Start
  関数が望んだtrue を返しませんでしたabxROH
  関数が望んだtrue を返しませんでしたabxNROH
  関数が望んだfalse を返しませんでしたa2b2xROH
  関数は真を返しましたが,正しい解ではありませんでした。
a2b2xROH
Test Done

正しくコードを完成させると,次のような出力を得ることが出来るでしょう。

C:\temp>java Sample_GaussJordanElimination
Gauss-Jordan Elimination Test Start
  関数は真を返しましたが,正しい解ではありませんでした。
abxNROH
  関数が望んだtrue を返しませんでしたa2b2xROH
Test Done

先ずは未完成版のソースをじっくり読んで,大まかなコードの流れをつかみましょう。それが出来たら,ピボット処理,掃き出し処理のメソッドを順に完成させてください。コツは「常に動作するようにコードを加えていくこと」です。コードを加えてはコンパイルし,実行するのです。コードが動かないというのは,非常にモチベーションを奪います。しかし,コードが動いているうちは何となく気持ちが前向きです。投げ出さずに続けるための,自分のためのサプリメントだと思ってください。では,健闘を祈ります!

※1)
Smoke Testingスモークテストとは,ソフトウエアが最低限要求した動作をするかどうかを確認するテストのことです。スモークテストの段階でエラーを起こすようであれば,それ以上詳しいテストをする意味ないと判断します。

著者プロフィール

平田敦(ひらたあつし)

地方都市の公立工業高等学校教諭。趣味はプログラミングと日本の端っこ踏破旅行。2010年のLotYはRuby。結城浩氏のような仕事をしたいと妄想する30代後半♂。

コメント

コメントの記入