Комплексное руководство по расчету собственных значений, постоянных времени, собственных частот и коэффициентов затухания

В различных научных и инженерных областях часто возникает необходимость анализа поведения динамических систем. Один из ключевых аспектов этого анализа включает вычисление собственных значений, постоянных времени, собственных частот и коэффициентов затухания. В этой статье блога мы рассмотрим несколько методов выполнения этих вычислений, а также примеры кода на Python.

Методы расчета собственных значений:

  1. Численные методы:

    • Метод мощной итерации
    • Метод обратной степенной итерации
    • QR-алгоритм
    • Метод Якоби
  2. Аналитические методы:

    • Метод характеристического уравнения
    • Метод диагонализации
    • Иорданский метод канонической формы

Пример кода (метод мощной итерации):

import numpy as np
def power_iteration(A, num_iterations):
    n = A.shape[0]
    x = np.ones(n)

    for _ in range(num_iterations):
        x = np.dot(A, x)
        x = x / np.linalg.norm(x)  # Normalize the vector

    eigenvalue = np.dot(np.dot(A, x), x) / np.dot(x, x)
    return eigenvalue, x
# Example usage
A = np.array([[3, 1], [1, 2]])
eigenvalue, eigenvector = power_iteration(A, 100)
print("Eigenvalue:", eigenvalue)
print("Eigenvector:", eigenvector)

Методы расчета постоянных времени и собственных частот:

  1. Анализ частотной области:

    • Преобразование Фурье
    • Преобразование Лапласа
    • Анализ передаточной функции
  2. Анализ во временной области:

    • Метод импульсного отклика
    • Метод пошагового ответа
    • Анализ пространства состояний

Пример кода (метод импульсного отклика):

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
def calculate_time_constants(system):
    t, y = signal.impulse(system)
    peaks, _ = signal.find_peaks(y, height=0)
    time_constants = t[peaks]
    return time_constants
# Example usage
system = signal.TransferFunction([1], [1, 2, 1])
time_constants = calculate_time_constants(system)
print("Time Constants:", time_constants)

Методы расчета коэффициентов демпфирования:

  1. Анализ частотной области:

    • Анализ графика Боде
    • Анализ графика Найквиста
  2. Анализ во временной области:

    • Метод пошагового отклика
    • Анализ пространства состояний

Пример кода (анализ графика Боде):

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
def calculate_damping_ratio(system):
    _, mag, phase = signal.bode(system)
    max_peak_idx = np.argmax(mag)
    damping_ratio = np.sin(phase[max_peak_idx])
    return damping_ratio
# Example usage
system = signal.TransferFunction([1], [1, 0.1, 1])
damping_ratio = calculate_damping_ratio(system)
print("Damping Ratio:", damping_ratio)