#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<math.h>
using namespace std;
int main()
{
int n,i,j,k;
float **tab,*w,*w1,l,l1,eps,s,r,max;
//deklaracja
tablic
cout<<"Podaj wymiar macierzy kwadratowej >>>
"; cin>>n;
tab=(float**)malloc(n*sizeof(float));
for(i=0;i<n;i++)
{
tab[i]=(float*)malloc(n*sizeof(float));
}
w=(float*)malloc(n*sizeof(float));
w1=(float*)malloc(n*sizeof(float));
//zczytanie macierzy i dokładności
cout<<"Dokladnosc obliczen
>>> "; cin>>eps;
cout<<endl<<"Wprowadz macierz : "<<endl;
for(i=0;i<n;i++)
{
cout<<"wiersz
"<<i+1<<" : "<<endl;
for(j=0;j<n;j++)
{
cin>>tab[i][j];
}
}
cout<<endl<<"Wprowadz wektor poczatkowy
: "<<endl;
for(i=0;i<n;i++)
{
cin>>w[i];
}
//wypisanie
zczytanych macierzy
cout<<endl<<"Macierz : "<<endl;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cout<<tab[i][j]<<" ";
}
cout<<endl;
}
cout<<endl<<"Wektor
poczatkowy : "<<endl;
for(i=0;i<n;i++)
{
cout<<w[i]<<endl;
}
//obliczenie
wartości własnej i wektora własnego
k=0;
l1=0;
do
{
k++;
for(i=0;i<n;i++)
{
s=0;
for(j=0;j<n;j++)
{
s=s+tab[i][j]*w[j];
}
w1[i]=s;
}
l=0;
for(i=0;i<n;i++)
{
l=l+w1[i]/w[i];
}
l=l/3.0;
r=fabs(l-l1);
l1=l;
for(i=0;i<n;i++)
{
w[i]=w1[i];
}
}while(r>=eps);
//wyświetlenie
wyników
cout<<"Wartosc wlasna :
"<<l<<" uzyskana
po "<<k<<" krokach "<<endl<<endl;
cout<<"Wektor wlasny odpowiadajacy wartosci wlasnej : "<<endl<<endl;
max=w[0];
for(i=0;i<n;i++)
{
cout<<w[i]<<endl;
if(w[i]>max)
max=w[i];
}
cout<<endl<<"Wektor wlasny
znormalizowany : "<<endl<<endl;
for(i=0;i<n;i++)
{
cout<<w[i]/max<<endl;
}
getch();
}