Чисельні методи дослідження перехідних процесів у лінійних стаціонарних системах
Автор: Alesya103 • Декабрь 5, 2019 • Лабораторная работа • 1,914 Слов (8 Страниц) • 546 Просмотры
Факультет комп’ютерних наук та кібернетики
ЗВІТ
з Системного Аналізу
по лабораторній на тему
"Чисельні методи дослідження перехідних процесів
у лінійних стаціонарних системах"
Звіт склала:
студентка кафедри САТР 3го курсу
Афанасьєва Олеся Ігорівна
Київ, 2019 – 2020
Постановка:
Потрібно практично реалізувати рекурентний алгоритм, за допомогою якого можна визначити реакцію лінійної стаціонарної системи на заданий вхідний процес u(t).
Має бути реалізовано:
⦁ Безпосередньо сам рекурентний алгоритм, що приймаючи вхідний процес u(t), певний проміжок часу T та деякі інші вхідні аргумени, що задані користувачем, має повернути вектор x = (x1, x2, x3) для кожного кроку розміром T0
⦁ Можливість користувача задавати наступні аргументи:
a1, a2 - елементи 3,2 та 3,3 матриці А;
b – 3-ій елемент вектора В;
q - параметр точності обчислення Ф(Т0);
Т0 - період квантування;
U - вхідний процес, користувач може вибрати один з 3х заданих;
k0 (k1) - проміжок, через який U буде змінювати свою поведінку;
x0 - початкове значення х
⦁ Графічне зображення вихідних процесів x1, x2, x3.
Спосіб виконання:
Лабораторна була написана на мові python 3.7. Саме ця мова була обрана через легкість використання та її потужні бібліотеки, що дозволяють легко працювати з даними та зображувати їх графічно. Як підхід до дизайну програми було обрано цункціональний підхід. Були створені функціі, обчислення Ф(Т0) та Г(Т0), безпосередньо реалізація рекурентних алгоритмів для кожного з варіантів лабораторної роботи, що містили й графічне зображування отриманих вихідних даних.
Було підключено та використано наступні бібліотеки:
⦁ Numpy - бібліотека, що додає підтримку великих багатовимірних масивів і велику кількість високорівневих математичних функцій. Використовувалися в основному об'єкти matrix та array.
⦁ Matplotlib - бібліотека, що дозволяє легко графічно зобразити дані у двовимірному просторі. Викорисано метод scatter(x, y) для зображення поточково вихідних процесів x1, x2, x3
Код програми:
import numpy as np
import matplotlib.pyplot as plt
import numpy.matrixlib as npm
n = 3
I = np.eye(n)
b = float(input("input b: "))
k = int(input("input k: "))
B = np.array([[0], [0], [b]])
C = np.array([[1., 0, 0]])
A = np.array([[0, 1., 0], [0, 0, 1.], [-1., -1., -3.]])
T = float(input("input T: "))
q = int(input("input q: "))
i = int(input("input iterations: " ))
x = np.array([[0], [0], [0]])
y = C.dot(x)
u1 = 1
u2 = -1
def Fq(q):
F=I
for i in range (q+1):
F = F + (np.linalg.matrix_power(A.dot(T), i) )/(np.math.factorial(i))
...