Мне нужна помощь в составлении дифференциального уравнения... оно все время выходит странным, и график не такой, каким он должен быть.
function [dydt] = diff(y,t)
dydt = (-3*y)+(t*(exp(-3*t)));
end
tI = 0;
yI = -0.1;
tEnd = 5;
dt = 0.5;
t = tI:dt:tEnd;
y = zeros(size(t));
y(1) = yI;
for k = 2:numel(y)
yPrime = diff(t(k-1),y(k-1));
y(k) = y(k-1) + dt*yPrime;
end
plot(t,y)
grid on
title('Engr')
xlabel('Time')
ylabel('y(t)')
legend(['dt = ' num2str(dt)])
Это мой код, но график совсем не похож на то, на что он должен быть похож. Я пропустил что-то вроде индекса для оператора for
?
Изменить
Я получаю сообщение об ошибке:
Error using diff
Difference order N must be a positive integer scalar.
Error in diff3 (line 12)
yPrime = diff(t(k-1),y(k-1));
diff(y,t)
, но вы звоните с перевернутыми аргументами:diff(t(k-1),y(k-1))
. Я бы рекомендовал следовать тому, что делают решатели ОДУ Matlab (например,ode45
), и определять аргументы вашей функции ОДУ какt
, а затемy
. Вы также обнаружите, что ваш временной шагdt
слишком велик даже для этой простой функции. Попробуйте 0,1 или меньше. - person horchler   schedule 06.07.2013