С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 63, средняя оценка - 4.73
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
#1

Вычисление собственных значений и собственных векторов матрицы - C++

03.01.2011, 16:46. Просмотров 10360. Ответов 4
Метки нет (Все метки)

Доброго времени суток всем.
Собственно написал программу, реализует степенной метод. Проблема в округлении. 1 итерация- вычисление начального вектора. 2 итерация тоже идет нормально, но потом получаются значения l=7.03 l0=7.25. по идее е=0.22, но почему то дробная часть отбрасывается и е получается равным 0-> программа заканчивает вычисления.
Вот код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<stdio.h>
#include<math.h>
 
void Input(int n,int A[][100])
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&A[i][j]);
}
 
void Matr(int A[][100],int n)
{
int y0[100],i,j,y[100],p,k=0;
float e=1.0,l,l0;
scanf("%d",&p);
for (i=0;i<n;i++)
y0[i]=1;
do
{
for (i=0;i<n;i++)
{
y[i]=0;
for (j=0;j<n;j++)
y[i]=y[i]+A[i][j]*y0[j];
printf("%d\n",y[i]);
}
if (k==0)
    {
    l0=y[p]/y0[p];
    k++;
    }
else
    {
    l=y[p]/y0[p];
    printf("l=%f",l);
    printf("l0=%f",l0);
    e=fabs(l-l0);
    printf("e=%f",e);
    l0=l;
    }
for (i=0;i<n;i++)
y0[i]=y[i];
}
while (e>0.001);
}
 
void main()
{
int n,A[100][100];
scanf("%d",&n);
Input(n,A);
Matr(A,n);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2011, 16:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление собственных значений и собственных векторов матрицы (C++):

Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений - C++
Курсовая работа!! Задание: &quot;Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений&quot; Матрицу...

Вычисление собственных значений и собственных векторов матрицы - C++
Вычисление собственных значений и собственных векторов матрицы. Метод скалярных произведений Матрицу задаём произвольно! а дальше по...

Метод итераций: нахождение собственных векторов и собственных значений матрицы - C++
Доброго времени суток. метод итерации нахождение собственных векторов и собственных значений матрицы - вот тема на которую нужно написать...

Функция hmatrixevd из пакета alglib для поиска собственных значений и собственных векторов - C++
Добрый день. Нужно найти собственные значения и вектора комплексной эрмитовой матрицы. Под решение этой задачи подошла функция hmatrixevd ...

КуР-алгоритм поиска собственных значенийдля почти треугольной матрицы! - C++
QR-алгоритм поиска собственных значенийдля почти треугольной матрицы! Помогите написать, а лучше сами напишите прогу на чистом С с...

Реализация собственных классов - C++
Разработать прогнрамму, демонстрирующую работу с объектами 2х типов: Triangle(треугольник) и Quadrate(квадрат ).Каждый объект должен иметь...

4
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
03.01.2011, 16:52 #2
видимо проблемы при операциях между int и другими типами, замените все числа на double (float)
1
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
03.01.2011, 17:19  [ТС] #3
получилось=) я тож так сначала подумал, даже перепроверил все. но ниче не нашел=(

Добавлено через 17 минут
ну тогда сразу ещё вопрос. наибольшее собственное значение я вычислил(по заданию). как вычислить соответствующий вектор?
0
Mayonez
380 / 272 / 21
Регистрация: 26.12.2009
Сообщений: 875
03.01.2011, 17:38 #4
Цитата Сообщение от Гамбит Посмотреть сообщение
как вычислить соответствующий вектор?
в соответствуещее характеристическое уравнение подставить собственное значение - это и будет собственный вектор.
Или это не математический вопрос?
0
Гамбит
14 / 14 / 1
Регистрация: 19.10.2009
Сообщений: 93
04.01.2011, 13:10  [ТС] #5
а если в условии моей программы? если делать через характеристическое уравнение, то мне нужно дописывать код для его составления и решения, что не так то и просто.

Добавлено через 17 часов 52 минуты
Вот готовый код, если кому надо
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<stdio.h>
#include<math.h>
 
void Input(int n,int A[][100])
{
int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
scanf("%d",&A[i][j]);
}
 
void Matr(int A[][100],int n)
{
float w0[100],w[100],summ=0,w0norm[100],e,d,d0;
int i,j,k;
for (i=0;i<n;i++)
w0[i]=0;
w0[0]=1;
do
{
for (i=0;i<n;i++)
summ=summ+w0[i]*w0[i];
d0=sqrt(summ);
for (i=0;i<n;i++)
w0norm[i]=w0[i]/d0;
for (i=0;i<n;i++)
    {
    w[i]=0;
    for (j=0;j<n;j++)
    w[i]=w[i]+A[i][j]*w0norm[j];
    }
summ=0;
for (i=0;i<n;i++)
summ=summ+w[i]*w[i];
d=sqrt(summ);
e=fabs(d-d0);
for (i=0;i<n;i++)
w0[i]=w[i];
summ=0;
}
while(e>0.001);
printf("%f\n",d);
for (i=0;i<n;i++)
printf("%f\n",w0norm[i]);
}
 
void main()
{
int n,A[100][100];
scanf("%d",&n);
Input(n,A);
Matr(A,n);
}
3
04.01.2011, 13:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2011, 13:10
Привет! Вот еще темы с ответами:

Создание собственных исключений - C++
Vsem privet. Kto mojet reshit sleduushee, Sam ne ponyal. budu blagodaren. source.h: class StackOfIntegers { public: ...

Подключение собственных модулей - C++
Добрый день! Пишу свой интерпретируемый язык на с++, лексер и парсер уже готовы. Хотел реализовать конструкцию подключения модулей, типа ...

Конвертирование в bool собственных типов - C++
Здравствуйте! Класс rnode оболочка над указателем для подсчета ссылок. Вот код: class rnode { private: cNode *ptr; ...

Приведение типов собственных классов - C++
Добрый день, пусть есть класс class Line { public int x1,x2 ; public int y1,y2 ; Line (int X1,int X2, int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.