Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/88: Рейтинг темы: голосов - 88, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 41

Найти ранг матрицы

01.07.2016, 21:56. Показов 18763. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Найти ранг прямоугольной матрицы A(m,n) методом Гаусса.Покажите пожалуйста на примере как реализовать это , заранее благодарю .
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.07.2016, 21:56
Ответы с готовыми решениями:

Матрицы. Найти ее ранг и средние значения по столбцам (дописать код)
пункт 1. С клавиатуры задается матрица размером 5 * 5. Найти ее ранг и средние значения по столбцам. пункт 2. Из найденных...

Определитель матрицы, ранг матрицы, обратная матрица
Вы можете помочь, сделать определитель матрицы, или у кого есть коде: ранг матрицы, обратная матрица, или другие действия с матрицами.

Ранг матрицы
Доброго времени суток. Может кто-либо помочь с кодом на вычисление ранга матрицы. Размер матрицы любой, желательно не больше 4х4. Как...

5
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
01.07.2016, 22:17
ТЫК
ТЫК
0
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 41
01.07.2016, 22:36  [ТС]
Не покажете как это реализовать в C++ ? Я просто дуб в этом деле !
0
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
01.07.2016, 23:11
Цитата Сообщение от Vanko Посмотреть сообщение
Не покажете как это реализовать в C++ ? Я просто дуб в этом деле !
Цитата Сообщение от Krock21rus Посмотреть сообщение
если останутся вопросы, перечитайте это сообщение

Добавлено через 1 минуту
хотя наверняка останутся, так что лучше скопирую:

Добавлено через 32 секунды
с того самого ТЫК:
Реализация
Приведём здесь реализацию алгоритма Гаусса-Жордана с эвристикой partial pivoting (выбором опорного элемента как максимума по столбцу).

На вход функции \rm gauss() передаётся сама матрица системы a. Последний столбец матрицы a — это в наших старых обозначениях столбец b свободных коэффициентов (так сделано для удобства программирования — т.к. в самом алгоритме все операции со свободными коэффициентами b повторяют операции с матрицей A).

Функция возвращает число решений системы (0, 1 или \infty) (бесконечность обозначена в коде специальной константой \rm INF, которой можно задать любое большое значение). Если хотя бы одно решение существует, то оно возвращается в векторе \rm ans.
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
int gauss (vector < vector<double> > a, vector<double> & ans) {
    int n = (int) a.size();
    int m = (int) a[0].size() - 1;
 
    vector<int> where (m, -1);
    for (int col=0, row=0; col<m && row<n; ++col) {
        int sel = row;
        for (int i=row; i<n; ++i)
            if (abs (a[i][col]) > abs (a[sel][col]))
                sel = i;
        if (abs (a[sel][col]) < EPS)
            continue;
        for (int i=col; i<=m; ++i)
            swap (a[sel][i], a[row][i]);
        where[col] = row;
 
        for (int i=0; i<n; ++i)
            if (i != row) {
                double c = a[i][col] / a[row][col];
                for (int j=col; j<=m; ++j)
                    a[i][j] -= a[row][j] * c;
            }
        ++row;
    }
 
    ans.assign (m, 0);
    for (int i=0; i<m; ++i)
        if (where[i] != -1)
            ans[i] = a[where[i]][m] / a[where[i]][i];
    for (int i=0; i<n; ++i) {
        double sum = 0;
        for (int j=0; j<m; ++j)
            sum += ans[j] * a[i][j];
        if (abs (sum - a[i][m]) > EPS)
            return 0;
    }
 
    for (int i=0; i<m; ++i)
        if (where[i] == -1)
            return INF;
    return 1;
}
В функции поддерживаются два указателя — на текущий столбец \rm col и текущую строку \rm row.

Также заводится вектор \rm where, в котором для каждой переменной записано, в какой строке должна она получиться (иными словами, для каждого столбца записан номер строки, в которой этот столбец отличен от нуля). Этот вектор нужен, поскольку некоторые переменные могли не "определиться" в ходе решения (т.е. это независимые переменные, которым можно присвоить произвольное значение — например, в приведённой реализации это нули).

Реализация использует технику partial pivoting, производя поиск строки с максимальным по модулю элементом, и переставляя затем эту строку в позицию \rm row (хотя явную перестановку строк можно заменить обменом двух индексов в некотором массиве, на практике это не даст реального выигрыша, т.к. на обмены тратится O(n^2) операций).

В реализации в целях простоты текущая строка не делится на опорный элемент — так что в итоге по окончании работы алгоритма матрица становится не единичной, а диагональной (впрочем, по-видимому, деление строки на ведущий элемент позволяет несколько уменьшить возникающие погрешности).

После нахождения решения оно подставляется обратно в матрицу — чтобы проверить, имеет ли система хотя бы одно решение или нет. Если проверка найденного решения прошла успешно, то функция возвращает 1 или \infty — в зависимости от того, есть ли хотя бы одна независимая переменная или нет.
0
0 / 0 / 0
Регистрация: 27.05.2015
Сообщений: 41
02.07.2016, 13:09  [ТС]
Можете мне показать как выглядит полноценный код в компиляторе ?
0
88 / 84 / 31
Регистрация: 18.11.2013
Сообщений: 390
02.07.2016, 14:44
Лучший ответ Сообщение было отмечено Vanko как решение

Решение

что же вы сразу не сказали, что вас программированию учить надо
ТЫК

Добавлено через 36 секунд
тут не генератор ответов, а форум для помощи
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.07.2016, 14:44
Помогаю со студенческими работами здесь

Ранг прямоугольной матрицы
Ребят, может у кого завалялся какой-нибудь метод для нахождения ранга матрицы.Ибо все методы,которые гуглил, как-то криво работают.

Определить ранг матрицы
привет всем.я написал код ввода-вывода матрицы,а мне надо посчитать ранг матрицы..сижу уже 2 день,не могу ничего придумать..перерыл весь...

Ранг матрицы. Параметр функции
Функция для определения ранга матрицы. Что нужно передать в первый аргумент функции? Массив? Массив чего? Указателей? Почему после float...

Посчитать ранг матрицы 4x4
Здравствуйте, как можно составить алгоритм программы для поиска ранга матрицы 4x4, 4 дня уже сижу а в голову не чего не идёт

Неправильно считается ранг матрицы
#include &lt;algorithm&gt; #include &lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; #include&lt;stdlib.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru