Last active
April 3, 2020 07:47
-
-
Save mevsungur/3e2703b5b4a0e1bc1870c153b43fd675 to your computer and use it in GitHub Desktop.
Java ile n*n boyutunda bir matrisin determinantının hesaplanması
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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