gagiD

Sopstvene vrijednosti

Mar 30th, 2014
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. void upis_mat(double (&A)[4][4] , int m ) {
  7.     for ( int i=0 ; i<m ; i++) {
  8.         for ( int j=0 ; j<m ; j++ ) {
  9.                 cout<<"unesite mat["<<i<<"]["<<j<<"]:"<<endl;
  10.                 cin>>A[i][j];
  11.         }
  12.     }
  13. }
  14. void ispis_mat(double (&A)[4][4] , int m){
  15.     for ( int i=0 ; i<m ; i++) {
  16.         for ( int j=0 ; j<m ; j++ ) {
  17.                 cout<<A[i][j]<<"   |   ";
  18.         }
  19.         cout<<endl;
  20.     }
  21. }
  22. int main() {
  23.     int n;
  24.     cout<<"Unesite red matrice(<=4):"<<endl;
  25.     while (1) {
  26.            cin>>n;
  27.            if ( n > 0 && n < 5 ) break;
  28.            else cout<<"Unesite n u rasponu od 0 do 5 - n(0,5)"<<endl;
  29.     }
  30.  
  31.     double matrica[4][4];
  32.  
  33.     cout<<"<<-------------------------------------------->>"<<endl;
  34.     cout<<"Unos matrice:"<<endl;
  35.     upis_mat(matrica , n );
  36.  
  37.     cout<<"<<-------------------------------------------->>"<<endl;
  38.     cout<<"Unijeli ste matricu:"<<endl<<endl;
  39.     ispis_mat(matrica , n );
  40.  
  41.     cout<<"<<-------------------------------------------->>"<<endl;
  42.     cout<<"Sopstveni vektor matrice:"<<endl<<endl;
  43.  
  44.     double s_vektor[n+1] , lambda , lambdaR1 , lambdaR2 , lambdaI1 , lambdaI2 , D;
  45.  
  46.     switch(n) {
  47.     case 1:
  48.         s_vektor[0] = -1;
  49.         s_vektor[1] = matrica[0][0];
  50.         lambda = matrica[0][0];
  51.  
  52.         cout<<"-λ"<<showpos<<matrica[0][0]<<"=0"<<endl;
  53.  
  54.         cout<<"<<-------------------------------------------->>"<<endl;
  55.         cout<<"Sopstvena vrednost matrice(lambda):"<<endl<<endl;
  56.         cout<<" λ = "<<matrica[0][0]<<endl;
  57.         break;
  58.     case 2:
  59.         s_vektor[0] = 1;
  60.         s_vektor[1] = -matrica[0][0]-matrica[1][1];
  61.         s_vektor[2] = matrica[0][0]*matrica[1][1]-matrica[1][0]*matrica[0][1];
  62.  
  63.         D = s_vektor[1]*s_vektor[1]-4*1*s_vektor[2];
  64.  
  65.         if ( D >= 0 ) {
  66.             lambdaR1 = (-s_vektor[1]+sqrt(D))/2;
  67.             lambdaR2 = (-s_vektor[1]-sqrt(D))/2;
  68.             lambdaI1 = lambdaI2 = 0;
  69.         }
  70.         else {
  71.             lambdaR1 = lambdaR2 = -s_vektor[1]/2;
  72.             lambdaI1 = sqrt(-D)/2;
  73.             lambdaI2 = -sqrt(-D)/2;
  74.         }
  75.  
  76.         cout<<"-λ^2"<<showpos<<s_vektor[1]<<"*λ"<<showpos<<s_vektor[2]<<"=0"<<endl;
  77.  
  78.         cout<<"<<-------------------------------------------->>"<<endl;
  79.         cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
  80.         cout<<"lambda1   realni dio:"<<lambdaR1<<"   imaginarni:"<<lambdaI1<<endl;
  81.         cout<<"lambda2   realni dio:"<<lambdaR2<<"   imaginarni:"<<lambdaI2<<endl;
  82.         break;
  83.     case 3:
  84.         s_vektor[0] = -1;
  85.  
  86.         s_vektor[1] = matrica[0][0] + matrica[1][1] + matrica[2][2];
  87.  
  88.         s_vektor[2] = -(matrica[0][0]*matrica[1][1]+matrica[1][1]*matrica[2][2]+matrica[0][0]*matrica[2][2]-matrica[0][2]*matrica[2][0]-matrica[1][2]*matrica[2][1]-matrica[0][1]*matrica[1][0]);
  89.  
  90.         s_vektor[3] = matrica[0][0]*matrica[1][1]*matrica[2][2] + matrica[0][1]*matrica[1][2]*matrica[2][0] + matrica[0][2]*matrica[1][0]*matrica[2][1] - matrica[0][2]*matrica[2][0]*matrica[1][1] - matrica[0][0]*matrica[1][1]*matrica[2][1] - matrica[0][1]*matrica[1][0]*matrica[2][2];
  91.  
  92.         cout<<"-λ^3"<<showpos<<s_vektor[1]<<"*λ^2"<<showpos<<s_vektor[2]<<"*λ"<<showpos<<s_vektor[3]<<"=0"<<endl;
  93.  
  94.         cout<<"<<-------------------------------------------->>"<<endl;
  95.         cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
  96.         cout<<"Neki drugi put :D"<<endl;
  97.         break;
  98.     case 4:
  99.         s_vektor[0] = 1;
  100.  
  101.         s_vektor[1] = -matrica[0][0] - matrica[1][1] - matrica[2][2] - matrica[3][3] ;
  102.  
  103.         s_vektor[2] = matrica[0][0]*matrica[3][3] + matrica[0][0]*matrica[1][1] + matrica[0][0]*matrica[2][2] - matrica[1][1]*matrica[3][3] - matrica[2][2]*matrica[3][3] - matrica[1][1]*matrica[2][2] + matrica[2][1]*matrica[3][2] - matrica[1][3]*matrica[3][1] - matrica[3][2]*matrica[2][3] - matrica[1][2]*matrica[2][1] + matrica[0][1]*matrica[1][0] + matrica[0][3]*matrica[3][0] - matrica[0][2]*matrica[2][0];
  104.  
  105.         s_vektor[3] = -matrica[0][0]*matrica[1][1]*matrica[3][3] - matrica[0][0]*matrica[3][3]*matrica[2][2] - matrica[0][0]*matrica[1][1]*matrica[2][2] - matrica[0][0]*matrica[2][1]*matrica[3][2] + matrica[0][0]*matrica[1][3]*matrica[3][1] + matrica[0][0]*matrica[3][2]*matrica[2][3] + matrica[0][0]*matrica[1][2]*matrica[2][1] - matrica[3][3]*matrica[1][1]*matrica[2][2] - matrica[1][2]*matrica[2][3]*matrica[3][2] - matrica[3][3]*matrica[2][1]*matrica[3][2] + matrica[1][3]*matrica[2][2]*matrica[3][1] + matrica[1][1]*matrica[2][3]*matrica[3][2] + matrica[1][2]*matrica[2][1]*matrica[3][3] - matrica[0][1]*matrica[1][0]*matrica[2][2] - matrica[0][1]*matrica[1][0]*matrica[3][3] + matrica[0][1]*matrica[3][0]*matrica[1][3] + matrica[0][1]*matrica[2][0]*matrica[1][2] - matrica[0][2]*matrica[1][0]*matrica[2][1] - matrica[0][2]*matrica[2][3]*matrica[3][0] + matrica[0][2]*matrica[2][0]*matrica[1][1] + matrica[0][2]*matrica[2][0]*matrica[3][3] - matrica[0][3]*matrica[3][0]*matrica[1][1] - matrica[0][3]*matrica[3][0]*matrica[2][2] + matrica[0][3]*matrica[1][0]*matrica[3][1] + matrica[0][3]*matrica[3][2]*matrica[2][1];
  106.  
  107.         s_vektor[4] = matrica[0][0]*matrica[1][1]*matrica[2][2]*matrica[3][3] + matrica[0][0]*matrica[1][2]*matrica[2][3]*matrica[3][1] + matrica[0][0]*matrica[2][1]*matrica[3][2]*matrica[3][3] - matrica[0][0]*matrica[1][3]*matrica[2][2]*matrica[3][1] - matrica[0][0]*matrica[1][1]*matrica[2][3]*matrica[3][2] - matrica[0][0]*matrica[1][2]*matrica[2][1]*matrica[3][3] + matrica[0][1]*matrica[1][0]*matrica[2][2]*matrica[3][3] + matrica[0][1]*matrica[1][2]*matrica[2][3]*matrica[3][0] + matrica[0][1]*matrica[1][3]*matrica[2][0]*matrica[3][2] - matrica[0][1]*matrica[1][3]*matrica[3][0]*matrica[2][2] - matrica[0][1]*matrica[3][2]*matrica[2][3]*matrica[1][0] - matrica[0][1]*matrica[1][2]*matrica[2][0]*matrica[3][3] + matrica[0][2]*matrica[1][0]*matrica[2][1]*matrica[3][3] + matrica[0][2]*matrica[1][1]*matrica[2][3]*matrica[3][0] + matrica[0][2]*matrica[1][3]*matrica[2][0]*matrica[3][1] - matrica[0][2]*matrica[3][0]*matrica[2][1]*matrica[1][3] - matrica[0][2]*matrica[3][1]*matrica[2][3]*matrica[1][0] - matrica[0][2]*matrica[2][0]*matrica[1][1]*matrica[3][3] + matrica[0][3]*matrica[1][0]*matrica[2][1]*matrica[3][2] + matrica[0][3]*matrica[3][0]*matrica[1][1]*matrica[2][2] + matrica[0][3]*matrica[1][2]*matrica[2][0]*matrica[3][1] - matrica[0][3]*matrica[3][0]*matrica[2][1]*matrica[1][2] - matrica[0][3]*matrica[1][0]*matrica[3][1]*matrica[2][2] - matrica[0][3]*matrica[3][2]*matrica[2][0]*matrica[1][1];
  108.  
  109.         cout<<"λ^4"<<showpos<<s_vektor[1]<<"*λ^3"<<showpos<<s_vektor[2]<<"*λ^2"<<showpos<<s_vektor[3]<<"*λ"<<showpos<<s_vektor[4]<<"=0"<<endl;
  110.  
  111.         cout<<"<<-------------------------------------------->>"<<endl;
  112.         cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
  113.         cout<<"Neki drugi put :D"<<endl;
  114.         break;
  115.     break;
  116.     default:
  117.         ;
  118.     }
  119.  
  120.     return 0;
  121. }
Advertisement
Add Comment
Please, Sign In to add comment