当前位置: 首页 > news >正文

在Mathematica中使用WhenEvent求解微分方程

WhenEvent[event,action]指定当事件event触发时,方程在 NDSolve 及相关函数中执行的操作action。

模拟一个每次弹起后保持95%速度的弹跳球

NDSolve[{y''[t] == -9.81, y[0] == 5, y'[0] == 0, WhenEvent[y[t] == 0, y'[t] -> -0.95 y'[t]]}, y, {t, 0, 10}]; Plot[y[t] /. %, {t, 0, 10}]

模拟沿阶梯弹跳下落的球

c = .75;
sol = NDSolve[{y''[t] == -9.8, y[0] == 13.5, y'[0] == 5, a[0] == 13, WhenEvent[y[t] - a[t] == 0, y'[t] -> -c y'[t]], WhenEvent[Mod[t, 1], a[t] -> a[t] - 1]}, {y, a}, {t, 0, 8}, DiscreteVariables -> {a}];
Plot[Evaluate[{y[t], a[t]} /. sol], {t, 0, 8}, Filling -> {2 -> 0}]

绘制球体的动能、势能及总能量曲线图

kin[v_] := .5 v^2;
pot[y_] := 9.8 y;
energy[y_, v_] := kin[v] + pot[y];
Plot[Evaluate[{kin[y'[t]], pot[y[t]], energy[y[t], y'[t]]} /. sol], {t, 0, 8}]

在方形盒子中,建立球体碰撞侧壁时改变方向的运动模型

sol = NDSolve[{x'[t] == a[t], y'[t] == b[t], x[0] == 0, y[0] == 0, a[0] == 1, b[0] == Rationalize[Sqrt[2], .01], WhenEvent[x[t]^2 == 1, a[t] -> -a[t]], WhenEvent[y[t]^2 == 1, b[t] -> -b[t]]}, {x, y}, {t, 0, 100}, DiscreteVariables -> {a, b}];ParametricPlot[{x[t], y[t]} /. sol, {t, 0, 100}, Frame -> True, FrameTicks -> None, PlotRange -> 1, Axes -> False]

当初速度向量为无理数时,系统不再存在周期性解

sol = NDSolve[{x'[t] == a[t], y'[t] == b[t], x[0] == 0, y[0] == 0, a[0] == 1, b[0] == Sqrt[2], WhenEvent[x[t]^2 == 1, a[t] -> -a[t]],WhenEvent[y[t]^2 == 1, b[t] -> -b[t]]}, {x, y}, {t, 0, 100}, DiscreteVariables -> {a, b}];
ParametricPlot[{x[t], y[t]} /. sol, {t, 0, 100}, Frame -> True, FrameTicks -> None, PlotRange -> 1, Axes -> False]

http://www.xdnf.cn/news/737155.html

相关文章:

  • java代码性能优化
  • MODIS火点数据下载
  • 人工智能时代Agent与MCP区别联系
  • 001在线拍卖系统技术揭秘:构建高效交互的竞拍平台
  • JS浮点数精度问题
  • WebFuture:网站部分图片突然无法显示的原因
  • 身份证发给别人怎么加水印?赛文奥特曼身份证添加水印教程
  • 大模型应用开发第九讲:RAG(检索增强生成)流程:用户查询→检索→生成响应
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - 通用函数
  • xilinx位置约束
  • SAR ADC 比较器噪声分析(二)
  • gst_pad_query_default以及gst_pad_event_default
  • 2024PLM系统实施案例:天水天轲零部件
  • Sigma-Aldrich3D细胞培养支架有哪些类型?
  • LoRA:高效微调预训练模型的利器
  • DeepSeek-R1 重磅升级,智能体验再进化!
  • shell脚本的两种循环及状态返回值的区别及对比
  • 软件架构基础
  • ollama国内安装使用
  • 时间序列数据如何转化为动态图实践笔记
  • XSS跨站脚本攻击
  • 特伦斯 S75:重塑钢琴体验的数码钢琴之选
  • 基于教育数字化背景:人工智能技术支持下的教师专业发展路径
  • Baklib智能推荐赋能内容中台升级
  • 低频 500kHz vs 高频 1MHz,FP6291C与FP6291升压芯片应用在不同场景该怎么选择?
  • Spring生命周期中织入代理逻辑
  • 大模型-attention汇总解析之-MHA
  • 电工基础【2】自锁、互锁、正反转电路
  • leetcode动态规划—完全背包系列
  • 【论文阅读】DanceGRPO: Unleashing GRPO on Visual Generation