[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]"
Walter Roberson
Walter Roberson 2015 年 6 月 25 日
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 ExchangeApp Building についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by