Форум программистов, компьютерный форум CyberForum.ru

Исправить программу на собственные значения и им соответствующие вектора - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
27.03.2014, 18:46     Исправить программу на собственные значения и им соответствующие вектора #1
Ребята вот смотрите: программа в принципе работает правильно (считает собственное значение L верно), НО собственный вектор матрицы, а именно то что находится по правую часть от матрицы А на картинке не верно. Помогите разобраться че к чему, может эпсилон не тот или еще что-нибудь???

Тестовый пример:

Матрица А:
4 2 2
2 5 1
2 1 6

Матрица x1 (вот это после равно справа от матрицы неверное считает):
0,8077c1
0,7720c1
c1

Ответ:
L1=8,3874

КОД ПРОГИ:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "stdafx.h"
#include "cmath"
#include "iostream"
#include "locale.h"
using namespace std;
 
void Input(int n,int A[][100])
{
    int i,j;
    for (i=0;i<n;i++)
        for (j=0;j<n;j++){
            std::cout << "Введите A[" << i << "][" << j << "]: ";
            std::cin >> 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;
    w0[0]=1;
    for (i=1;i<n;i++)
        w0[i]=0;    
    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);
    std::cout << "\nМатрица А:\n";
    for (i=0;i<n;i++){
        for (j=0;j<n;j++)
            std::cout << A[i][j] << " ";
        std::cout  << " = " << w0norm[i] << std::endl;
    }
    std::cout << "\nL = " << d << std::endl;  
}
 
int main()
{
    int n,A[100][100];
    setlocale(LC_ALL, "rus");
    std::cout << "Введите размерность квадратной матрицы = ";
    std::cin >> n;
    Input(n,A);
    Matr(A,n);
    
    std::cin.get();
    std::cin.get();
    return 0;
}
Добавлено через 1 час 9 минут
ребята подскажете?

Добавлено через 22 часа 27 минут
помогите пожалуйста

Добавлено через 1 час 51 минуту
великие программисты вы гдее?)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 18:46     Исправить программу на собственные значения и им соответствующие вектора
Посмотрите здесь:

как связаны собственные значения и векторы матриц А и А^5 ? C++
Напишите программу, присваивающую значения элементов списка указателей на символьные строки в стиле С (тип char* ) элементам вектора строк C++
C++ Написать собственные аналоги функций strlen, strcmp, strchr, strcpy, strcat (дописать и исправить ошибки)
Функция, которая вычисляет собственные значения н-мерной матрицы C++
Вычислить значения у, соответствующие каждому значению х C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,784
27.03.2014, 19:22     Исправить программу на собственные значения и им соответствующие вектора #2
Alexandr1966, тестовый пример?
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
28.03.2014, 03:32  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #3
Ev_Hyper, я же предоставил его в начале темы
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,784
28.03.2014, 09:14     Исправить программу на собственные значения и им соответствующие вектора #4
Alexandr1966, то, что предоставили вы это не тестовый пример. Это просто какое-то условие с какими-то значениями. Это те результаты, которые дает программа или к которорым должно свести?
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
28.03.2014, 18:02  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #5
Ev_Hyper, это пример из книжки, решенный, ответы готовые. самого решения в книге нет.
программа правильно находит L т.е. собственное значение, а собственный вектор неправильный

Добавлено через 1 час 55 минут
ну что, поможете?

Добавлено через 4 часа 10 минут
Ev_Hyper, Ev_Hyper, ну что?
pavelr
401 / 320 / 14
Регистрация: 10.03.2010
Сообщений: 3,310
28.03.2014, 22:38     Исправить программу на собственные значения и им соответствующие вектора #6
Такое ощущение,что Вы лошадей погоняете...
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,784
29.03.2014, 01:15     Исправить программу на собственные значения и им соответствующие вектора #7
Alexandr1966, знаете, я не сутками на форуме сижу. Найдете тестовый пример - попробую помочь.
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
29.03.2014, 07:50  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #8
Ev_Hyper, что вы понимаете под тестовым примером?
IrineK
Заблокирован
29.03.2014, 08:16     Исправить программу на собственные значения и им соответствующие вектора #9
Непонятно, почему собственное значение - единственное.
К-во собственных значений в общем случае равно размерности матрицы. Столько же и соответствующих собственных векторов.
Правда, в случае вырождения может быть и меньше.
Но чтоб вот так - только одно L и точка - это однозначно неправильно.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,784
29.03.2014, 10:08     Исправить программу на собственные значения и им соответствующие вектора #10
Alexandr1966, пример из книги(или еще откуда, но из проверенных источников), у которого есть правильный посчитанный ответ. В идеале с полным пошаговым решением (для отлова ошибок с самого начала)
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
29.03.2014, 10:55  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #11
IrineK, да да, вы правы значений несколько должно быть, но вывести надо одно какое-нибудь.

Добавлено через 15 секунд
Ev_Hyper, я же выше написал что это пример из книги
IrineK
Заблокирован
29.03.2014, 16:45     Исправить программу на собственные значения и им соответствующие вектора #12
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
одно какое-нибудь
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
пример из книги
Можно точную формулировку задачи, как она дана в данной книге?
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
30.03.2014, 07:31  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #13
IrineK, найти собственные значения и соответствующие им собственные вектора.
Но мне нужно только одно собственное значение и один собственный вектор
IrineK
Заблокирован
30.03.2014, 07:55     Исправить программу на собственные значения и им соответствующие вектора #14
Вроде и СЗ и СВ соответствуют (почти нули):
Миниатюры
Исправить программу на собственные значения и им соответствующие вектора  
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
30.03.2014, 08:09  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #15
IrineK, код программы сможете исправить?
IrineK
Заблокирован
30.03.2014, 08:10     Исправить программу на собственные значения и им соответствующие вектора #16
Так у вас все правильно.
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
30.03.2014, 08:34  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #17
IrineK, так вектор то неправильно выводится:
Матрица x1 (вот это после равно справа от матрицы неверное считает):
0,8077c1
0,7720c1
c1

Добавлено через 19 секунд
IrineK, программу мою запускали? она в консольном приложении VS2008 работает
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
30.03.2014, 08:38  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #18
вот посомтрите
Миниатюры
Исправить программу на собственные значения и им соответствующие вектора  
Alexandr1966
25 / 25 / 1
Регистрация: 17.12.2012
Сообщений: 425
30.03.2014, 08:42  [ТС]     Исправить программу на собственные значения и им соответствующие вектора #19
IrineK, или это вовсе не вектор выводится? тогда что?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2014, 08:47     Исправить программу на собственные значения и им соответствующие вектора
Еще ссылки по теме:

C++ Вычислить значения t, соответствующие каждому значению х
Вычислить значения y, соответствующие каждому значению х C++
Вычислить собственные значения матрицы через итерационный процесс C++

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

Или воспользуйтесь поиском по форуму:
IrineK
Заблокирован
30.03.2014, 08:47     Исправить программу на собственные значения и им соответствующие вектора #20
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
программу мою запускали?
Нет.
Вы же предоставили все данные.
Хотя, как оказалось, не все и не так.
Ладно, посмотрим.
Yandex
Объявления
30.03.2014, 08:47     Исправить программу на собственные значения и им соответствующие вектора
Ответ Создать тему
Опции темы

Текущее время: 14:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru