【发布时间】:2020-08-30 04:24:59
【问题描述】:
主要思想是用户将输入3个字符串来创建一个Hessian矩阵,以及两个或多个变量的值,目标是计算特征值以知道矩阵是否正定义。
到目前为止,我已经尝试用 int 替换字符串或在矩阵上使用 eval() 函数,但它似乎与矩阵不兼容。
这是我目前的代码示例。
#Hessian
x = 0
y = 0
input_1 = '6x, -3, 0'
input_2 = '-3, 6y, 0'
input_3 = '0, 0, 0'
input_1 = input_1.replace('x', '*x')
input_2 = input_2.replace('y', '*y')
input_1 = input_1.split(',')
input_2 = input_2.split(',')
input_3 = input_3.split(',')
hess = np.matrix([input_1,input_2,input_3])
hess
哪些输出:
matrix([['6*x', ' -3', ' 0'],
['-3', ' 6*y', ' 0'],
['0', ' 0', ' 0']], dtype='<U4')
现在,问题是我找不到用上面声明的值替换变量“x”和“y”的方法,因为它们仍然是字符串。
如果我能找到一种方法将矩阵的值转换为整数并替换这些值,那么我会使用 eigenval = np.all(np.linalg.eigvals(hess)) 之类的东西来计算特征值。
任何关于如何更改矩阵元素的提示或建议将不胜感激。
提前谢谢你。
【问题讨论】:
-
为什么要使用字符串,可以直接使用变量x和y
标签: python numpy matrix linear-algebra eigenvalue