[C++/Qt] - Sopstvene vrijednosti matrice

Teme vezane za console/GUI programiranje u C/C++ jeziku
1 post • Stranica: 1/1.

[C++/Qt] - Sopstvene vrijednosti matrice

PostPostao/la gagiD » 30 ožu 2014, 19:40

Pozdrav,

Koga zanima sta su sopstvene vrijednosti matrice neka pogleda
Procitao sam da se koristi u Googlu algoritmu za pretrazivanje (Page Rank).

cpp code
#include <iostream>
#include <cmath>

using namespace std;

void upis_mat(double (&A)[4][4] , int m ) {
for ( int i=0 ; i<m ; i++) {
for ( int j=0 ; j<m ; j++ ) {
cout<<"unesite mat["<<i<<"]["<<j<<"]:"<<endl;
cin>>A[i][j];
}
}
}
void ispis_mat(double (&A)[4][4] , int m){
for ( int i=0 ; i<m ; i++) {
for ( int j=0 ; j<m ; j++ ) {
cout<<A[i][j]<<" | ";
}
cout<<endl;
}
}
int main() {
int n;
cout<<"Unesite red matrice(<=4):"<<endl;
while (1) {
cin>>n;
if ( n > 0 && n < 5 ) break;
else cout<<"Unesite n u rasponu od 0 do 5 - n(0,5)"<<endl;
}

double matrica[4][4];

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Unos matrice:"<<endl;
upis_mat(matrica , n );

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Unijeli ste matricu:"<<endl<<endl;
ispis_mat(matrica , n );

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Sopstveni vektor matrice:"<<endl<<endl;

double s_vektor[n+1] , lambda , lambdaR1 , lambdaR2 , lambdaI1 , lambdaI2 , D;

switch(n) {
case 1:
s_vektor[0] = -1;
s_vektor[1] = matrica[0][0];
lambda = matrica[0][0];

cout<<"-λ"<<showpos<<matrica[0][0]<<"=0"<<endl;

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Sopstvena vrednost matrice(lambda):"<<endl<<endl;
cout<<" λ = "<<matrica[0][0]<<endl;
break;
case 2:
s_vektor[0] = 1;
s_vektor[1] = -matrica[0][0]-matrica[1][1];
s_vektor[2] = matrica[0][0]*matrica[1][1]-matrica[1][0]*matrica[0][1];

D = s_vektor[1]*s_vektor[1]-4*1*s_vektor[2];

if ( D >= 0 ) {
lambdaR1 = (-s_vektor[1]+sqrt(D))/2;
lambdaR2 = (-s_vektor[1]-sqrt(D))/2;
lambdaI1 = lambdaI2 = 0;
}
else {
lambdaR1 = lambdaR2 = -s_vektor[1]/2;
lambdaI1 = sqrt(-D)/2;
lambdaI2 = -sqrt(-D)/2;
}

cout<<"-λ^2"<<showpos<<s_vektor[1]<<"*λ"<<showpos<<s_vektor[2]<<"=0"<<endl;

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
cout<<"lambda1 realni dio:"<<lambdaR1<<" imaginarni:"<<lambdaI1<<endl;
cout<<"lambda2 realni dio:"<<lambdaR2<<" imaginarni:"<<lambdaI2<<endl;
break;
case 3:
s_vektor[0] = -1;

s_vektor[1] = matrica[0][0] + matrica[1][1] + matrica[2][2];

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]);

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];

cout<<"-λ^3"<<showpos<<s_vektor[1]<<"*λ^2"<<showpos<<s_vektor[2]<<"*λ"<<showpos<<s_vektor[3]<<"=0"<<endl;

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
cout<<"Neki drugi put "<<endl;
break;
case 4:
s_vektor[0] = 1;

s_vektor[1] = -matrica[0][0] - matrica[1][1] - matrica[2][2] - matrica[3][3] ;

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];

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];

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];

cout<<"λ^4"<<showpos<<s_vektor[1]<<"*λ^3"<<showpos<<s_vektor[2]<<"*λ^2"<<showpos<<s_vektor[3]<<"*λ"<<showpos<<s_vektor[4]<<"=0"<<endl;

cout<<"<<-------------------------------------------->>"<<endl;
cout<<"Sopstvene vrednosti matrice(lambde):"<<endl<<endl;
cout<<"Neki drugi put "<<endl;
break;
break;
default:
;
}

return 0;
}


Kod za GUI nisam postavio jer je u sustini isti.

GNU/Linux(32):


Win(32) - s puno dll-ova @-) ,

1 post • Stranica: 1/1.

Na mreži

Trenutno korisnika/ca: / i 1 gost.