|
> No.3488[元記事へ]
山中和義さんへのお返事です。
> 次のプログラムのように展開式を使った関数を用いると、どのモードも結果は一致します。
> 定義した関数DET3は、32ビット整数の範囲で、計算結果は整数として保証されるのでしょうか。
> 偶々、浮動小数点による近似値が、整数(真の値)と一致したと考えるのでしょうか。
>
>
> DATA 2,2,3
> DATA 3,4,2
> DATA 7,9,6
> DIM M(3,3),X(3,3)
> FOR i=1 TO 3
> FOR J=1 TO 3
> READ T
> LET M(i,J)=T
> LET X(i,J)=T*T
> NEXT J
> NEXT i
> IF DET(M)=1 THEN MAT PRINT M;
> IF DET(X)=1 THEN MAT PRINT X; !10進、1000桁モード
> IF DET3(M)=1 THEN MAT PRINT M;
> IF DET3(X)=1 THEN MAT PRINT X;
> END
> EXTERNAL FUNCTION DET3(M(,)) !3行3列の行列式の値
> LET DET3=M(1,1)*M(2,2)*M(3,3)+M(1,2)*M(2,3)*M(3,1)+M(1,3)*M(2,1)*M(3,2) &
> & -M(1,3)*M(2,2)*M(3,1)-M(1,1)*M(2,3)*M(3,2)-M(1,2)*M(2,1)*M(3,3)
> END FUNCTION
>
>
上記のプログラムはその前のLET DET3 とどう違うんでしょうか?
これで定義していたらやはり10進、1000桁モード
で結果(MAT PRINT Xを拾わない。)がちがうような気がします。
PARI/GP
という計算ソフトを用いて
| a b c |
| d e f | ==>a,b,c;d,e,f;g,h,i
| g h i |
を探したら、結構沢山現れてびっくりしました。
2,2,3;3,4,2;7,9,6
2,2,3;9,7,6;4,3,2
2,3,3;3,2,5;5,9,7
2,3,3;5,7,9;3,5,2
2,3,4;6,7,9;3,2,2
2,3,5;3,2,3;9,5,7
2,3,5;3,2,9;3,5,7
2,3,6;4,2,9;3,2,7
2,3,7;2,4,9;3,2,6
2,3,9;3,2,5;5,3,7
2,4,9;3,2,6;2,3,7
3,3,5;4,3,4;4,5,9
3,3,5;5,4,9;3,4,4
3,4,4;3,3,5;5,4,9
3,4,4;5,9,4;3,5,3
3,5,7;2,3,5;3,2,9
4,5,9;3,3,5;4,3,4
5,7,9;3,5,2;2,3,3
6,7,9;3,2,2;2,3,4
|
|