Simulink, разностные уравнения

alextat07

Хочется иметь в Simulink звено, моделирующее разностное уравнение вида y(t)+a_1 y(t-1) + ... + a_n y(t-n) = f(t но в непрерывном времени. Стандартные звенья работают либо с дискретным временем, либо там дифференциальное уравнение с запаздыванием, тогда как мне дифференцирование не нужно.
Возможно, я плохо искал, и есть готовые решения? Или все как-то тривиально делается? Если нет, подскажите, что почитать, чтобы такое звено самому написать. Спасибо.

griz_a

Тут время очень условно непрерывное, процесс по каждой линии a,a+1,a+2,... развивается по своему, никак не глядя на остальное, поэтому это просто очень много процессов с дискретным временем.

alextat07

Только до тех пор, пока звено живет само по себе. Глобально там система с дифференцированиями и обратной связью, так что линии все же будут перемешиваться.
Но даже если бы и так, все равно остается вопрос, как это реализовывать в Simulink`е.

seregaohota

для простейшего
y(t) = y(t-1)
задав произвольно начальные данные y(t) на полуинтервале [0,1) просто получим континуум задач с одним и тем же уравнением но с разными начальными данными с дискретным временем (произвольную периодическую функцию в данном случае естественно, с периодом 1).
Аналогично
y(t) = y(t-1) + y(t-2)
с начальными данными на [0,2) даст континуум задач Фибоначи с разными начальными данными. Значения в 0 и 1 дадут тебе значения в 2, 3, и т.д. значения например в 0.1 и 1.1 дадут значения в точках 2.1, 3.1, 4.1 и т.д .
Это действительно то, что тебя интересует?

alextat07

Я больше того скажу: любое такое уравнение решается почти так же, как уравнение с дискретным временем. Выписывается характеристический многочлен, находятся его корни p_i (для простоты, пусть все они некратные). Тогда решение будет вида y(t) = C_1(t)*p_1^t + ... + C_n(t)*p_n^t, где начальные данные C_i(t) — произвольные 1-периодические функции.
С точки зрения математики все понятно, я не знаю, как это в матлабе сделать :(

seregaohota

Да, ты прав. Полная аналогия с дифурами.
фиг знает, давно Simulink не юзал и матлаба под рукой нет. Но, по-идее, там можно свои блоки, определяемые пользователем, делать. может не во всех версиях или нет непрерывного времени, сделай дискретизацию эпсилон.
Гугли мануалы. Или спроси в девелопменте или лучше на специализированных конференциях. Даже у них на сайте наверняка спросить можно.

LENA-AKULA

Хочется иметь в Simulink звено, моделирующее разностное уравнение вида y(t)+a_1 y(t-1) + ... + a_n y(t-n) = f(t но в непрерывном времени. Стандартные звенья работают либо с дискретным временем, либо там дифференциальное уравнение с запаздыванием, тогда как мне дифференцирование не нужно.
Возможно, я плохо искал, и есть готовые решения? Или все как-то тривиально делается? Если нет, подскажите, что почитать, чтобы такое звено самому написать. Спасибо.
В библиотеке Continuous есть блок Transport Delay ровно для этого – он позволяет задать запаздывание для непрерывного сигнала. Ещё там же есть более хитрые блоки Variable Time Delay и Variable Transport Delay, с помощью которых можно задавать переменное запаздывание.
Оставить комментарий
Имя или ник:
Комментарий: