Python вызывает синтаксическую ошибку при вычислении собственных значений общей матрицы - PullRequest
1 голос
/ 12 марта 2019

Я намерен построить собственное значение (я) матрицы Якоби в диапазоне -3 ≤ µ ≤ 3 с шагом 0,1 в Python.

Пожалуйста, смотрите мой код ниже:

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: неверный синтаксис», и он указывает на «лямбду» в строке «назначить лямбду».

Тогда мой код для построения

import matplotlib.pyplot as plt 

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

Появился еще один «SyntaxError: неверный синтаксис», указывающий на «лямбду» в этом разделе.

Я также пытался избавиться от строки «назначить лямбду», но все равно не получилось. Такая ошибка произошла раньше, когда я пытаюсь определить функцию или параметр.

Может кто-нибудь взглянуть и помочь мне? Я очень новичок в Python.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2019

Вы пытаетесь векторизовать 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

0 голосов
/ 12 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...