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

Определитель матрицы методом Гаусса

12.10.2007, 20:14. Показов 76709. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Киньте плиз код на С++, которая ищет определитель матрицы методом Гауса! Очень нужно. Буду благодарен)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2007, 20:14
Ответы с готовыми решениями:

Определитель матрицы методом Гаусса
Здравствуйте! Помогите написать программу на с++, которая на вычисляет определитель матрицы методом гаусса с выбором главного элемента по...

Вычислить определитель матрицы методом Гаусса
Дана квадратная матрица A с целочисленными элементами. Найти det A методом Гаусса. Элементы матрицы вводятся пользователем с...

Найти определитель заданной матрицы n-го порядка методом Гаусса
1)Матрицу A(m,n) случайным образом заполнить разными целыми числами от 1 до m x n. 2)Найти определитель заданной матрицы n-го порядка...

4
Kieper
13.10.2007, 22:45
Мне срочно надо.. хотябы алгоритм вычисления...
Администратор
 Аватар для mik-a-el
87816 / 53137 / 249
Регистрация: 10.04.2006
Сообщений: 13,761
13.10.2007, 23:05
В аттаче - исходники. Вот их описание.

Назначение

Вычисление определителя методом Гаусса с выбором ведущего элемента по столбцу и оценка числа обусловленности вещественной матрицы общего вида.

Математическое описание

Для заданной вещественной квадратной матрицы А порядка N выполняется треугольная факторизация L - 1*А = U, где U - верхняя треугольная матрица, и вычисляется величина, обратная числу обусловленности матрицы А:

rcond = 1/( || A ||1 * || A-1 ||1) ,

где || A ||1 = maxj = 1, ..., N{ | a1 j | + | a2 j | + ...+ | aN j | }.

Определитель матрицы А вычисляется как произведение диагональных элементов матрицы U, умноженное на (-1)I, где I - число выполненных в процессе факторизации перестановок, и записывается в виде:

det A = D1*10D2 , где 1. Ј D1 < 10.

Дж. Форсайт, М. Малькольм, К. Моулер. Машинные методы математических вычислений. Изд-во "Мир", М.: 1980.
Использование

int adg2r_c (real *a, integer *m, integer *n, integer *nlead,
real *det1, real *det2, real *rcond, real *z__, integer *ierr)

Параметры

a - вещественный двумерный массив размера m на n, в котором задается исходная матрица; на выходе на соответствующих местах находятся элементы матрицы u и поддиагональные элементы матриц исключения метода Гаусса li , i = 1, ..., N-1;
m - первая размерность массива a в вызывающей программе (тип: целый);
n - порядок матрицы (тип: целый);
nlead - целый вектор длины n, содержащий на выходе информацию о выполненных в ходе факторизации перестановках (см. замечания по использованию);
det1 - вещественная переменная, содержащая на выходе мантиссу определителя;
det2 - вещественная переменная, содержащая на выходе десятичный порядок определителя;
rcond - вещественная переменная, содержащая на выходе вычисленное значение величины, обратной числу обусловленности матрицы a;
z - вещественный рабочий вектор длины n;
ierr - целая переменная, содержащая на выходе информацию о прохождении счета, при этом:
ierr=65 - если m Ј 0 или n Ј 0;
ierr=66 - если в процессе счета произошло переполнение (это говорит о том, что либо ||a||1, либо некоторые элементы матрицы u превосходят по абсолютной величине максимальное представимое на данной машине число);
ierr=-k - если в результате факторизации в К-ой строке матрицы u диагональный элемент равен нулю (это свидетельствует о вырожденности матрицы a). Если таких строк у матрицы u несколько, то значение K полагается равным номеру последней из них.

Версии

adg2d_c - вычисление определителя методом Гаусса с выбором ведущего элемента по столбцу и оценка числа обусловленности вещественной матрицы, заданной с удвоенной точностью.
adg2c_c - вычисление определителя методом Гаусса с выбором ведущего элемента по столбцу и оценка числа обусловленности комплексной матрицы.

Вызываемые подпрограммы

afg4r_c - подпрограмма треугольной факторизации и оценка числа обусловленности матрицы a.
utafsi_c - подпрограмма выдачи диагностических сообщений.

