역행렬 (Numpy) int가 너무 커서 float로 변환 할 수 없습니다.

네오 스콧

365x365 행렬의 역을 취하려고합니다. 일부 값은 365 ** 365만큼 커지므로 긴 숫자로 변환됩니다. linalg.matrix_power()함수가 긴 숫자를 처리 할 수 있는지 모르겠습니다 . 나는 문제가 (오류 메시지와 내 프로그램이 더 작은 행렬에서 잘 작동하기 때문에) 이것에서 비롯된다는 것을 알고 있지만이 문제를 해결할 방법이 있는지 확실하지 않습니다. 코드는 NxN 행렬에서 작동해야합니다.

내 코드는 다음과 같습니다.

item=0
for i in xlist:
    xtotal.append(arrayit.arrayit(xlist[item],len(xlist)))
    item=item+1
print xtotal
xinverted=numpy.linalg.matrix_power(xtotal,-1)
coeff=numpy.dot(xinverted,ylist)

arrayit.arrayit:

def arrayit(number, length):
    newarray=[]
    import decimal
    i=0
    while i!=(length):
        newarray.insert(0,decimal.Decimal(number**i))
        i=i+1
    return newarray;

프로그램은 목록 (x 목록 및 y 목록)에서 x, y 좌표를 가져 와서 함수를 만듭니다. 감사!

DavidW

시도해 볼 수있는 한 가지는 임의 정밀도 숫자에 대한 간단한 행렬 대수 및 기타 문제를 수행 할 수 있는 라이브러리 mpmath 입니다.

몇 가지주의 사항 : numpy를 사용하는 것보다 거의 확실히 느릴 것이며 Lutzl 이이 질문대한 답변 에서 지적했듯이 문제는 수학적으로 잘 정의되지 않을 수 있습니다. 또한 시작하기 전에 원하는 정밀도를 결정해야합니다.

간단한 예제 코드,

from mpmath import mp, matrix

# set the precision - see http://mpmath.org/doc/current/basics.html#setting-the-precision
mp.prec = 5000 # set it to something big at the cost of speed.
   # Ideally you'd precalculate what you need.
   # a quick trial with 100*100 showed that 5000 works and 500 fails

# see the documentation at http://mpmath.org/doc/current/matrices.html
# where xtotal is the output from arrayit
my_matrix = matrix(xtotal) # I think this should work. If not you'll have to create it and copy

# do the inverse
xinverted = my_matrix**-1
coeff = xinverted*matrix(ylist)
# note that as lutlz pointed out you really want to use solve instead of calculating the inverse. 
# I think this is something like
from mpmath import lu_solve
coeff = lu_solve(my_matrix,matrix(ylist))

나는 당신의 진짜 문제가 소프트웨어가 아닌 수학에 있다고 생각하기 때문에 이것이 당신에게 환상적으로 잘 작동 할 것 같지는 않지만 항상 가능합니다!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

calcuale ---- OverflowError : long int가 너무 커서 float로 변환 할 수 없습니다.

분류에서Dev

OverflowError : numpy 배열로 데이터를 공급할 때 Python int가 너무 커서 C long으로 변환 할 수 없습니다.

분류에서Dev

OverflowError : python int가 너무 커서 win8에서 C long으로 변환 할 수 없습니다.

분류에서Dev

OverflowError : Python int가 너무 커서 C ssize_t로 변환 할 수 없습니다.

분류에서Dev

오류 : 'float (*) (int)'를 'float'로 변환 할 수 없습니다.

분류에서Dev

ValueError : 문자열을 float, NumPy로 변환 할 수 없습니다.

분류에서Dev

오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

분류에서Dev

오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

분류에서Dev

Cython은 float ndarray를 int ndarray로 변환 할 수 없습니다.

분류에서Dev

밝기가 너무 커서 제어 할 수 없습니다.

분류에서Dev

int에서 int로 변환 할 수 없습니다 **

분류에서Dev

초기화에서 float float를 float로 변환 할 수 없습니다.

분류에서Dev

ValueError : 문자열을 float로 변환 할 수 없습니다 : Numpy 배열

분류에서Dev

SQL에서 varchar를 int로 변환 할 수 없습니다.

분류에서Dev

java : String에서 int로 변환 할 수 없습니다.

분류에서Dev

Object에서 Int로 변환 할 수 없습니다.

분류에서Dev

