python-3.x Google协作超时

uidvcgyl  于 2022-12-05  发布在  Python
关注(0)|答案(1)|浏览(153)

尝试使用Colab查找给定矩阵的Jordan形式。但它总是失败或超时。不知道为什么会失败

import numpy as np
import sys
from sympy import Matrix
sys.set_int_max_str_digits(15000)

a = np.array([[1, 2, 4, 8], [1, 3, 9, 27], [1, 4, 16, 64], [1, 5, 25, 125]])
m = Matrix(a)
P, J = m.jordan_form()

J

我试着在Matlab和在线计算器如https://www.wolframalpha.com/input/?i=jordan+normal+form+calculator上找到Jordan形式它在这些平台上工作得很好。不知道为什么Colab和Jupyter不能计算矩阵的Jordan形式

46qrfjad

46qrfjad1#

首先,Colab和Jupyter只是可以运行Python代码的环境,这里的问题与使用Colab或Jupyter或任何IDE无关。在你的例子中你得不到结果的原因是算法上的。你使用的矩阵是病态的。在四个egne值之间有四个数量级的差异。在尝试计算Jordan形式时,底层算法会卡住。例如,如果尝试:

a = np.array([[5, 4, 2, 1], [0, 1, -1, -1], [-1, -1, 3, 0], [1, 1, -1, 2]])

您将看到代码运行良好且速度很快。

相关问题