OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

教えてください! 行列式の計算プログラム

  • すぐに回答を!
  • 質問No.195527
  • 閲覧数1733
  • ありがとう数6
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 68% (11/16)

FORTRANで「4次の行列式の計算」
を行うプログラムを作りたいのですが、
どのようにすればよいか良く分かりません。

プログラム例または参考ホームページを教えていただけると嬉しいです。
よろしくお願いします。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル6

ベストアンサー率 23% (4/17)

>対角行列以外の行列でも当てはめることはできないでしょうか?

No2の補足
違います。ガウス・ジョルダンを使用して対角行列に変換しているのです。
参考として理論にテイラーの定理(固有値)を使用しておりますが、
単純にガウス・ジョルダンを使用すれば変換前と変換後の
固有値の値は変わらないと思えばいいです。

対角行列の行列式の求め方って何?、固有値って何?
固有値と行列式の関係って?ガウスジョルダンって?
という場合は勉強してください。というより過去ログにあると思います。

あと単純に一部を抜粋しただけなので抜けがあったり、いらないところがあったりしてますので補足。
1000 INPUT "N=";N → 1000 N=3
5030 DATA 6,15,24 → (なし)

サンプルの行列は下の行列(1070-1120行,5000-5020行)
2 4 6
3 8 7
5 7 21

ガウスジョルダンはSTEP1(4320-4450行)
行列R:ガウスジョルダンで変換後の行列(対角行列)

逆行列はSTEP2(4460-4500行)
cf.単位行列(4280-4310行)

行列式がSTEP3
行列式GSIKI(4530-4540行)
お礼コメント
okahiro

お礼率 68% (11/16)

おかげ様でなんとか作成することができました。
何度もありがとうございました。
投稿日時 - 2002-01-25 01:00:05
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル8

ベストアンサー率 45% (14/31)

|a b c d| |e f g h| |i j k l | |m n o p|=afkp+agln+ahjo+bgio+bgip+bhkm+cflm+chin+degn+dfio+・・・ であるから SUBROUTINE DET4(A,DET) REAL A(4,4),DET DET=A(1,1)*A(2,2)*A(3,3)*A(4,4)+A(1,1)*A(2,3)*A(3,4)* ...続きを読む
|a b c d|
|e f g h|
|i j k l |
|m n o p|=afkp+agln+ahjo+bgio+bgip+bhkm+cflm+chin+degn+dfio+・・・

であるから

SUBROUTINE DET4(A,DET)
REAL A(4,4),DET
DET=A(1,1)*A(2,2)*A(3,3)*A(4,4)+A(1,1)*A(2,3)*A(3,4)*A(4,2)+・・・
RETURN
END

でOKのはず。わざとサブルーチンにしてあります。何がしたいのか知らないから。
・・・は中略な、めんどいから。
たぶんなんかのレポートなんでしょうけど・・・
行列の成分を聞いてくるプログラムにしたかったらREAD文と
結果出力したかったらWRITE文をつかってくれ。
多分これより効率のいい回答が後の人に続くんでしょうから、とりあえずトップはこれでいいでしょ。
お礼コメント
okahiro

お礼率 68% (11/16)

ありがとうございます。参考にさせていただきます。
投稿日時 - 2002-01-10 11:03:21


  • 回答No.2
レベル6

ベストアンサー率 23% (4/17)

はじめまして 自分FORTRANは使ったことは無いのですが Basic(VBより前)で同じ物を作った覚えがあるので一部抜粋します。 基本的に 1.対角行列のみを対象 2.そのためガウス・ジョルダンを使用 を念頭において作っております。サンプルは3次ですがn次で使用できますので 1000 INPUT "N=";N 1010 DIM A#(N,N),L#(N,N),D# ...続きを読む
はじめまして
自分FORTRANは使ったことは無いのですが
Basic(VBより前)で同じ物を作った覚えがあるので一部抜粋します。
基本的に
1.対角行列のみを対象
2.そのためガウス・ジョルダンを使用
を念頭において作っております。サンプルは3次ですがn次で使用できますので

1000 INPUT "N=";N
1010 DIM A#(N,N),L#(N,N),D#(N,N),U#(N,N),R#(N,N),Q#(N,N),S#(N,N),B#(N),Y#(N),X#(N),AA#(N,N)
1020 A=0:L=0:D=0:U=0:R=0:Q=0:S=0:B=0:Y=0:X=0:STE=N:TEISI=5:JIKAN=10
1030 PRINT "0: Read"

1070 FOR I=1 TO N:FOR J=1 TO N
1080 READ A#(I,J):PRINT A#(I,J);" ";
1090 NEXT J:PRINT:NEXT I
1100 FOR I=1 TO N
1110 READ B#(I):PRINT B#(I)
1120 NEXT I

1280 PRINT "9: 逆行列,固有値,行列式"
1290 INPUT Z
1300 ON Z GOSUB *GYAKU
1310 GOTO 1200

4270 *GYAKU
4280 FOR H=1 TO N
4290 FOR G=1 TO N
4300 IF G=H THEN B#(G)=1 ELSE B#(G)=0
4310 NEXT G

4320 'STEP1 行列Rを作る
4330 FOR I=1 TO N:FOR J=1 TO N
4340 R#(I,J)=A#(I,J):BB#(I)=B#(I)
4350 NEXT J:NEXT I
4360 FOR K=1 TO N:FOR I=1 TO N
4370 IF I=K THEN GOTO 4430
4380 L#(I,K)=R#(I,K)/R#(K,K)
4390 FOR J=K TO N
4400 R#(I,J)=R#(I,J)-L#(I,K)*R#(K,J)
4410 NEXT J
4420 BB#(I)=BB#(I)-L#(I,K)*BB#(K)
4430 NEXT I
4440 L#(K,K)=1
4450 NEXT K

4460 'STEP2 逆行列AAを求める
4470 FOR I=1 TO N
4480 AA#(I,H)=BB#(I)/R#(I,I)
4490 NEXT I
4500 NEXT H

4510 'STEP3 行列式
4530 GSIKI#=1
4540 FOR I=1 TO N:GSIKI#=GSIKI#*R#(I,I):NEXT I
4550 PRINT "逆行列":FOR I=1 TO N:FOR J=1 TO N:PRINT AA#(I,J);:NEXT J:PRINT:NEXT I:PRINT:INPUT "次の表示に移ります";Z
4560 PRINT "固有値":FOR J=1 TO N:PRINT R#(J,J);:NEXT J:PRINT:PRINT:INPUT "次の表示に移ります";Z
4570 PRINT "行列式=";GSIKI#

5000 DATA 2,4,6
5010 DATA 3,8,7
5020 DATA 5,7,21
5030 DATA 6,15,24
お礼コメント
okahiro

お礼率 68% (11/16)

詳しいご回答ありがとうございます。
ただ、Basicのため正確には把握していないのですが、
対角行列以外の行列でも当てはめることはできないでしょうか?
投稿日時 - 2002-01-10 11:11:33
  • 回答No.4
レベル8

ベストアンサー率 26% (16/60)

Fortranということなのでこんなホームページはいかがでしょうか? http://phase.etl.go.jp/mirrors/netlib/ 英語なのでわかり辛いかも知れませんが、ありとあらゆる数値計算のルーチンがあります。 あと、このような本もあります。日本語版があるかどうかわからないのですが。 『NUMERICAL RECIPES in FORTRAN』 では。 ...続きを読む
Fortranということなのでこんなホームページはいかがでしょうか?

http://phase.etl.go.jp/mirrors/netlib/

英語なのでわかり辛いかも知れませんが、ありとあらゆる数値計算のルーチンがあります。

あと、このような本もあります。日本語版があるかどうかわからないのですが。
『NUMERICAL RECIPES in FORTRAN』
では。
お礼コメント
okahiro

お礼率 68% (11/16)

参考になりました。
ありがとうございます。
投稿日時 - 2002-01-25 01:00:46
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