2013-12-26 4 views
-2

Рассмотрим уравнение разности с его начальными условиями.Решение дифференциального уравнения с начальным условием

5y(n) + y(n-1) - 3y(n-2) = (1/5^n) u(n), n>=0 
y(n-1) = 2, y(n-2) = 0 

Как определить y (n) в Matlab?

+0

Вот функция, я построил, чтобы вычислить его с дополнительным примером. [введите ссылку здесь] (https://www.mathworks.com/matlabcentral/fileexchange/56142-output-estimation-difference-equation) –

ответ

1

Используйте подход, аналогичный this (с использованием filter), но с указанием начальных условий, как сделано here (с использованием filtic).

Предполагаю, что ваши начальные условия: y(-1)=2, y(-2)=0.

num = 1; %// numerator of transfer function (from difference equation) 
den = [5 1 -3]; %// denominator of transfer function (from difference equation) 
n = 0:100; %// choose as desired 
x = (1/5).^n; %// n is >= 0, so u(n) is 1 
y = filter(num, den, x, filtic(num, den, [2 0], [0 0])); 
%// [2 0] reflects initial conditions on y, and [0 0] those on x. 

Вот сюжет результата, полученного с stem(n,y).

enter image description here

+0

Мне нравится ваш подход с 'filter'. Но, как прокомментировал мой ответ, я не верю, что вы можете просто удалить 'u (n)'. На самом деле, с вашей точки зрения, '(1/5^n) u (n)' - это то, что фильтруется, не так ли? –

1

Вторая строка вашего кода не дает начальных условий, поскольку она относится к индексной переменной n. Поскольку Matlab допускает только положительные целые индексы, я предполагаю, что вы имеете в виду y(1) = 0 и y(2) = 2.

Вы можете получить итерационное правило из первого уравнения простой алгебры:

y(n) = ((1/5^n) u(n) - y(n-1) + 3y(n-2))/5 

Кодекса применять это правило в Matlab:

n_max = 100; 
y = nan(n_max, 1); 
y(1) = 0; 
y(2) = 2; 
for n = 3 : n_max 
    y(n) = ((1/5^n) * u(n) - y(n-1) + 3 * y(n-2))/5; 
end 

Этот код предполагает, что массив u уже определены. n_max определяет количество элементов y для вычисления.

+0

Вам нужно определить (возможно, просто удалить) 'u (n)'. BTW, nice hat :-D –

+0

В дополнение к удалению 'u (n)' (потому что он равен 1 для всех рассмотренных 'n'), вы должны заменить' 1/5^n' на '1/5^(n- 3) '. Это потому, что ваш n = 1 действительно момент времени -2; ваш n = 2 действительно равен -1 и т. д. Предполагая, что начальными условиями являются y (-2), y (-1). С этими исправлениями (вы согласны?), Ваш ответ и мой дают тот же результат. –

+1

Не уверен в начальных условиях и '1/5^n', возможно, вы правы. Начальные условия, данные ОП, на самом деле не имели смысла, поэтому я изменил их на то, что имеет смысл, и вы изменили их на нечто другое, что также имеет смысл. - Я не согласен с 'u (n)' хотя; как бы вы знали, что он равен 1? Он не был явно определен ОП, поэтому можно просто предположить, что он был определен где-то в другом месте. –

Смежные вопросы