[T,Z] = ode45(@bouncing, [0 12], [100 0],'tspan','options','events');
options = odeset('events');
events(t,z) = [y(1)-10,1,-1]
value = y(1)-10;
isterminal = 1;
direction = -1;
axis([-5 5 0 120])
a = 0;
y = Z(:,1);
while a < 69
viscircles([0,y(1+a)],10,'Linewidth',10');
pause(0.1);
cla;
a = a+1;
end

 채택된 답변

Walter Roberson
Walter Roberson 2015년 6월 25일

1 개 추천

events = @(t,y) [y(1)-10, 1, -1];
options = odeset('events', events);
[T,Z] = ode45(@bouncing, [0 12], [100 0], options);
axis([-5 5 0 120])
y = Z(:,1);
for a = 1 : 69
viscircles([0,y(a)],10,'Linewidth',10');
pause(0.1);
cla;
end
However, I do not see any reason to assume you will get at least 69 results. It would make more sense to use length(y) instead of 69.

댓글 수: 3

daniel parker
daniel parker 2015년 6월 25일
편집: Walter Roberson 2015년 6월 25일
because i have 69 columns i used it. thank you for your comment but when i try to perform your the code i get this error
Error in deneme (line 3)
[T,Z] = ode45(@bouncing, [0 12], [100 0], options);
did i called the function wrongly ? this is my bouncing function code
function dz = bouncing(t,z) %situation 0
dz = zeros(2,1);
g=10;
dz(1) = z(2);
dz(2) = -g;
second error is that
Error using feval
Output argument "varargout{2}" (and maybe others) not assigned during call to "@(t,y)[y(1)-10,1,-1]"
function deneme
options = odeset('events', @bb_events);
[T,Z] = ode45(@bouncing, [0 12], [100 0], options);
axis([-5 5 0 120])
y = Z(:,1);
for a = 1 : length(y)
viscircles([0,y(a)],10,'Linewidth',10');
pause(0.1);
end
end
function dz = bouncing(t,z) %situation 0
dz = zeros(2,1);
g=10;
dz(1) = z(2);
dz(2) = -g;
end
function [value, isterminal, direction] = bb_events(t, y)
value = y(1)-10;
isterminal = 1;
direction = -1;
end
daniel parker
daniel parker 2015년 6월 25일
thank you :)

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 App Building에 대해 자세히 알아보기

태그

질문:

2015년 6월 25일

댓글:

2015년 6월 25일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by