请大佬看下这一题!程序出不来图,谢谢谢谢!
mathematica吧
全部回复
仅看楼主
level 2
屠木鱼 楼主
有一球以10m/s的速度以水平线以45°向斜上方抛去,该球着地后仍保持原方向弹跳,但速度是原来的90%,以后每着地一次,速度都比上次减少 10%,求此球在第三次着地前的轨迹。
dt = 0.01;
t = 0
g = 9.8;
v = 10;
t0 = 0;
i = 1;
x = 0;
y = 0;
ball = {{0, 0}};
While[i < 4,
t = t + dt;
t0 = t0 + dt;
x = x + v*Cos[Pi/4]*dt;
y = v*t0*Sin[Pi/4] - 0.5g*t0^2;
ball = Append[ ball, {x, y}];
If [Abs[y] ≤ 0.005, i = i + 1; t0 = 0; v = v*0.9;]]
(*ListPlot[ball, PlotJoined -> True, PlotStyle -> {
PointSize[0.02], RGBColor[1, 1, 0]}]*)
ListPlot[ball, PlotStyle -> {PointSize[0.02], RGBColor[1, 1, 0]}]
2020年06月07日 03点06分 1
吧务
level 10
话说WhenEvent帮助文档的范例里就有个回弹球
2020年06月07日 05点06分 2
大佬能指下路吗?是在百度里搜那个什么帮助文档吗?
2020年06月07日 13点06分
@屠木鱼 Mathematica自带帮助文档里的案例
2020年06月07日 19点06分
大佬,是我这版本太低的事吗,help里面搜不出来whenevent.
2020年06月08日 04点06分
@屠木鱼 WhenEvent 9.0版本就有
2020年06月08日 13点06分
level 3
这不用Module做可惜了
2020年06月10日 21点06分 3
level 4
v0 = 10;
g = 9.8;
\[Theta]0 = \[Pi]/4;
{sol, times} =
Reap@NDSolve[{x''[t] == 0, x'[0] == v0 Cos[\[Theta]0], x[0] == 0,
y''[t] == -g, y'[0] == v0 Sin[\[Theta]0], y[0] == 0,
WhenEvent[
y[t] == 0, {Sow[t], x'[t] -> 0.9 x'[t],
y'[t] -> -0.9 y'[t]}]}, {x, y}, {t, 0, 3 2 v0 Sin[\[Theta]0]/g}]
ParametricPlot[
Evaluate[{x[t], y[t]} /. First@sol], {t, 0, times[[1, 3]]}]
2020年06月14日 05点06分 4
1