Plot exactly N bounce of a ball
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{
margin-bottom:0;
}
.everyonelovesstackoverflow{position:absolute;height:1px;width:1px;opacity:0;top:0;left:0;pointer-events:none;}
$begingroup$
I want to plot exactly N bounce of a ball. I'm using DSolve to solve the differential equation and WhenEvent to change the velocity. The code below plots only the first 10 seconds.
DSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k -> k++}]}, y, {t, 0,
10}]
Plot[y[t] /. %, {t, 0, 10}]
differential-equations
$endgroup$
add a comment
|
$begingroup$
I want to plot exactly N bounce of a ball. I'm using DSolve to solve the differential equation and WhenEvent to change the velocity. The code below plots only the first 10 seconds.
DSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k -> k++}]}, y, {t, 0,
10}]
Plot[y[t] /. %, {t, 0, 10}]
differential-equations
$endgroup$
add a comment
|
$begingroup$
I want to plot exactly N bounce of a ball. I'm using DSolve to solve the differential equation and WhenEvent to change the velocity. The code below plots only the first 10 seconds.
DSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k -> k++}]}, y, {t, 0,
10}]
Plot[y[t] /. %, {t, 0, 10}]
differential-equations
$endgroup$
I want to plot exactly N bounce of a ball. I'm using DSolve to solve the differential equation and WhenEvent to change the velocity. The code below plots only the first 10 seconds.
DSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k -> k++}]}, y, {t, 0,
10}]
Plot[y[t] /. %, {t, 0, 10}]
differential-equations
differential-equations
asked May 27 at 10:12
zzsoltzzsolt
233 bronze badges
233 bronze badges
add a comment
|
add a comment
|
2 Answers
2
active
oldest
votes
$begingroup$
You have to declare a discrete variable to count the events
nevent=5; (*number of bounces*)
NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, k[0]== 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k[t] ->k[t] + 1}],
WhenEvent[k[t] == nevent, {te = t, "StopIntegration"}]}, y, {t, 0, 50}, DiscreteVariables -> {k} ]
Plot[y[t] /. %, {t, 0, te}]
$endgroup$
add a comment
|
$begingroup$
For completeness we note that you can solve the differential equation exactly (cf. this post on physics.SE):
ξ = .9;
k[t_] := Floor[Log[ξ, (ξ - 1) t + 1]];
y[t_] := 1/2 ξ^k[t] (t - (ξ^k[t] - 1)/(ξ - 1)) - 1/2 (t - (ξ^k[t] - 1)/(ξ - 1))^2
With[{n = 6},
Plot[y[t], {t, 0, (ξ^n - 1)/(ξ - 1)}, PlotRange -> All]
]
(Note: here $xi$ denotes the coefficient of restitution, and I am working in units where $g=1$ and $v_0=1/2$. See the physics post for the general expression).
$endgroup$
add a comment
|
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "387"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f199173%2fplot-exactly-n-bounce-of-a-ball%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
You have to declare a discrete variable to count the events
nevent=5; (*number of bounces*)
NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, k[0]== 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k[t] ->k[t] + 1}],
WhenEvent[k[t] == nevent, {te = t, "StopIntegration"}]}, y, {t, 0, 50}, DiscreteVariables -> {k} ]
Plot[y[t] /. %, {t, 0, te}]
$endgroup$
add a comment
|
$begingroup$
You have to declare a discrete variable to count the events
nevent=5; (*number of bounces*)
NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, k[0]== 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k[t] ->k[t] + 1}],
WhenEvent[k[t] == nevent, {te = t, "StopIntegration"}]}, y, {t, 0, 50}, DiscreteVariables -> {k} ]
Plot[y[t] /. %, {t, 0, te}]
$endgroup$
add a comment
|
$begingroup$
You have to declare a discrete variable to count the events
nevent=5; (*number of bounces*)
NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, k[0]== 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k[t] ->k[t] + 1}],
WhenEvent[k[t] == nevent, {te = t, "StopIntegration"}]}, y, {t, 0, 50}, DiscreteVariables -> {k} ]
Plot[y[t] /. %, {t, 0, te}]
$endgroup$
You have to declare a discrete variable to count the events
nevent=5; (*number of bounces*)
NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, k[0]== 0,
WhenEvent[y[t] == 0, {y'[t] -> -0.95 y'[t], k[t] ->k[t] + 1}],
WhenEvent[k[t] == nevent, {te = t, "StopIntegration"}]}, y, {t, 0, 50}, DiscreteVariables -> {k} ]
Plot[y[t] /. %, {t, 0, te}]
answered May 27 at 10:41
Ulrich NeumannUlrich Neumann
14.4k7 silver badges23 bronze badges
14.4k7 silver badges23 bronze badges
add a comment
|
add a comment
|
$begingroup$
For completeness we note that you can solve the differential equation exactly (cf. this post on physics.SE):
ξ = .9;
k[t_] := Floor[Log[ξ, (ξ - 1) t + 1]];
y[t_] := 1/2 ξ^k[t] (t - (ξ^k[t] - 1)/(ξ - 1)) - 1/2 (t - (ξ^k[t] - 1)/(ξ - 1))^2
With[{n = 6},
Plot[y[t], {t, 0, (ξ^n - 1)/(ξ - 1)}, PlotRange -> All]
]
(Note: here $xi$ denotes the coefficient of restitution, and I am working in units where $g=1$ and $v_0=1/2$. See the physics post for the general expression).
$endgroup$
add a comment
|
$begingroup$
For completeness we note that you can solve the differential equation exactly (cf. this post on physics.SE):
ξ = .9;
k[t_] := Floor[Log[ξ, (ξ - 1) t + 1]];
y[t_] := 1/2 ξ^k[t] (t - (ξ^k[t] - 1)/(ξ - 1)) - 1/2 (t - (ξ^k[t] - 1)/(ξ - 1))^2
With[{n = 6},
Plot[y[t], {t, 0, (ξ^n - 1)/(ξ - 1)}, PlotRange -> All]
]
(Note: here $xi$ denotes the coefficient of restitution, and I am working in units where $g=1$ and $v_0=1/2$. See the physics post for the general expression).
$endgroup$
add a comment
|
$begingroup$
For completeness we note that you can solve the differential equation exactly (cf. this post on physics.SE):
ξ = .9;
k[t_] := Floor[Log[ξ, (ξ - 1) t + 1]];
y[t_] := 1/2 ξ^k[t] (t - (ξ^k[t] - 1)/(ξ - 1)) - 1/2 (t - (ξ^k[t] - 1)/(ξ - 1))^2
With[{n = 6},
Plot[y[t], {t, 0, (ξ^n - 1)/(ξ - 1)}, PlotRange -> All]
]
(Note: here $xi$ denotes the coefficient of restitution, and I am working in units where $g=1$ and $v_0=1/2$. See the physics post for the general expression).
$endgroup$
For completeness we note that you can solve the differential equation exactly (cf. this post on physics.SE):
ξ = .9;
k[t_] := Floor[Log[ξ, (ξ - 1) t + 1]];
y[t_] := 1/2 ξ^k[t] (t - (ξ^k[t] - 1)/(ξ - 1)) - 1/2 (t - (ξ^k[t] - 1)/(ξ - 1))^2
With[{n = 6},
Plot[y[t], {t, 0, (ξ^n - 1)/(ξ - 1)}, PlotRange -> All]
]
(Note: here $xi$ denotes the coefficient of restitution, and I am working in units where $g=1$ and $v_0=1/2$. See the physics post for the general expression).
answered May 27 at 19:34
AccidentalFourierTransformAccidentalFourierTransform
7,0531 gold badge12 silver badges45 bronze badges
7,0531 gold badge12 silver badges45 bronze badges
add a comment
|
add a comment
|
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f199173%2fplot-exactly-n-bounce-of-a-ball%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown