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

プログラム例または参考ホームページを教えていただけると嬉しいです。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

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



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行)
    • good
    • 0
この回答へのお礼

おかげ様でなんとか作成することができました。
何度もありがとうございました。

お礼日時:2002/01/25 01:00

Fortranということなのでこんなホームページはいかがでしょうか?



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

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

あと、このような本もあります。日本語版があるかどうかわからないのですが。
『NUMERICAL RECIPES in FORTRAN』
では。
    • good
    • 0
この回答へのお礼

参考になりました。
ありがとうございます。

お礼日時:2002/01/25 01:00

はじめまして


自分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
    • good
    • 0
この回答へのお礼

詳しいご回答ありがとうございます。
ただ、Basicのため正確には把握していないのですが、
対角行列以外の行列でも当てはめることはできないでしょうか?

お礼日時:2002/01/10 11:11

|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文をつかってくれ。
多分これより効率のいい回答が後の人に続くんでしょうから、とりあえずトップはこれでいいでしょ。
    • good
    • 0
この回答へのお礼

ありがとうございます。参考にさせていただきます。

お礼日時:2002/01/10 11:03

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q行列式とその計算結果☆

こんにちわ☆ミ
早速ですが、
スレイター行列式
シルベスター行列式
ヤコビ行列式
ヘッセ行列式
ロンスキー行列式
ファンデルモンドの行列式
これらのいずれか(複数ならさらにいいです)の一般形(サイズn×n)での行列とその行列式の計算結果がどうなるのか教えてください☆ミ
お願いします(>_<)

Aベストアンサー

ファンデルモンドの行列式だけ(他の行列に計算結果の公式なんてあるのかしら)。なお、行列は両側の縦線をカッコに変えれば良いのですが、「ファンデルモンドの行列」なんて用語があるかどうか知りません。

行列の形が崩れると思いますが、想像して下さい。
|1     1     1       1   |
|x1    x2    x3       xn   |
|x1^2   x2^2   x3^2      xn^2  |
|                       |
|x1^(n-1) x2^(n-1) x3^(n-1)   xn^(n-1)|
=±Π(xi-xj)

右辺の乗積は、相異なる全てのi、jについて取ります。
符号は n の値で決りますが、省略。

この式が成立することは、両辺でxi=xjを代入して見ればわかります。

Q自己随伴写像の表現行列が対称行列とならない例は?

宜しくお願い致します。

[問]Vを有限次元実内積空間(dimV=n)とする。
γ={x1,x2,…,xn}は任意のVの基底とする。
VからVへの線形写像fが自己随伴(∀x,y∈V,<f(x),y>=<x,f(y)>(<,>は内積))である時,
fの表現行列Aは対称行列となる。
の真偽判定の問題です。

正解は偽のようなですがこの反例としてどのようなものが挙げられますでしょうか?

Aベストアンサー

真ですよ?

内積空間の係数体は、実数体または複素数体ですが、
実内積空間の自己随伴線型写像は、対称行列、
複素内積空間の自己随伴線型写像は、エルミート行列
を表現行列に持ちます。

Vの正規直交基底から、2個のベクトルをとって
∀x,y∈V, <f(x),y> = <x,f(y)>
の x,y にあてはめてみれば、わかります。

Q帯行列式の計算

帯行列式の計算

行列式を工夫して計算しなさい。
|12000000|
|21200000|
|02120000|
|00212000|
|00021200|
|00002120|
|00000212|
|00000021|

という課題がでました。
インターネット等で検索すれば詳しい解き方が載っているだろうと思ったのですが、
帯状行列式という言い方が正式でないのか載っているページを見つけることができませんでした。

明日この問題について発表・解説せねばならないので、もしどなたかわかる方がいらっしゃいましたら
解答のほどよろしくお願いします。

Aベストアンサー

>A[n]=A[n-1]-4*A[n-2]
>という公式を証明する方法があればぜひお願いします。

#1の前段の計算式から明らか。
8×8の場合で記述していますが、n×nでも同じです。

Qn次元の正方行列Aの行列式と、Aの転置行列A’の行列式が同じであること

n次元の正方行列Aの行列式と、Aの転置行列A’の行列式が同じであることを、
簡単に証明することはできるのでしょうか?

Aベストアンサー

置換と転置の意味を知ってて
行列式の定義を書けば自明なんだが・・・
書くのがつらいだけなのでURLを

http://www22.atwiki.jp/linearalgebra/pages/42.html

QBASICのプログラムで行列式の積の計算をしたいのですが…

BASICのプログラムで「行列式の積」の計算をしたいのですが…どのようにして行ったらよいか分かりません。あいにく、大学の図書館が閉まってしまい、調べる事もできない状態で困っています。一例として、3行3列の行列式の積の計算をする方法のプログラムを教えてください。
後、計算結果がどのように表示されるかも教えていただけると嬉しいです。

Aベストアンサー

どうも、失礼しました。
もうお分かりと思いますが、全角スペースを使っているためエラーが出ます。このOKweb/教えて!gooでの書きこみは複数の半角スペースが無視されてしまうので、見やすくするため全角スペースを使いました。

390行でのエラーはN88互換BASICのバグだと思います。コメント文を取り除いてください。

Q再)自己随伴写像の表現行列が対称行列とならない例は?

http://okwave.jp/qa3969275.html

