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

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

Войти
Регистрация
Восстановить пароль
 
Shandr_71
13 / 13 / 1
Регистрация: 05.12.2011
Сообщений: 84
#1

Жорданова форма - C++

12.05.2012, 16:08. Просмотров 390. Ответов 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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
template<typename T>
class Polynomial
{
    vector<T> inf; 
 
public:
    Polynomial(): inf(1, 0)
    {
    }
    Polynomial(const T& null_, const T& first_): inf(2, null_)
    {
        inf.back()=first_;
    }
 
    size_t Degree() const
    {
        return inf.size()-1;
    }
    T& operator[](const size_t index_)
    {
#ifdef DEBUG
        if(index_>=inf.size())
            throw bad_index();
#endif
        return inf[index_];
    }
    T operator()(const size_t index_) const
    {
#ifdef DEBUG
        if(index_>=inf.size())
            throw bad_index();
#endif
        return inf[index_];
    }
    void Add(const T& num_, const size_t index_)
    {
        if(index_>=inf.size()-1)
        {
            inf.resize(index_+1);
            inf.back()=num_;
            return;
        }
        inf[index_]+=num_;
    }
    void Add(const Polynomial& p_)
    {
        if(p_.Degree()>=inf.size())
        {
            inf.resize(inf.size());
            for(size_t i(0); i<inf.size(); i++)
                inf[i]+=p_[i];
            while(!inf.back())
                inf.pop_back();
            return;
        } 
        for(size_t i(0); i<p_Degree(); i++)
            inf[i]+=p_[i];
        while(!inf.back() && inf.size())
            inf.pop_back();
    }
    void Mul(const Polynomial& p_)
    {
        vector<T> temp(inf);
        inf.clear();
        inf.resize(temp.size()+p_.Degree());
        for(size_t i(0); i<temp.size(); i++)
            for(size_t j(0); j<=p_.Degree(); j++)
                inf[i+j]+=temp[i]*p_(j);
        while(!inf.back() && inf.size())
            inf.pop_back();
    }
 
    void Print()
    {
        for(size_t i(inf.size()-1); i; i--)
            cout << inf[i] << "*x^" << i << " + ";
        cout << inf[0];
        cout << endl;
    }
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2012, 16:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Жорданова форма (C++):

Жорданова форма матрицы - C++
Всех приветствую. Решая задачу приведения матрицы к жордановой форме и нахождения преобразующей матрицы , наткнулся на такую сложность -...

Инфиксная форма - C++
Написать программу которая вычисляет значение выражения заданного в инфиксной форме со скобками. Доя представления выражения в памяти...

Экспоненциальная форма - C++
Вот код: #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;cmath&gt; using namespace std; int main() { int...

виндовая форма - C++
добрый вечер. прошу помощи в реализации. есть код. но мне его в форму сделать нужно.сам код: #include &lt;iostream&gt; //для...

Неполная форма - C++
//polnaia forma #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; int main() { int x; int y; int z; int...

Форма Фробениюса - C++
Помогите с кодом, есть матрица 4х4, нужно свести к форме фробениюса(по методу данилевского) и получить характеристическое уравнение.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2012, 16:08
Привет! Вот еще темы с ответами:

Форма на плюсах - C++
Где можно почитать документацию про реализацию формы на плюсах? Работаю в dev c++

Необычная форма - C++
Появилась идея реализовать необычную форму с кучей анимации на прозрачном фоне(то есть если я например нахожусь на рабочем столе &gt; со всех...

Жорданова форма и базис - Алгебра
Очень прошу помощи:gsorry:, ну никак не могу разобраться. Перебрала кучу примеров и ничего не получается. Зарание спасибо. Найти...

Жорданова форма матрицы - Алгебра
Дана матрица A: 1 -6 3 -6 36 -18 3 -18 9 Нашел собственные числа: \lambda^2(\lambda -46) = 0 \lambda1 = 0 \lambda2 = 0 ...


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

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

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