Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.

Similar presentations


Presentation on theme: "プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹."— Presentation transcript:

1 プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹

2 課題 1 3×3型行列の行列式と逆行列を求める プログラムを作成せよ。 行列の各要素はコマンド・プロンプトから入力
   プログラムを作成せよ。 行列の各要素はコマンド・プロンプトから入力 計算した結果もコマンド・プロンプトに表示 課題提出の際は授業中に指示された行列を   使うこと!(さもないと減点)

3 課題1の提出について 1. プログラムの実行結果とソースコード(javaファイル) 提出方法:以下の事項に留意して記述したメールを
 あてに送付。  1. プログラムの実行結果とソースコード(javaファイル)     をメールの本文に書く。順番は        実行結果、ソースコード   (どちらか一方だけでは提出とみなさない。) 2. メールの件名は 必ず課題番号:学籍番号:氏名。   例:課題1:2007xxxxx:山田太郎 締め切りは 12月14日 (金)、 10:00am

4 今日の実習 3×3 型行列の行列式と逆行列を計算するための InvMatrix.javaという名前のプログラムを作成する。
  3×3 型行列の行列式と逆行列を計算するための   InvMatrix.javaという名前のプログラムを作成する。 1. 行列Aとその逆行列Bはdouble 型の二次元配列   として宣言 2. 行列Aの各要素aijはコマンド・プロンプトから入力 for 文を使い配列Aに値を代入 3. 行列Aをコマンド・プロンプトに出力。 4. 行列式サラスの公式により求め, 得られた値を   コマンド・プロンプトに出力 5. 計算した逆行列Bをコマンド・プロンプトに出力

5 sample1の実行結果の例(1) >a11= 2 >a12= 3 … >a33= 1
画面に表示された行列の要素をコマンド・プロンプトから入力 >a11= 2 >a12= 3 >a33= 1

6 sample1の実行結果の例(2) >A= | 2.000 3.000 1.000 | | 1.000 3.000 3.000 |
| | | | | | >Det(A)=17.0です。 >Inverse Matrix=…自分で書いたプログラムで計算しましょう

7 サラスの公式

8 逆行列の求め方 行列Aの逆行列A-1は余因子行列を用いて以下の手順によって求める。 det(A)=0であればA-1は存在しない。
行列Aの(i, j)-余因子をとおく。行列Aの(i, j)-余因子とは、行列Aの第i行と第j列を取り除いて得られる行列の行列式を倍したものである。例えば行列Aの(2,3)-余因子であれば、 この余因子を用いると行列Aの逆行列は(2行3列の下付添え字は32)

9 ヒント (1) :課題1の雛形 import java.io.*; public class InvMatrix {
public static void main(String args[]) { double a[][] = new double[3][3]; // [2][3]と書くと3行2列という意味 String line; BufferedReader reader         = new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("a11="); // 代入する成分を表示 line = reader.readLine(); a[0][0]= Double.parseDouble(line); // この後にプログラムを書く               // for文を使うとかなりすっきりする(sample1参照) } catch (IOException e) { System.out.println(e); } catch (NumberFormatException e) { System.out.println("値が正しくありません"); }

10 ヒント (2) if (det(A) = = 0.0) { // det(A)が0階中で分岐
System.out.println("逆行列は存在しません"); } else { // この後に逆行列の成分を計算するプログラムを書く }

11 2次元配列の定義と領域の確保 int [][] a; (int a [][]) // 配列aの宣言
● 宣言には2つの形式(どちらでもよい) int [][] a; (int a [][]) // 配列aの宣言 a=new int[2][3]; // 領域の確保(3行2列) double [][] b=new double[5][2]     // 宣言と領域確保を同時に行うことも出来る ●   int [][] a = {{58, 19}, {34,73}, {9,29}}     // { {a[0][0], a[0][1]}, {a[1][0],a[1][1]}, {a[2][0],a[2][1]} }


Download ppt "プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹."

Similar presentations


Ads by Google