我打算在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很陌生。
非常感谢!
答案 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()
答案 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
e
在mu
中绘制特征向量