Как вы можете найти определитель следующей матрицы в Python? A = np.array ([[1-'a '-' y ',' a '], [' b ',' y ']]) - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь найти определитель следующей матрицы, но я получаю синтаксическую ошибку, когда пытаюсь определить матрицу. Может кто-нибудь сказать мне, как определить матрицу, элементами которой являются переменные и числа? Вот что у меня есть:

import numpy as np
A = np.array([[1-'a'-'y','a'],['b', 'y']])

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

В простых случаях, таких как вычисление определителя матрицы 2x2, вы можете использовать следующий подход:

def get_det(array, **kwargs):
    det_eq = '(' + array[0][0] + ')' + '*' + '(' + array[1][1] + ')'\
              + '-' + '(' + array[0][1] + ')' + '*' + '(' + array[1][0] + ')'
    locals().update(kwargs)
    return eval(det_eq)



get_det(array, a=1, b=3, y=3)
# -12

Примечание: использование eval небезопасно; Итак, вы должны быть уверены в безопасности содержимого массива.

1 голос
/ 09 апреля 2019

Прямо сейчас вы пытаетесь сделать математику со строками и числами. Это не работает: они разные, несовместимые типы данных.

Если вы хотите выполнять «символьные вычисления» (переставляя символы вместо использования фактических чисел) в Python, вам понадобится библиотека sympy.

from sympy import symbols, Matrix

a, b, y = symbols(['a', 'b', 'y']) # Turn a, b, y into symbolic variables
A = Matrix([[1-a-y, a], [b, y]]) # Define the matrix
print(A.det()) # Print its determinant
# Prints "-a*b + y*(-a - y + 1)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...