50936

Знаходження власних чисел і векторів матриці по методу Крилова

Лабораторная работа

Информатика, кибернетика и программирование

Мета: навчитися знаходити власні числа і вектори матриці по методу Крилова. Устаткування: лист формату А4, ручка, С ++. Хід роботи Правила техніки безпеки Теоретичні дані Індивідуальне завдання. Знайти одне з власних чисел і відповідний йому власний вектор матриці А по методу Крилова (використати результати лабороторної роботи № 18).

Украинкский

2014-02-02

60.5 KB

2 чел.

М   Вариант 13    Остапова А.А.

Лабораторна робота №19

Тема. Знаходження власних чисел і векторів матриці по методу Крилова.

Мета: навчитися знаходити власні числа і вектори матриці по методу Крилова.

Устаткування: лист формату А4, ручка, С ++.

Хід роботи

  1.  Правила техніки безпеки
  2.  Теоретичні дані
  3.  Індивідуальне завдання.

Знайти одне з власних чисел і відповідний йому власний вектор матриці А по методу Крилова (використати результати лабороторної роботи № 18).

Из Лабораторной робота №18 получили:

#include <iostream.h>

#include <math.h>

double  f (double x,double*Y,int m)

{int i;

double S;

for(i=0;i<m;i++)S+=pow(x,i)*Y[m-1-i];

return S+pow(x,m);}

double f2 (double x,double*Y,int m)

{int i;

double S;

for(i=1;i<m;i++)S+=i*pow(x,i-1)*Y[m-1-i];

return S+m*pow(x,m-1);}

void main()

{cout<<"=======================================\n";

int n,i,j,k,p,N;

double q,l,a,b,xs,xm,xn,xm1,xn1,eps=0.01;

cout<<"ВВЕДИТЕ РАЗМЕР: ";cin>>n;

cout<<"----------------------------------------\n";

cout<<"ВВЕДИТЕ МАТРИЦУ: \n";

double **A1=new double*[n]; 

for(i=0;i<n;i++){

A1[i]=new double [n];

for(j=0;j<n;j++){

cin>>A1[i][j];}}

double **A=new double*[n];

for(i=0;i<n;i++)A[i]=new double [n+1];

double **A2=new double*[n];

for(i=0;i<n;i++)A2[i]=new double [n+1];

double  *Y=new double [n];

N=1;

if(N){

cout<<"\nВВЕДИТЕ ПРОИЗВОЛЬНЫЙ НЕНУЛЕВОЙ ВЕКТОР: \n";

for(i=0;i<n;i++)cin>>Y[i];

cout<<"----------------------------------------\n";

for(k=0;k<=n;k++){

for(j=0;j<n;j++){

for(i=0;i<n;i++)l+=Y[i]*A1[i][j];

if(k!=n)A[j][n-k-1]=l;

if(k==n)A[j][k]=l*(-1);

l=0;}

for(p=0;p<n;p++)Y[p]=A[p][n-k-1];}

int m=n;n=m+1;

for(i=0;i<n-1;i++){

for(j=0;j<n;j++){

A2[i][j]=A[i][j];}}

for(i=0;i<m;i++){

if(A[i][i]==0){cout<<"\nМЕТОД ГАУССА НЕПРИМЕНИМ. ВВЕДИТЕ ДРУГОЙ ПРОИЗВОЛЬНЫЙ НЕНУЛЕВОЙ ВЕКТОР.\n";break;}

for(j=n-1;j>=i;j--){

A[i][j]/=A[i][i];}

for(k=i+1;k<m;k++){

l=A[k][i];

for(p=i;p<n;p++){

A[k][p]-=l*A[i][p];}}}

for(i=m-1;i>=0;i--){

Y[i]=A[i][n-1];

for(j=n-2;j>i;j--){

Y[i]-=A[i][j]*Y[j];}}

N=0;}

if(N==0){

cout<<"\nОТВЕТ: \n";

cout<<"Л^"<<n-1;

for(i=0;i<n-1;i++){

if(Y[i]>=0)cout<<"+";

cout<<Y[i];

if(n-i-2>1)cout<<"*Л^"<<n-i-2;

if(n-i-2==1)cout<<"*Л";}cout<<"=0";

cout<<"\nЛ принадлежит отрезку ";cin>>a>>b;

 if ((f(a,Y,n-1)*f2(a,Y,n-1)) < 0) {xm=a; xs=xm1=b;}

else {xm=b; xs=xm1=a;}

xn=xn1=xm;

do{ xm=xn;xm1=xn1;

xn=xm-(f(xm,Y,n-1)*(xs-xm)/(f(xs,Y,n-1)-f(xm,Y,n-1)));

xn1=xm1-(f(xm1,Y,n-1)/f2(xm1,Y,n-1));}

while (fabs(xn-xn1)>eps);

cout<<"Л="<<xn<<endl;

double*X=new double [n-1];

for(i=0;i<n-1;i++){

q=1;

X[i]=A2[0][i];

for(j=1;j<n-1;j++){

q=xn*q+Y[j];

X[i]+=q*A2[j][i];}

if((n-1)/2-i==1)cout<<"\nX= "<<X[i];

else cout<<"\n "<<X[i];}}

cout<<endl;

delete []Y;

delete []A;

delete []A1;

delete []A2;

cout<<"\n=======================================\n";}

  1.  Контрольні питання
  •  Дайте визначення власних чисел і векторів матриці.
  •  Сформулюйте задачу знаходження власних чисел і векторів матриці по методу Крилова.
  •  Які допоміжні методи використовуються в методі Крилова при знаходженні власних чисел матриці?
  •  За якими формулами знаходиться  власний вектор?



 

А также другие работы, которые могут Вас заинтересовать

72766. Для чего нужна ВИКИ среда? 110 KB
  В современном мире все большую ценность приобретает информация. Информация становится одним из важнейших ресурсов, обладание которым дает преимущества как и сферах профессиональной деятельности, так и в повседневной жизни. Использование информации, то есть ее сбор, обработка и хранение...
72767. История возникновения моего поселка 69 KB
  Предметом детального изучения в этом году стала улица поселка им. Шмидта, названная в четь революционерки В. Засулич. Актуальность нашей работы заключается в том, что каждый житель нашего города должен не только знать название своей улицы, но и знать историю её создания.
72769. ЗАЧЕМ НУЖНЫ ИНДИКАТОРЫ? 61.5 KB
  Кислотно-щелочные индикаторы или просто индикаторы широко используют в химии в том числе и в школе. Индикаторы используются для определения реакции среды кислая щелочная или нейтральная. А как же быть в том случае если дома у вас нет химических индикаторов а необходимо определить реакцию среды продуктов...
72770. Семь чудес Чечни 217 KB
  Писать о чудесах в начале XXI века задача которая может показаться трудной и неблагодарной. Семью чудесами света так почти дословно пишется во всех научных справочниках считаются творения которые своими техническим или художественным совершенством вызывали восхищение людей прошлых веков.
72771. Определение размеров молекулы растительного масла 183 KB
  Все тела, которые нас окружают, состоят из мельчайших частиц – молекул. Очень интересно узнать, каковы размеры молекул? Как их можно определить? Из-за очень малых размеров молекулы нельзя увидеть невооруженным глазом или с помощью обыкновенного микроскопа.