Skip to content

Instantly share code, notes, and snippets.

@mevsungur
Last active April 3, 2020 07:47
Show Gist options
  • Save mevsungur/3e2703b5b4a0e1bc1870c153b43fd675 to your computer and use it in GitHub Desktop.
Save mevsungur/3e2703b5b4a0e1bc1870c153b43fd675 to your computer and use it in GitHub Desktop.
Java ile n*n boyutunda bir matrisin determinantının hesaplanması
package com.mevlutsungur;
/**
* Bu program konsol üzerinden n*n boyutunda bir matrisi girdi olarak alır ve determinantını ekrana yazdırır.
*
* This program calculates determinant of a n*n matrix and display it on console.
*/
import java.util.Scanner;
public class DeterminantCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int satirSayisi=0;
int sutunSayisi=1;
do {
System.out.println("Matrisin satır sayısını giriniz: ");
satirSayisi = scanner.nextInt();
System.out.println("Matrisin sütun sayısını giriniz: ");
sutunSayisi = scanner.nextInt();
if(satirSayisi !=sutunSayisi) {
System.err.println("Yalnizca satir ve sutun sayisi ayni olan matrislerin determinanti hesaplanabilir.");
}
} while (satirSayisi!=sutunSayisi);
int girilenMatris[][] = new int[satirSayisi][sutunSayisi];
for (int i=0;i<satirSayisi;i++) {
for (int j=0;j<sutunSayisi;j++) {
System.out.println(i+1 + ". satirin " + (j+1) +". sutun değerini giriniz.");
girilenMatris[i][j] = scanner.nextInt();
}
}
System.out.println("Girdiğiniz matris: " );
for(int i=0;i<satirSayisi;i++) {
System.out.print("|");
for(int j=0;j<sutunSayisi;j++) {
System.out.print(" " + girilenMatris[i][j] );
}
System.out.println(" |");
}
System.out.println();
System.out.println("Verilen matris determinanti: " + determinantHesapla(girilenMatris));
scanner.close();
}
public static int determinantHesapla(int[][] matris) {
/* Tek boyutlu matris */
if(matris.length == 1) {
return matris[0][0];
}
/* Iki boyutlu matris ise a*d - b*c */
if(matris.length ==2) {
return matris[0][0] * matris[1][1] - matris[0][1]*matris[1][0];
}
/* n boyutlu matris formulu */
int det=0;
for(int i =0;i<matris[0].length;i++) {
int temp[][] = new int[matris.length-1][matris[0].length-1];
for(int j =1; j<matris.length;j++) {
for (int k =0;k<matris[0].length;k++) {
if(k<i) {
temp[j-1][k]=matris[j][k];
} else if(k>i) {
temp[j-1][k-1]=matris[j][k];
} else
continue;
}
}
det +=matris[0][i] * Math.pow(-1,i) * determinantHesapla(temp);
}
return det;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment