Advertisement
Kushtrim

Llogarit Determinanta

Apr 5th, 2013
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.17 KB | None | 0 0
  1. import javax.swing.*;
  2. /**
  3.  * Zgjedh determinanta te rendit n me ane te minoreve
  4.  *
  5.  * @author Kushtrim
  6.  * @version 1.01
  7.  */
  8. public class Determinanta
  9. //  d.length -rreshtat
  10. // d[0].length - kolonat
  11.  
  12. {
  13.     public static void main(String args[])
  14.     {
  15.  
  16.         Determinanta llogarit = new Determinanta();
  17.        
  18.         // e marrim determinanten nga perdoruesi, e jo hard-code
  19.         double[][] det = llogarit.merrDeterminanten();
  20.  
  21.         /*    double[][] det = { {25,24,03,70, 5},
  22.                                  { 4, 6, 8, 6, 8},
  23.                                  { 7, 4, 6, 4, 8},
  24.                                  { 6, 8, 4, 2, 3},
  25.                                  { 1, 5, 9, 5, 6}};  */
  26.         // double[][] det2 = { {84,88,07},
  27.         //                     {03,48,06 } ,
  28.         //                     {05,02,08}};
  29.        
  30.        
  31.         System.out.println( llogarit.llogaritDeterminanten(det));
  32.     }
  33.  
  34.     public double llogaritDeterminanten( double[][] d )
  35.     {
  36.         double answer=0;
  37.         // nese eshte e shkalles 2, e llogaritim lehte
  38.         if( d.length == 2 )
  39.         {
  40.             answer = d[0][0] * d[1][1]  - d[1][0] * d[0][1];
  41.         }
  42.         else
  43.          
  44.         { //perndryshe vazhdo me ndarjen e matrice me minore
  45.             for ( int i = 0 ; i < d.length;i++)
  46.             {
  47.                 // e krijojme nje matrice te re katrore, per 1 me te vogel
  48.                 double[][] w = new double[d.length-1][d.length-1];
  49.  
  50.                 // llogaritjen po e bejme sipas kolones 1
  51.                 int kalo=0;
  52.                 for ( int j=0; j< d.length -1 ; j++)
  53.                 {
  54.                     if ( j == i )
  55.                     {   // nese jemi te rreshti qe duhet kaluar, kalo =1
  56.                         kalo=1;
  57.                     }
  58.  
  59.                     for ( int k = 0 ; k<  d.length -1; k++)
  60.                     {
  61.                         // pasi jemi te rreshti qe duhet kaluar, k eshte nje, pra fillojme te kopjojme nga
  62.                         // rreshti i ardhshem , j+kalo
  63.  
  64.                         // kopjojme nga shtylla k+1, pasi kolonen 1 gjithmone e kalojme, se po bejme llogaritjen me
  65.                         // minore sipas asaj kolone
  66.                         w[j][k] = d[j+kalo][k+1];
  67.  
  68.                     }
  69.  
  70.                 }
  71.  
  72.                 //  Math.pow e perdorim per ta llogaritur shenjen
  73.                 //  pergjigjes ia shtojme elementin d[i][0], here rezulatati i determinantes perkatese te shkalles per nje me te vogel
  74.                 answer += Math.pow( -1 , i+2 ) * d[i][0] * llogaritDeterminanten(w);
  75.  
  76.             }
  77.         }
  78.  
  79.         return answer;
  80.     }
  81.  
  82.     private double[][] merrDeterminanten()
  83.     {
  84.         int shkalla = Integer.parseInt(JOptionPane.showInputDialog("Çfarë shkalle ka determinanta"));
  85.         double[][] det = new double[shkalla][shkalla];
  86.  
  87.         for (int i = 0 ; i<shkalla;i++ )
  88.         {
  89.             for (int j = 0; j< shkalla; j++)
  90.             {
  91.                 det[i][j]= Integer.parseInt(JOptionPane.showInputDialog("Shkruani elementin e rreshtit " + (i+1) + " dhe shtylles " + (j+1)));
  92.             }
  93.         }
  94.         return det;
  95.     }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement