Sympy와 Numpy는 Sympy를 사용하여 생성 된 역행렬을 사용할 수 없습니다.

AmirReza

Sympy 패키지를 사용하여 a라는 기호 변수가있는 방정식이 있습니다. 이 변수를 사용하여 6 * 6 행렬을 만들었습니다.

array([[1, exp(-0.04*a**2), exp(-0.16*a**2), exp(-0.36*a**2),
        exp(-0.64*a**2), exp(-1.0*a**2)],
       [exp(-0.04*a**2), 1, exp(-0.04*a**2), exp(-0.16*a**2),
        exp(-0.36*a**2), exp(-0.64*a**2)],
       [exp(-0.16*a**2), exp(-0.04*a**2), 1, exp(-0.04*a**2),
        exp(-0.16*a**2), exp(-0.36*a**2)],
       [exp(-0.36*a**2), exp(-0.16*a**2), exp(-0.04*a**2), 1,
        exp(-0.04*a**2), exp(-0.16*a**2)],
       [exp(-0.64*a**2), exp(-0.36*a**2), exp(-0.16*a**2),
        exp(-0.04*a**2), 1, exp(-0.04*a**2)],
       [exp(-1.0*a**2), exp(-0.64*a**2), exp(-0.36*a**2),
        exp(-0.16*a**2), exp(-0.04*a**2), 1]], dtype=object)

위의 변수는 sympy 기호입니다. 이제이 행렬을 역전시키고 싶습니다. numpy를 사용하면 다음과 같은 오류가 발생합니다.

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-117-3c958037db81> in <module>()
----> 1 inv(np.array(final_result))

D:\datascience\lib\site-packages\numpy\linalg\linalg.py in inv(a)
    526     signature = 'D->D' if isComplexType(t) else 'd->d'
    527     extobj = get_linalg_error_extobj(_raise_linalgerror_singular)
--> 528     ainv = _umath_linalg.inv(a, signature=signature, extobj=extobj)
    529     return wrap(ainv.astype(result_t, copy=False))
    530 

TypeError: No loop matching the specified signature and casting
was found for ufunc inv

그리고 Sympy 자체 구문을 사용하여 M ** -1 인이 행렬을 역전 시키면 시간이 너무 오래 걸리고 결과를 계산하지 않습니다. numpy를 사용하여이 행렬을 반전하는 방법이 있습니까? 또는 순수한 파이썬 구문?

싱크대

심볼릭 역을 찾고 있다면 SymPy를 사용해야합니다. NumPy는 숫자의 역수 만 계산하며,이 알고리즘이 사용하는 알고리즘은 기호 행렬에서 작동하지 않습니다.

이 행렬에서는 SymPy에서 사용하는 기본 알고리즘이 느린 것처럼 보이지만 method키워드를의 inv메소드 에 전달하여 대체 알고리즘을 시도 할 수 있습니다 Matrix. 사용 가능한 옵션은 'GE'(기본값) 'LU', 및 'ADJ'입니다.

또한 M.subs(exp(-a**2/25), b)계산에 도움이 될 수 있습니다 . 이렇게하면 결과 행렬은 단지 거듭 제곱입니다 b(이 작업을 수행하려면 부동 소수점 대신 유리수를 사용해야합니다). 나는 역으로 얻을 수 있었다

a, b = symbols('a b')
M = Matrix([[1, exp(-a**2/25), exp(-4*a**2/25), exp(-9*a**2/25), exp(-16*a**2/25), exp(-a**2)], [exp(-a**2/25), 1, exp(-a**2/25), exp(-4*a**2/25), exp(-9*a**2/25), exp(-16*a**2/25)], [exp(-4*a**2/25), exp(-a**2/25), 1, exp(-a**2/25), exp(-4*a**2/25), exp(-9*a**2/25)], [exp(-9*a**2/25), exp(-4*a**2/25), exp(-a**2/25), 1, exp(-a**2/25), exp(-4*a**2/25)], [exp(-16*a**2/25), exp(-9*a**2/25), exp(-4*a**2/25), exp(-a**2/25), 1, exp(-a**2/25)], [exp(-a**2), exp(-16*a**2/25), exp(-9*a**2/25), exp(-4*a**2/25), exp(-a**2/25), 1]])
M2 = M.subs(exp(-a**2/25), b)
M2inv = simplify(M2.inv('ADJ')) # takes a little time to compute, about 1:30 on my machine
Minv = M2inv.subs(b, exp(-a**2/25))

하루가 끝나면 행렬의 기호 역이 필요한지 고려할 수 있습니다. 숫자 값을 대체 한 a다음 NumPy로 숫자 역수를 계산하는 것으로 충분 합니까? 실제로 역이 필요합니까? 일반적으로 행렬의 명시 적 역을 계산하는 것은 숫자 계산에 적합하지 않습니다. 일반적으로 같은 것을 사용하는 것이 좋습니다 numpy.linalg.solve.

심볼릭 역은 일반적으로 매우 복잡한 표현이며 본질적으로 계산하기 어렵습니다. 숫자 역은 수치 적으로 매우 불안정하며 해결하려는 문제를 해결하기 위해 계산하는 데 거의 좋은 생각이 아닙니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

AVAudioPlayer는 ExtAudioFileWriteAsync를 사용하여 작성된 오디오 (.wav) 파일을 재생할 수 없습니다.

분류에서Dev

Keycloak REST API를 사용하여 역할을 생성 할 수 없습니다.

분류에서Dev

Powershell을 사용하여 자체 서명 된 인증서를 생성 할 수 없습니다.

분류에서Dev

Spark-xml을 사용하여 0-n 자식 요소가있는 중첩 된 xml에서 평면화 된 레코드를 생성 할 수 없습니다.

분류에서Dev

winpexpect를 사용하여 Python 셸을 생성 할 수 없습니다.

분류에서Dev

JSON.stringify ()를 사용하여 JSON 파일을 생성 할 수 없습니다.

분류에서Dev

tPivotToColumnsDelimited를 사용하여 크로스 탭을 생성 할 수 없습니다.

분류에서Dev

오버로드 된 비교 연산자를 사용하여 실행 전에 복사 생성자를 호출하는 이유를 알 수 없습니다.

분류에서Dev

IFileSystemAccess2를 사용하여 xtext에서 사용하여 출력 파일을 생성 할 수 없습니다.

분류에서Dev

상속 된 생성자를 사용하여 개체를 복사 할 수 없습니다.

분류에서Dev

NAT를 사용하여 생성 된 Virtualbox를 ping 할 수 없음

분류에서Dev

게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

분류에서Dev

PuTTY는 명령 줄 Linux PuTTYgen을 사용하여 PEM에서 변환하여 생성 된 ppk를 열 수 없습니다.

분류에서Dev

\ n을 사용하여 문자 배열에서 생성 된 문자열을 분할 할 수 없습니다.

분류에서Dev

SwiftUI 2.0을 사용하여 WebView를 생성하면 UIViewRepresentable에서 뷰를 생성 할 수 없습니다.

분류에서Dev

PyCharm 4.5 professional을 사용하여 커버리지 세부 정보를 생성하기 위해 '커버리지와 함께 실행'할 수 없습니다.

분류에서Dev

기능에서 numpy, sympy를 사용하여 기호 행렬을 만드시겠습니까?

분류에서Dev

설정 속성을 사용하여 생성자 함수의 실행 컨텍스트에 정의 된 값을 설정해도 값이 변경되지 않는 이유를 이해할 수 없습니다.

분류에서Dev

타이머를 사용하지 않는 한 런타임에 동적으로 생성 된 Combobox의 값을 선택할 수 없습니다.

분류에서Dev

{% url %} 템플릿 태그를 사용하여 캡처 된 인수로 URL을 제대로 생성 할 수 없습니다.

분류에서Dev

"bindParam ()"오류가 발생하는 "execute ()"를 사용하여 내 PDO 쿼리를 실행할 수 없습니다.

분류에서Dev

Android MediaPlayer는 Uri.parse (path)를 사용하여 파일 이름에 '#'문자가 포함 된 파일을 재생할 수 없습니다.

분류에서Dev

참조 매개 변수를 사용할 수없고 동일한 데이터로 생성 된 테이블 열을 사용할 수 없습니다.

분류에서Dev

Sails.js는 날짜 범위 쿼리 매개 변수를 사용하여 새로 생성 된 사용자를 가져올 수 없습니다.

분류에서Dev

Admin REST API를 통해 새로 생성 된 Keycloak 사용자에게 영역 역할을 할당 할 수 없습니다.

분류에서Dev

