CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум Basic > Форум QBasic

Ответ Создать новую тему
 
Старый 02.02.2012, 21:08   #1
ваня
Новичок
 
Регистрация: 13.06.2011
Сообщений: 22
Репутация: 0 (0)
Вопрос Вычисления матрицы 4-го порядка, обратной заданной

помогите пожалуйста написать программу! Разработать алгоритм и программу: вычисления матрицы 4-го порядка, обратной заданной(с помощью алгебраических дополнений и определителя).
ваня вне форума
Другие темы раздела
Найти сумму элементов главной диагонали QBasic
Дана квадратная матрица размером mxn найти сумму элементов главной диагонали.. Найти сумму элементов главной диагонали
QBasic Удаление заданной строки из матрицы (сжатие матрицы)
Цель работы: Изучение методов работы с переменными типа - двумерный массив (матрица). Основные сведения Двумерный массив состоит из строк и столбцов, на пересечении которых находятся элементы массива. В обозначении элементов массива ( например, А(1,3)) первый индекс в скобках означает номер.... Удаление заданной строки из матрицы (сжатие матрицы)
Старый 06.02.2012, 06:59   #2
softmob
Модератор
 
Регистрация: 20.02.2010
Адрес: Нижний Новгород
Сообщений: 888
Репутация: 529 (526)
По умолчанию Re: Вычисления матрицы 4-го порядка, обратной заданной

Код Basic4GL
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
RANDOMIZE TIMER
n = 4
DIM a(n, n), b(n, n)
FOR i = 1 TO n
    FOR j = 1 TO n
        a(i, j) = INT(RND * 11)
    NEXT
NEXT
FOR i = 1 TO n
    FOR j = 1 TO n
        PRINT a(i, j);
    NEXT
    PRINT
NEXT
FOR j = 1 TO n
    det = det + a(1, j) * aij(a(), n, 1, j)
NEXT
PRINT det
IF det = 0 THEN PRINT "the inverse matrix does not exist": END
FOR i = 1 TO n
    FOR j = 1 TO n
        b(i, j) = aij(a(), n, j, i) * 1 / det
    NEXT
NEXT
PRINT STRING$(80, 196)
FOR i = 1 TO n
    FOR j = 1 TO n
        PRINT b(i, j);
    NEXT
    PRINT
NEXT
 
FUNCTION aij (a(), n, ki, kj)
DIM t(n - 1, n - 1)
FOR i = 1 TO n
    IF i <> ki THEN
        fj = 0
        FOR j = 1 TO n
            IF j <> kj THEN
                t(i - fi, j - fj) = a(i, j)
            ELSE
                fj = 1
            END IF
        NEXT
    ELSE
        fi = 1
    END IF
NEXT
res = t(1, 1) * t(2, 2) * t(3, 3)
res = res + t(3, 1) * t(1, 2) * t(2, 3)
res = res + t(1, 3) * t(2, 1) * t(3, 2)
res = res - t(1, 3) * t(2, 2) * t(3, 1)
res = res - t(1, 1) * t(3, 2) * t(2, 3)
res = res - t(3, 3) * t(2, 1) * t(1, 2)
res = (-1) ^ (ki + kj) * res
aij = res
END FUNCTION
Добавлено через 22 часа 10 минут
может кому пригодится. нахождение обратной матрицы методом Гаусса — Жордана
Код Basic4GL
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
RANDOMIZE TIMER
DO
    INPUT "enter n(n>0): ", n
LOOP UNTIL n > 0
DIM a(n, n), e(n, n)
FOR i = 1 TO n
    FOR j = 1 TO n
        a(i, j) = INT(RND * 11)
    NEXT
NEXT
FOR i = 1 TO n
    e(i, i) = 1
NEXT
FOR i = 1 TO n
    FOR j = 1 TO n
        PRINT a(i, j);
    NEXT
    PRINT
NEXT
PRINT STRING$(80, 196)
FOR k = 1 TO n
    t = a(k, k)
    IF t = 0 THEN t = swapi(a(), e(), n, k)
    IF t = 0 THEN PRINT "the inverse matrix does not exist": END
    FOR j = 1 TO n
        a(k, j) = a(k, j) / t
        e(k, j) = e(k, j) / t
    NEXT
    FOR i = k + 1 TO n
        t = a(i, k)
        FOR j = 1 TO n
            a(i, j) = a(i, j) - a(k, j) * t
            e(i, j) = e(i, j) - e(k, j) * t
        NEXT
    NEXT
NEXT
FOR k = n TO 1 STEP -1
    FOR i = k - 1 TO 1 STEP -1
        t = a(i, k)
        FOR j = 1 TO n
            a(i, j) = a(i, j) - a(k, j) * t
            e(i, j) = e(i, j) - e(k, j) * t
        NEXT
    NEXT
NEXT
FOR i = 1 TO n
    FOR j = 1 TO n
        PRINT e(i, j);
    NEXT
    PRINT
NEXT
 
FUNCTION swapi (a(), e(), n, k)
FOR i = k + 1 TO n
    IF a(i, k) <> 0 THEN q = i: EXIT FOR
NEXT
FOR i = k TO n
    SWAP a(q, i), a(k, i)
    SWAP e(q, i), e(k, i)
NEXT
swapi = a(k, k)
END FUNCTION
и еще немного операций с матрицами:
определитель матрицы, гаусс
определитель матрицы, рекурсия
умножение матриц

Добавлено через 19 часов 41 минуту
еще вариант нахождения определителя через рекурсию, вроде работает, но еще не тестил
Код Basic4GL
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
n = 4
DIM a(n, n), b(n)
FOR i = 1 TO n
    FOR j = 1 TO n
        a(i, j) = INT(RND * 11)
        PRINT a(i, j);
    NEXT
    PRINT
NEXT
PRINT det(a(), b(), n, 1)
FUNCTION det (a(), b(), n, k)
IF k = n THEN
    FOR i = 1 TO n
        IF b(i) = 0 THEN res = a(k, i): EXIT FOR
    NEXT
ELSE
    res = 0
    q = 1
    FOR i = 1 TO n
        IF b(i) = 0 THEN
            q = q + 1
            b(i) = 1
            res = res + (-1) ^ (q) * a(k, i) * det(a(), b(), n, k + 1)
            b(i) = 0
        END IF
    NEXT
END IF
det = res
END FUNCTION

Последний раз редактировалось softmob; 05.02.2012 в 15:55.
softmob вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Delphi для начинающих Из матрицы n-го порядка получить матрицу порядка n-1 путем удаления из исходной матрицы строки и столбца
Из матрицы n-го порядка получить матрицу порядка n-1 путем удаления из исходной матрицы строки и столбца, на пересечении которых расположен элемент с наибольшим по модулю значением.
sanja_sanja18
С++ для начинающих Программа вычисления обратной матрицы
Составить программу вычисления обратной матрицы для матри-цы произвольного порядка n методом Гаусса (Жордана) с выбором ве-дущего элемента по строкам. Порядок и коэффициенты исходной матрицы вводятся из файла. В файл результатов записываются: исходная матрица; обратная матрица; произведение...
azhankuaku
С++ для начинающих Программа вычисления обратной матрицы N-го порядка
Составить программу вычисления обратной матрицы методом Гаусса для трехдиагональной матрицы. Порядок и коэффициенты матрицы (главная и соседние с ней диа-гонали) вводятся из файла. В файл результатов выдаются: исходная матрица, обратная матрица, произведение исходной матрицы на обратную.
azhankuaku
Visual Basic Составить приложение для вычисления определителя матрицы n-го порядка
Помогите, пожалуйста, составить приложение для вычисления матрицы n-го порядка. Вроде-бы простая задачка, но я нигде не могу найти решение или хотя бы подсказку...
Nastya_
Pascal (Паскаль) Для заданной квадратной матрицы порядка n поменять местами элементы главной и побочной диагоналей
1. В однородном массиве, состоящем из n элементов, вычислить: - номер минимального элемента массива; - сумму элементов массива, больших введенного числа A. Преобразовать массив таким образом, чтобы в первой его половине распологались элементы, стоявшие в нечетных позициях. 2. Для заданной...
hakerok115
Опции темы

Текущее время: 05:06. Часовой пояс GMT +4.

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