'=': 'CircularDoubleDirectedList <int> :: Node *'에서 'Node *'로 변환 할 수 없습니다.

분류에서Dev

int에서 바이트로 변환 할 수 없습니다.

분류에서Dev

Java에서 int를 부울로 변환 할 수 없습니다.

분류에서Dev

'float'유형을 'int'로 암시 적으로 변환 할 수 없습니다.

분류에서Dev

오류 : 할당에서 'Cell <int> *'를 'List <int> *'로 변환 할 수 없습니다.

분류에서Dev

where 절에 변수가 있으면 nvarchar에서 int로 변환 할 수 없습니다.

분류에서Dev

인수 1을 int에서 int && 오류로 변환 할 수 없습니다.

분류에서Dev

C ++ : 오류가 std :: vector <int> *에서 std :: vector <std :: vector <int>로 변환 할 수 없습니다.

분류에서Dev

이미지의 높이가 너무 커서 표시 할 수 없습니다.

분류에서Dev

테이블에 행을 추가하려고 할 때 Int32를 null로 변환 할 수 없습니다.

분류에서Dev

C # winforms 인수 1 : 'string'에서 'int'로 변환 할 수 없습니다.

분류에서Dev

'초기화 중': 'Array <int, 3>'에서 'int'로 변환 할 수 없습니다.

분류에서Dev

오류 C2440 : '=': 'int *'에서 'int **'로 변환 할 수 없습니다.

Related 관련 기사

  1. 1

    calcuale ---- OverflowError : long int가 너무 커서 float로 변환 할 수 없습니다.

  2. 2

    OverflowError : numpy 배열로 데이터를 공급할 때 Python int가 너무 커서 C long으로 변환 할 수 없습니다.

  3. 3

    OverflowError : python int가 너무 커서 win8에서 C long으로 변환 할 수 없습니다.

  4. 4

    OverflowError : Python int가 너무 커서 C ssize_t로 변환 할 수 없습니다.

  5. 5

    오류 : 'float (*) (int)'를 'float'로 변환 할 수 없습니다.

  6. 6

    ValueError : 문자열을 float, NumPy로 변환 할 수 없습니다.

  7. 7

    오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

  8. 8

    오류 : 'Int'는 '@lvalue Float'로 변환 할 수 없습니다.

  9. 9

    Cython은 float ndarray를 int ndarray로 변환 할 수 없습니다.

  10. 10

    밝기가 너무 커서 제어 할 수 없습니다.

  11. 11

    int에서 int로 변환 할 수 없습니다 **

  12. 12

    초기화에서 float float를 float로 변환 할 수 없습니다.

  13. 13

    ValueError : 문자열을 float로 변환 할 수 없습니다 : Numpy 배열

  14. 14

    SQL에서 varchar를 int로 변환 할 수 없습니다.

  15. 15

    java : String에서 int로 변환 할 수 없습니다.

  16. 16

    Object에서 Int로 변환 할 수 없습니다.

  17. 17

    '=': 'CircularDoubleDirectedList <int> :: Node *'에서 'Node *'로 변환 할 수 없습니다.

  18. 18

    int에서 바이트로 변환 할 수 없습니다.

  19. 19

    Java에서 int를 부울로 변환 할 수 없습니다.

  20. 20

    'float'유형을 'int'로 암시 적으로 변환 할 수 없습니다.

  21. 21

    오류 : 할당에서 'Cell <int> *'를 'List <int> *'로 변환 할 수 없습니다.

  22. 22

    where 절에 변수가 있으면 nvarchar에서 int로 변환 할 수 없습니다.

  23. 23

    인수 1을 int에서 int && 오류로 변환 할 수 없습니다.

  24. 24

    C ++ : 오류가 std :: vector <int> *에서 std :: vector <std :: vector <int>로 변환 할 수 없습니다.

  25. 25

    이미지의 높이가 너무 커서 표시 할 수 없습니다.

  26. 26

    테이블에 행을 추가하려고 할 때 Int32를 null로 변환 할 수 없습니다.

  27. 27

    C # winforms 인수 1 : 'string'에서 'int'로 변환 할 수 없습니다.

  28. 28

    '초기화 중': 'Array <int, 3>'에서 'int'로 변환 할 수 없습니다.

  29. 29

    오류 C2440 : '=': 'int *'에서 'int **'로 변환 할 수 없습니다.

뜨겁다태그

보관