Замечания по использованию

1. В подпрограмме adg2d_c массивы a и z и переменные rcond, det1 и det2 имеют тип double, для треугольного разложения и оценки числа обусловленности матрицы a вызывается подпрограмма afg4d_c.
2. В подпрограмме adg2c_c массивы a и z и переменная det1 имеют тип complex, для треугольного разложения и оценки числа обусловленности матрицы a вызывается подпрограмма afg4c_c.
3. На выходе k - й элемент вектора nlead равен номеру строки, переставленной на k - ом шаге факторизации с k - ой строкой матрицы a. Так как факторизация Гаусса требует n - 1 шагов, то nlead (n) = n.
4. Если вырабатывается значение переменной ierr, отличное от нуля, то выдается соответствующее диагностическое сообщение, полагается rcond = 0, det1 = 0 , det2 = 0 и происходит выход из подпрограммы.

Пример использования

Code
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
int main(void)
{
    /* Initialized data */
    static float a[16] /* was [4][4] */ = { 1.f,.42f,.54f,.66f,.42f,1.f,.32f,
                                 .44f,.54f,.32f,1.f,.22f,.66f,.44f,.22f,1.f };
 
    /* Local variables */
    static int ierr;
    extern int adg2r_c(float *, int *, int *, int *, float *, float *,
                       float *, float *, int *);
    static int j, m, n, nlead[4];
    static float z__[4], rcond, det1, det2;
 
#define a_ref(a_1,a_2) a[(a_2)*4 + a_1 - 5]
 
    m = 4;
    n = m;
    for (j = 1; j <= 4; ++j) {
        printf("\n  %16.7e %16.7e   %16.7e %16.7e \n",
        a_ref(j, 1), a_ref(j, 2), a_ref(j, 3), a_ref(j, 4));
    }
    adg2r_c(a, &m, &n, nlead, &det1, &det2, &rcond, z__, &ierr);
 
    printf("\n  %5i %5i %5i %5i \n",nlead[0], nlead[1], nlead[2], nlead[3]);
    for (j = 1; j <= 4; ++j) {
        printf("\n  %16.7e %16.7e   %16.7e %16.7e \n",
        a_ref(j, 1), a_ref(j, 2), a_ref(j, 3), a_ref(j, 4));
    }
    printf("\n  %5i %22.14e \n",ierr, rcond);
    printf("\n  %22.14e %22.14e \n",det1, det2);
    return 0;
} /* main */
Результаты:

nlead = (1, 2, 3, 4)

| -1.0 0.42 0.54 0.66 |
a = | -0.42 0.83260 0.09320 0.16280 |
| -0.54 -0.11316 0.69785 -0.15482 |
| -0.66 -0.19767 0.22186 0.49787 |

rcond = 0.09880
det1 = 2.86152
det2 = -1.00000
Вложения
Тип файла: zip adg2c_c.zip (6.7 Кб, 1176 просмотров)
Тип файла: zip adg2d_c.zip (4.9 Кб, 668 просмотров)
Тип файла: zip adg2r_c.zip (4.9 Кб, 1966 просмотров)
1
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 4
13.12.2009, 12:01
Cпс за труды, пригодилось.
0
31 / 10 / 1
Регистрация: 07.04.2010
Сообщений: 3
18.04.2010, 14:36
Kieper, Определитель матрицы! - С/С++[/QUOTE]
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2010, 14:36
Помогаю со студенческими работами здесь

Решения матрицы методом Гаусса
Мне нужно решить систему уравнения методом Гаусса. Но у меня как-то не получается. Помогите разобраться. Я вот код свой накарякал. ...

Поиск обратной матрицы методом Гаусса
#include&lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;stdlib.h&gt; using namespace std; static int n; void...

Нахождение определителя матрицы методом гаусса
Нахождение определителя методом гауса #include &lt;stdio.h&gt; #include&lt;locale.h&gt; #include&lt;math.h&gt; #include&lt;conio.h&gt; int main() ...

Численное решение СЛАУ методом Гаусса с организацией хранения матрицы в виде одномерного массива
Помогите кому не сложно.

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
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