で質問した者です。
どこかのサイトで反例として基底がそれぞれ
{t(1,0),t(0,1)}と{t(1,1),t(1,0)} (tは転置行列を表す)
の時の表現行列が
1,1
1,-1

0,1
2,0
となり,後者の場合は対称行列にならないので
従って偽となっていたのですが、、、

御意見いただければ幸いでございます。 m(_ _)m

Aベストアンサー

前回の質問 (QNo.3969275) に回答した者です。
済みません。間違っていました。

線型写像の表現行列 (の各成分) は、基底に依存して決まるものです。
基底が正規直交系でなければ、自己随伴写像の表現行列が
自己随伴行列 (エルミート行列、対称行列) だとは言えないのでした。

前回の問題文に、ちゃんと
> γ={x1,x2,…,xn}は任意のVの基底とする。
と書いてありましたね。

写像の表現行列とは、列ベクトルに左からかける係数行列を指すものとし、
基底ベクトルの内積 <x_i, x_j> を第 j 行 i 列成分とする行列を G とします。

成分計算をしてみるとわかるのですが、表現行列 A を持つ線型写像が
自己随伴写像であるための条件は、A^* = G A (G^-1) です。ただし、
A^* は A の随伴行列 (転置共役行列) を、G^-1 は G の逆行列を表します。

基底 { x_i } が正規直交系であるときは、G が単位行列になりますから、
この条件は A^* = A、すなわち A がエルミート行列であることになります。
前回の回答に書いたのは、この話ですが、
基底が正規直交系ではないときには、これは言えません。
実際、今回の質問文に挙げられた反例も、
基底が正規直交でない場合に表現行列が非対称になっています。

前回の質問 (QNo.3969275) に回答した者です。
済みません。間違っていました。

線型写像の表現行列 (の各成分) は、基底に依存して決まるものです。
基底が正規直交系でなければ、自己随伴写像の表現行列が
自己随伴行列 (エルミート行列、対称行列) だとは言えないのでした。

前回の問題文に、ちゃんと
> γ={x1,x2,…,xn}は任意のVの基底とする。
と書いてありましたね。

写像の表現行列とは、列ベクトルに左からかける係数行列を指すものとし、
基底ベクトルの内積 <x_i, x_j> を第 j 行 i 列成...続きを読む

Q行列式の計算教えてください!!!

次の行列式の値を計算したいのですがどうしてもできなくて・・・。
(2,1,3,6)
(0,2,1,3)
(4,3,9,6)
(4,0,5,9)
の行列の値を計算する過程をぜひ教えて下さい。
お願いします。

Aベストアンサー

「0をたくさん作る」ことで、計算をラクにします。
(2,1,3,6)
(0,2,1,3)
(4,3,9,6)
(4,0,5,9)
の第1行を2倍すると(4, 2, 6, 12)ですね。
この値を、第3行と第4行から引きます。
(2,1,3,6)
(0,2,1,3)
(0,1,3,-6)
(0,-2,-1,-3)


(2,1,3)
(1,3,-6)
(-2,-1,-3)
以下、同様にして行(列)の数を減らして行きます。

Q数学についての質問です。 行列Xの行列式を|X|とすると、逆行列X^(-1)の逆行列は |X^(-1

数学についての質問です。

行列Xの行列式を|X|とすると、逆行列X^(-1)の逆行列は
|X^(-1)|=1/|X|
となりますか?

Aベストアンサー

そうなります。

|AB|=|A| |B|なので、B=A^(-1)[←Aの逆行列です]と置くと、

左辺=|AB|=|A A^(-1)|=|E|=1
右辺=|A| |A^(-1)|

よって、|A| |A^(-1)|=1
ゆえに、|A^(-1)|=1/|A|

Q行列式の計算

| 0 a^2 b^2 1 |
| a^2 0 c^2 1 |
| b^2 c^2 0 1 |
| 1 1 1 0 |

上の行列式を計算したいのですが、対称性がありそうなので、単純に24個の組を計算するよりもラクに解ける方法があるのでしょうか?あるならばお教えください。
(WEBでは行列式の列がずれてしまうので、見づらかったらメモ帳やTextEditにコピペしてください)

Aベストアンサー

4行が1,1,1,0となってますね。この場合は「行について展開する」ことができます。ご存知か分かりませんのでヒントを少し。例えですが、この場合は「3行について展開」してみます。
| a b c |
| d e f |=a*|e f| +b*|d f| +c|d e|
| g h i |   |h i| |g i| |g h|
このような知識があれば問題の行列式を簡単な3行3列の行列式の足し算に直すことができます。どの行について展開すれば計算が簡単になるか考えて見てくださいね。

Q行列の中に行列がある行列式の計算について

A、Bをn次の行列としたとき、
行列式 
  |A B|
  |B A|  
は|A+B||A-B| になるのはよく知られていると思いますが、Cもn次の行列として、

   |A B C|
   |B A B|
   |C B A|

とかも計算の公式はあるのでしょうか。

ホントに知りたいのは、上でB=I(単位行列)、C=0(零行列)の場合です。

Aベストアンサー

なければ作る.

例えば (n+1)~(2n)行目, (2n+1)~(3n)行目を 1~n行目に加え, (2n+1)~(3n)列目を 1~n列目から引くと 0要素がいっぱいできるので, 1~n列目で生き残る |C-A| でくくれそうとかやれば作れないかねぇ.


人気Q&Aランキング