计算通用矩阵的特征值时,python引发语法错误

时间:2019-03-12 11:33:37

标签: python numpy

我打算在Python中以0.1步绘制在-3≤μ≤3范围内的Jacobian矩阵的特征值。

请在下面查看我的代码:

import numpy as np

mu = np.arange(-3,3,0.1)

J =([[0, 1],
 [-1, -mu]])

assign lambda 

lambda = np.linalg.eigvals(J)

print(lambda)

然后显示:“ SyntaxError:无效语法”,它指向“分配lambda”行中的“ lambda”。

然后我的绘图代码是

import matplotlib.pyplot as plt 

plt.figure()
plt.plot(mu, lambda, 's') 
plt.xlabel('mu')
plt.ylabel('Eigenvalue')
plt.show()

另一个“ SyntaxError:无效语法”出现,指向本节中的“ lambda”。

我也试图摆脱“ assign lambda”这一行,但仍然没有用。当我尝试定义函数或参数之前,已经发生了此类错误。

谁能帮我看看吗?我对Python很陌生。

非常感谢!

2 个答案:

答案 0 :(得分:1)

您正在尝试对mu进行向量化,这不是代码中的正确方法。您可以简单地使用for循环

import numpy as np
import matplotlib.pyplot as plt 

mu = np.arange(-3,3,0.1)
lambda_list = []

for i in mu:
    J = [[0, 1],[-1, -i]]
    lambda_list.append(np.linalg.eigvals(J))

lambda_list = np.array(lambda_list)

plt.figure()
plt.plot(mu, lambda_list[:, 0], '-r', label='Eigenvalue 1') 
plt.plot(mu, lambda_list[:, 1], '-b', label='Eigenvalue 2') 
plt.xlabel('mu')
plt.ylabel('Eigenvalue')
plt.legend()

enter image description here

答案 1 :(得分:0)

import numpy as np
import matplotlib.pyplot as plt 
mu = np.arange(-3,3,0.1)
e = list()

for m in mu:
    J = np.array([[0, 1], [-1, -m]])
    e.append(np.linalg.eigvals(J))

plt.figure()
plt.plot(mu, e, 's') 
plt.xlabel('mu')
plt.ylabel('Eigenvalue')
plt.show()
  • 为每个亩创建一个J
  • 计算J的特征向量并将其保存在列表e
  • 最后针对emu中绘制特征向量