PRINT PRINT "< 行列のn乗 >" PRINT PRINT "MAT INPUT の方法" PRINT " 0 -1" PRINT " 2 3" PRINT "上記の行列の入力方法は、0,-1,2,3 です。" PRINT DIM X(2,2),E(2,2),Z1(2,2),Z2(2,2),S1(2),S2(2),R1(2,2),R2(2,2),R3(2,2),R4(2,2),Q1(2,2),Q2(2,2),Q3(2,2) DATA 1,0 DATA 0,1 MAT READ E MAT INPUT PROMPT "行列を入力してください。 ":X PRINT PRINT "演算テンソル:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";X(i,j); NEXT j PRINT NEXT i PRINT INPUT PROMPT "何乗しますか? ":N PRINT FOR i=1 TO N MAT E=E*X NEXT i PRINT "答え:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";E(i,j); NEXT j PRINT NEXT i PRINT PRINT LET A=(X(1,1)+X(2,2))^2-4*(X(1,1)*X(2,2)-X(1,2)*X(2,1)) IF A<0 THEN GOTO 20 LET Y1=(X(1,1)+X(2,2)+SQR(A))/2 ! 2次方程式の解の公式その1 IF Y1=0 THEN GOTO 10 LET Z1(1,1)=X(1,1)-Y1 LET Z1(1,2)=X(1,2) LET Z1(2,1)=X(2,1) LET Z1(2,2)=X(2,2)-Y1 LET S1(1)=-1*Z1(1,2) LET S1(2)=Z1(1,1) PRINT "固有ベクトル: ( ";S1(1);", ";S1(2);" ) 固有値:";Y1 10 PRINT LET Y2=(X(1,1)+X(2,2)-SQR(A))/2 ! 2次方程式の解の公式その2 IF Y2=0 OR Y2=Y1 THEN GOTO 30 LET Z2(1,1)=X(1,1)-Y2 LET Z2(1,2)=X(1,2) LET Z2(2,1)=X(2,1) LET Z2(2,2)=X(2,2)-Y2 LET S2(1)=-1*Z2(1,2) LET S2(2)=Z2(1,1) PRINT "固有ベクトル: ( ";S2(1);", ";S2(2);" ) 固有値:";Y2 PRINT LET R1(1,1)=S1(1) LET R1(1,2)=S2(1) LET R1(2,1)=S1(2) LET R1(2,2)=S2(2) PRINT "固有テンソル:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";R1(i,j); NEXT j PRINT NEXT i PRINT MAT R2=INV(R1) MAT R3=X*R1 MAT R4=R2*R3 PRINT "固有ベクトル空間に座標変換された演算テンソル:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";R4(i,j); NEXT j PRINT NEXT i PRINT LET Q1(1,1)=R4(1,1)^N LET Q1(1,2)=0 LET Q1(2,1)=0 LET Q1(2,2)=R4(2,2)^N PRINT "固有ベクトル空間に座標変換された演算テンソルの";N;"乗:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";Q1(i,j); NEXT j PRINT NEXT i PRINT MAT Q2=Q1*R2 MAT Q3=R1*Q2 PRINT "答え:" FOR i=1 TO 2 FOR j=1 TO 2 PRINT " ";ROUND(Q3(i,j),5); NEXT j PRINT NEXT i PRINT GOTO 30 20 PRINT "固有ベクトルはありません。" 30 PRINT END