JOIN을 사용하여 다시 작성할 수없는 하위 쿼리를 사용하여 작성된 쿼리의 예?

분류에서Dev

동적으로 생성 된 뷰에서 onClick을 사용할 수 없습니다.

분류에서Dev

컴퓨터에서 생성 된 gem을 사용할 수 없습니다.

분류에서Dev

Backgroundworker-완료 후 생성 된 비트 맵을 사용할 수 없습니다.

Related 관련 기사

  1. 1

    AVAudioPlayer는 ExtAudioFileWriteAsync를 사용하여 작성된 오디오 (.wav) 파일을 재생할 수 없습니다.

  2. 2

    Keycloak REST API를 사용하여 역할을 생성 할 수 없습니다.

  3. 3

    Powershell을 사용하여 자체 서명 된 인증서를 생성 할 수 없습니다.

  4. 4

    Spark-xml을 사용하여 0-n 자식 요소가있는 중첩 된 xml에서 평면화 된 레코드를 생성 할 수 없습니다.

  5. 5

    winpexpect를 사용하여 Python 셸을 생성 할 수 없습니다.

  6. 6

    JSON.stringify ()를 사용하여 JSON 파일을 생성 할 수 없습니다.

  7. 7

    tPivotToColumnsDelimited를 사용하여 크로스 탭을 생성 할 수 없습니다.

  8. 8

    오버로드 된 비교 연산자를 사용하여 실행 전에 복사 생성자를 호출하는 이유를 알 수 없습니다.

  9. 9

    IFileSystemAccess2를 사용하여 xtext에서 사용하여 출력 파일을 생성 할 수 없습니다.

  10. 10

    상속 된 생성자를 사용하여 개체를 복사 할 수 없습니다.

  11. 11

    NAT를 사용하여 생성 된 Virtualbox를 ping 할 수 없음

  12. 12

    게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

  13. 13

    PuTTY는 명령 줄 Linux PuTTYgen을 사용하여 PEM에서 변환하여 생성 된 ppk를 열 수 없습니다.

  14. 14

    \ n을 사용하여 문자 배열에서 생성 된 문자열을 분할 할 수 없습니다.

  15. 15

    SwiftUI 2.0을 사용하여 WebView를 생성하면 UIViewRepresentable에서 뷰를 생성 할 수 없습니다.

  16. 16

    PyCharm 4.5 professional을 사용하여 커버리지 세부 정보를 생성하기 위해 '커버리지와 함께 실행'할 수 없습니다.

  17. 17

    기능에서 numpy, sympy를 사용하여 기호 행렬을 만드시겠습니까?

  18. 18

    설정 속성을 사용하여 생성자 함수의 실행 컨텍스트에 정의 된 값을 설정해도 값이 변경되지 않는 이유를 이해할 수 없습니다.

  19. 19

    타이머를 사용하지 않는 한 런타임에 동적으로 생성 된 Combobox의 값을 선택할 수 없습니다.

  20. 20

    {% url %} 템플릿 태그를 사용하여 캡처 된 인수로 URL을 제대로 생성 할 수 없습니다.

  21. 21

    "bindParam ()"오류가 발생하는 "execute ()"를 사용하여 내 PDO 쿼리를 실행할 수 없습니다.

  22. 22

    Android MediaPlayer는 Uri.parse (path)를 사용하여 파일 이름에 '#'문자가 포함 된 파일을 재생할 수 없습니다.

  23. 23

    참조 매개 변수를 사용할 수없고 동일한 데이터로 생성 된 테이블 열을 사용할 수 없습니다.

  24. 24

    Sails.js는 날짜 범위 쿼리 매개 변수를 사용하여 새로 생성 된 사용자를 가져올 수 없습니다.

  25. 25

    Admin REST API를 통해 새로 생성 된 Keycloak 사용자에게 영역 역할을 할당 할 수 없습니다.

  26. 26

    JOIN을 사용하여 다시 작성할 수없는 하위 쿼리를 사용하여 작성된 쿼리의 예?

  27. 27

    동적으로 생성 된 뷰에서 onClick을 사용할 수 없습니다.

  28. 28

    컴퓨터에서 생성 된 gem을 사용할 수 없습니다.

  29. 29

    Backgroundworker-완료 후 생성 된 비트 맵을 사용할 수 없습니다.

뜨겁다태그

보관