2次正方行列の逆行列を求めるプログラム
scanfの使い方には気をつけなければいけないらしいが、今の自分には他の方法を知らないため使用した。
#include<stdio.h> int main() { int i,j; double a[2][2],b[2][2]; // 行列の入力 for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { printf("要素,a[%d][%d]を入力せよ\n",i+1,j+1); scanf("%lf",&a[i][j]); } } //行列の確認 printf("入力した行列a[i][j]は以下のようになります.\n"); for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { printf("%f\t",a[i][j]); } printf("\n"); } //逆行列の存在確認と計算 if(a[0][0]*a[1][1]-a[0][1]*a[1][0] == 0){ printf("逆行列は存在しません\n"); }else{ printf("逆行列は以下のようになります.\n"); for (i = 0; i <= 1; i++) { for (j = 0; j <= 1; j++) { if(i == j){ b[i][j]=a[1-i][1-j]/(a[0][0]*a[1][1]-a[0][1]*a[1][0]); printf("%f\t",b[i][j]); }else{ b[i][j]=a[i][j]*(-1)/(a[0][0]*a[1][1]-a[0][1]*a[1][0]); printf("%f\t",b[i][j]); } } printf("\n"); } } }