Найти - Пользователи
Полная версия: Переопределение умножения
Начало » Python для новичков » Переопределение умножения
1
Sadko
Здравствуйте.

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

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

В общем нашел -
 https://stackoverflow.com/questions/32114054/matrix-inversion-without-numpy

Всем спасибо за внимание
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB