29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
1

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

27.03.2014, 18:46. Показов 4723. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята вот смотрите: программа в принципе работает правильно (считает собственное значение 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 минуту
великие программисты вы гдее?)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.03.2014, 18:46
Ответы с готовыми решениями:

Найти собственные значения и собственные вектора
Найти собственные значения и собственные вектора. | -3 0 6 | | 8 2 9 | | 4 2 1 |

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

Зачем нужны собственные значения/вектора и характеристический полином?
Какой физический или геометрический смысл собственных значений/векторов и характеристического...

Написать программу вычисления произведений матриц на соответствующие им вектора
Помогите пожалуйста написать программу с использованием классов и методов в Visual Studio 2010 ...

27
Заблокирован
27.03.2014, 19:22 2
Alexandr1966, тестовый пример?
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
28.03.2014, 03:32  [ТС] 3
Ev_Hyper, я же предоставил его в начале темы
0
Заблокирован
28.03.2014, 09:14 4
Alexandr1966, то, что предоставили вы это не тестовый пример. Это просто какое-то условие с какими-то значениями. Это те результаты, которые дает программа или к которорым должно свести?
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
28.03.2014, 18:02  [ТС] 5
Ev_Hyper, это пример из книжки, решенный, ответы готовые. самого решения в книге нет.
программа правильно находит L т.е. собственное значение, а собственный вектор неправильный

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

Добавлено через 4 часа 10 минут
Ev_Hyper, Ev_Hyper, ну что?
0
Заблокирован
28.03.2014, 22:38 6
Такое ощущение,что Вы лошадей погоняете...
0
Заблокирован
29.03.2014, 01:15 7
Alexandr1966, знаете, я не сутками на форуме сижу. Найдете тестовый пример - попробую помочь.
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
29.03.2014, 07:50  [ТС] 8
Ev_Hyper, что вы понимаете под тестовым примером?
0
Заблокирован
29.03.2014, 08:16 9
Непонятно, почему собственное значение - единственное.
К-во собственных значений в общем случае равно размерности матрицы. Столько же и соответствующих собственных векторов.
Правда, в случае вырождения может быть и меньше.
Но чтоб вот так - только одно L и точка - это однозначно неправильно.
0
Заблокирован
29.03.2014, 10:08 10
Alexandr1966, пример из книги(или еще откуда, но из проверенных источников), у которого есть правильный посчитанный ответ. В идеале с полным пошаговым решением (для отлова ошибок с самого начала)
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
29.03.2014, 10:55  [ТС] 11
IrineK, да да, вы правы значений несколько должно быть, но вывести надо одно какое-нибудь.

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

Добавлено через 19 секунд
IrineK, программу мою запускали? она в консольном приложении VS2008 работает
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
30.03.2014, 08:38  [ТС] 18
вот посомтрите
Миниатюры
Исправить программу на собственные значения и им соответствующие вектора  
0
29 / 29 / 2
Регистрация: 17.12.2012
Сообщений: 493
30.03.2014, 08:42  [ТС] 19
IrineK, или это вовсе не вектор выводится? тогда что?
0
Заблокирован
30.03.2014, 08:47 20
Цитата Сообщение от Alexandr1966 Посмотреть сообщение
программу мою запускали?
Нет.
Вы же предоставили все данные.
Хотя, как оказалось, не все и не так.
Ладно, посмотрим.
0
30.03.2014, 08:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2014, 08:47
Помогаю со студенческими работами здесь

Составить алгоритм и программу для перевода значения температуры, заданной в шкале Цельсия, в значения, соответствующие
Помогите пожалуйста) Составить алгоритм и программу для перевода значения температуры, заданной в...

Решение неоднородной системы, если известны собственные вектора и значения однородной системы
Можно ли решить неоднородной системы если известны собсвенные вектора и значения однородной системы?

Найти собственные значения и собственные векторы оператора дифференцирования в пространстве многочленов
Найти собственные значения и собственные векторы оператора дифференцирования в пространстве...

Найти собственные векторы и собственные значения линейного оператора, заданного матрицей A0
Найти собственные векторы и собственные значения линейного оператора, заданного матрицей A0. A0=...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru