Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2018 10:59:27

Sadko
Зарегистрирован: 2018-11-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределение умножения

Здравствуйте.

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

 import numpy as np
import gfpy  as gf
import random as rnd
a=[[gf.GF(rnd.randint(0,7)) for v in range(sz)] for i in range(sz)]
b=[[gf.GF(rnd.randint(0,7)) for v in range(sz)] for i in range(sz)]
c=[gf.GF(rnd.randint(0,7)) for v in range(sz)]
a=np.matrix(a,dtype=gf.GF)
b=np.matrix(b,dtype=gf.GF)
a+b
c*a
Сложение и умножение работают как ожидалось (умножение и сложение используется из моего класса), но

 np.linalg.inv(a)

приводит к ошибке:

File “C:\ProgramData\Anaconda3\lib\site-packages\numpy\linalg\linalg.py”, line 528, in inv
ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
TypeError: No loop matching the specified signature and casting
was found for ufunc inv

Вопрос: inv() работает только со стандартными типами из-за оптимизации или чего-то не хватает в моем классе?



Отредактировано Sadko (Ноя. 15, 2018 11:43:43)

Офлайн

#2 Ноя. 15, 2018 11:01:20

Sadko
Зарегистрирован: 2018-11-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределение умножения

-

Отредактировано Sadko (Ноя. 15, 2018 12:58:44)

Офлайн

#3 Ноя. 15, 2018 11:03:29

Sadko
Зарегистрирован: 2018-11-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределение умножения

Попробовал scipy.linalg inv() - пишет “ValueError: object arrays are not supported”.
Нужна простая, прямолинейная, неоптимизированная реализация инверсии матрицы, пусть медленная. Поиск приводит к numpy и scipy. Может, посоветуете где искать?

Отредактировано Sadko (Ноя. 15, 2018 12:56:29)

Офлайн

#4 Ноя. 15, 2018 11:05:56

Sadko
Зарегистрирован: 2018-11-15
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Переопределение умножения


В общем нашел -

 https://stackoverflow.com/questions/32114054/matrix-inversion-without-numpy

Всем спасибо за внимание

Отредактировано Sadko (Ноя. 15, 2018 13:05:29)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version