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

Найти детерминант квадратной матрицы без numpy.linalg.det

11.05.2016, 23:38. Показов 18608. Ответов 5

Студворк — интернет-сервис помощи студентам
также нельзя использовать никакие функции связаные из numpy.
я попытался сделать это таким способом.. но это долго и некрасиво..
идей у меня больше нету .. способов тоже как сделать програму которая вычислает детерминант квадратной матрицы.. я уже третий день над этим парюсь...
Если такая тема уже была то прошу прощения за неопытность! Укажите ссылку на тему...
подкиньте идею и свежие куски кода хотя бы... а там я постараюсь разобратся..
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import random
n=int(input())
m=n
A=[[0]*m for i in range(n)]
for i in range(n):
    for j in range(m):
        A[i][j]=random.randint(-9, 9)        
for i in range(n):
    for j in range(m):
        print(A[i][j], end=" ")
    print()
print()
 
if n==2:
    d=A[0][0]*A[1][1]-A[0][1]*A[1][0]
    print(d)
elif n==3:
    d=(A[0][0]*A[1][1]*A[2][2])+(A[0][1]*A[1][2]*A[2][0])+(A[0][2]*A[1][0]*A[2][1])-(A[0][2]*A[1][1]*A[2][0])-(A[0][0]*A[1][2]*A[2][1])-(A[0][1]*A[1][0]*A[2][2])
    print(d)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2016, 23:38
Ответы с готовыми решениями:

Найти детерминант матриц не используя (np.linalg)
Подумал тут, можно ли найти детерминант матриц не используя (np.linalg), может знает кто, или сталкивался когда-нибудь?

Нужно найти детерминант используя numpy
Найти детерминант используя numpy но не используя np. linalg. det

Найти определитель , det(A+B). Матрицы заданы условием
Помогите пожалуйста, очень срочно надо

5
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
12.05.2016, 00:08
Лучший ответ Сообщение было отмечено DangerWolf как решение

Решение

было раньше

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def det2(matrix):
    return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
 
def minor(matrix, i, j):
    tmp = [row for k, row in enumerate(matrix) if k != i]
    tmp = [col for k, col in enumerate(zip(*tmp)) if k != j]
    return tmp
 
def determinant(matrix):
    size = len(matrix)
    if size == 2:
        return det2(matrix)
 
    return sum((-1) ** j * matrix[0][j] * determinant(minor(matrix, 0, j))
               for j in range(size))
 
m = [[2,4,1,1],
     [0,2,1,0],
     [2,1,1,3],
     [4,0,2,3]]
 
print(determinant(m))
1
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
12.05.2016, 07:03
DangerWolf, а вы с формулами детерминанта вообще ознакомились или нет? Я уж не говорю про способы вычисления.
1
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 14
14.05.2016, 11:26  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
а вы с формулами детерминанта вообще ознакомились или нет? Я уж не говорю про способы вычисления.
Да я знаю как искать детерминант в математическом варианте! но вот просто не мог представить как это всё можно было запихнуть в код..
0
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
14.05.2016, 21:07
Цитата Сообщение от DangerWolf Посмотреть сообщение
Да я знаю как искать детерминант в математическом варианте! но вот просто не мог представить как это всё можно было запихнуть в код.
Точно знаете? Судя по коду, вы знаете только два частных случая - для матриц 2*2 и 3*3.

Кроме того, имею сказать следующее. Вычисление определителя через алгебраические дополнения (способ от Jabbson), а уж тем более, исходя из определения (простите за каламбур) не являются ни самыми быстрыми, ни самыми простыми способами.

Я советую вам взять учебник по численным методам и реализовать способ оттуда. (Например, я в своё время использовал - Демидович, Марон, "Основы вычислительной математики", но вообще задача типичная, должна быть в любом.) Преподу тоже понравится.
0
0 / 0 / 0
Регистрация: 17.05.2024
Сообщений: 1
17.05.2024, 13:29
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def minor(x, i, j):
    m = [row[:] for row in x]
    for row in m:
        row.pop(j)
    m.pop(i)
    return m
 
def det(x):    
    if len(x)==2:
        return x[0][0]*x[1][1]-x[0][1]*x[1][0]
    D = 0
    for i in range(len(x[0])):
        A = det(minor(x, 0, i))
        D+=(x[0][i])*A*((-1)**(1+i))
    return D
Вот решение через рекурсию. Воспользовался теоремой: Определитель матрицы равен сумме произведений элементов любой его строки (столбца) на их алгебраические дополнения.
посчитать легко можно начиная от размерности 2х2, а загружать процессор ещё одним уровнем рекурсии не хочу, поэтому смотрим от размера матрицы 2. А перед определителем нам надо посчитать минор, чтобы найти алгебраическое дополнение, поэтому выше дана ещё и функция нахождения минора эл-та, в которой х - матрица чисел, которая задаётся как в библиотеке numpy, i - номер строки элемента, для которого ищется минор и j - номер столбца соответствующего эл-та.
Не рассматривал матрицу размера 1 (по сути, просто 1-мерный вектор. Он же - число), потому что определитель такой матрицы равен самому числу, но если нужно и это то вот кусок кода, который надо вставить перед первым условием:
Python
1
2
if len(x) == 1:
    return x[0][0]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2024, 13:29
Помогаю со студенческими работами здесь

Найти детерминант матрицы
#include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> using namespace...

Сложить матрицы, найти детерминант полученной матрицы
Помогите резобраться с матрицами. Все свои вопросы по ним я собрл в своеобразную задачу. Запросить с клавиатуры ввод одномерной матрицы А...

Найти детерминант (определитель) матрицы
Привет всем помогите найти в 2D массиве детерминант:pardon:

Матрицы (без модуля NumPy)
В каждом столбце матрицы вещественных чисел P(k*m) заменить минимальный элемент суммой положительных элементов этого же столбца....

Файлы: Найти детерминант матрицы, записанной в файле
В файле test.in записано матрицу NxN. Найти ее детерминант. Результат записать в test.out. Для работы использовать фунции cstdio. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru