Pull to refresh

Полиномиальные корневые методы синтеза САУ ч.3 (заключение)

Level of difficultyMedium
Reading time12 min
Views1.5K

Леонид Маркович Скворцов. Широко известный в узких кругах математик, профессионально занимающийся математическими проблемами автоматического управления. Например, его авторские методы использованы в SimInTech. Данный текст, еще готовится к публикации. Но с разрешения автора, читатели Хабр будут первыми кто сможет оценить. Первая часть здесь... Вторая часть здесь...

Две предыдущие части были заполнены многоэтажными формулами в третей части разберем на примерах применение этих формул. Математику в жизнь!

Приведем примеры и покажем в видео как синтезировать регулятор для линейной модели двухроторного газотурбинного двигателя, работающего на базовом режиме малого газа, вместе с исполнительным механизмом. От теории к практике не приходя в сознание!

Читать далее
Total votes 11: ↑11 and ↓0+11
Comments2

Дубинка (гиря) подброшенная в воздух. Решение дифференциальных уравнений в MATLAB

Level of difficultyEasy
Reading time6 min
Views3.8K

Пример решения системы дифференциальных уравнений (ДУ) в MATLAB адаптивным и не адаптивным методами.

В MATLAB встроено множество численных решателей с адаптивным шагом для решения жестких, нежестких и полностью неявных систем. С помощью Symbolic Math Toolbox можно сначала выводить системы ДУ, а затем тут же решать их численными методами.

Описание модели

Для примера решим систему ДУ, которая описывает систему из двух масс m1 и m2, которые жестко соединены невесомым стержнем длинной L.

Читать далее
Total votes 11: ↑10 and ↓1+9
Comments19

Задача о свободно висящей цепочке

Reading time3 min
Views16K
Когда-то очень давно, когда я был еще студентом, сидя на одной скучной лекции я задумался над тем, с какой частотой может колебаться в одной плоскости свободно висящая веревка или цепочка заданной длины и какова будет при этом ее форма, если колебания будут небольшими. Я помню, что решил эту задачу, но сейчас, по прошествии многих лет, уже забыл подробности того, как я это сделал. Однако, мне стало интересно восстановить это решение максимально подробно и поделиться им со всеми, кому это было бы интересно. Что из этого получилось, читайте под катом.
Читать дальше →
Total votes 39: ↑38 and ↓1+37
Comments22

О классификации методов преобразования Фурье на примерах их программной реализации средствами Python

Reading time7 min
Views28K

Введение


Публикации по методу Фурье условно можно разделить на две группы. Первая группа так называемых познавательных публикаций, например, [1,2].

Вторая группа публикаций касается применения преобразований Фурье в технике, например, при спектральном анализе [3,4].

Ни в коем случае не умоляя достоинства этих групп публикации стоит признать, что без классификации, или хотя бы попытки осуществить такую классификацию, получить системное представление о методе Фурье, по моему мнению, затруднительно.

Задачи публикации


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

Гармонический анализ и синтез


Гармоническим анализом называют разложение функции f(t), заданной на отрезке [0, Т] в ряд Фурье или в вычислении коэффициентов Фурье по формулам.

Гармоническим синтезом называют получение колебаний сложной формы путем суммирования их гармонических составляющих (гармоник).

Программная реализация
#!/usr/bin/python
# -*- coding: utf-8 -*
from scipy.integrate import quad # модуль для интегрирования
import matplotlib.pyplot as plt # модуль для графиков
import numpy as np # модуль для операций со списками и массивами
T=np.pi; w=2*np.pi/T# период и круговая частота
def func(t):# анализируемая функция
         if t<np.pi:
                  p=np.cos(t)
         else:
                  p=-np.cos(t)
         return p
def func_1(t,k,w):# функция для расчёта коэффициента a[k] 
         if t<np.pi:
                  z=np.cos(t)*np.cos(w*k*t)
         else:
                  z=-np.cos(t)*np.cos(w*k*t)
         return z
def func_2(t,k,w):#функция для расчёта коэффициента b[k] 
         if t<np.pi:
                  y=np.cos(t)*np.sin(w*k*t)
         else:
                  y=-np.cos(t)*np.sin(w*k*t)
         return y
a=[];b=[];c=4;g=[];m=np.arange(0,c,1);q=np.arange(0,2*np.pi,0.01)# подготовка списков для численного анализа
a=[round(2*quad(func_1, 0, T, args=(k,w))[0]/T,3) for k in m]# интеграл для a[k], k -номер гармоники 
b=[round(2*quad(func_2, 0, T, args=(k,w))[0]/T,3) for k in m]# интеграл для b[k], k -номер гармоники
F1=[a[1]*np.cos(w*1*t)+b[1]*np.sin(w*1*t) for t in q]#функции для гармоник
F2=[a[2]*np.cos(w*2*t)+b[2]*np.sin(w*2*t) for t in q]
F3=[a[3]*np.cos(w*3*t)+b[3]*np.sin(w*3*t) for t in q]
plt.figure()
plt.title("Классический гармонический анализ функции \n при t<pi  f(t)=cos(t)  при t>=pi  f(t)=-cos(t)")
plt.plot(q, F1, label='1 гармоника')
plt.plot(q, F2 , label='2 гармоника')
plt.plot(q, F3, label='3 гармоника')
plt.xlabel("Время t")
plt.ylabel("Амплитуда А")
plt.legend(loc='best')
plt.grid(True)
F=np.array(a[0]/2)+np.array([0*t for t in q-1])# подготовка массива для анализа с a[0]/2
for k in np.arange(1,c,1):
         F=F+np.array([a[k]*np.cos(w*k*t)+b[k]*np.sin(w*k*t) for t in q])# вычисление членов ряда Фурье
plt.figure()
P=[func(t) for t in q]
plt.title("Классический гармонический синтез")
plt.plot(q, P, label='f(t)')
plt.plot(q, F, label='F(t)')
plt.xlabel("Время t")
plt.ylabel("f(t),F(t)")
plt.legend(loc='best')
plt.grid(True)
plt.show()

Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments1