浏览器运行环境异常,请检查是否开启本站的JavaScript权限或下载最新版浏览器
Logo
综合
文章
圈子
帮助
签到
创作
极速下载
资源区
学习区
专栏区
无标题文章
按赞
反对
评论
收藏
分享

Wolfram Mathematica 混沌摆模拟以及可视化

学习区-科研
0
4.3k
Clear["Global`*"]; (*定义参数*) {g, l1, l2, m1, m2, tt} = {9.8, 1, 1, 1, 3, 100}; (*定义拉格朗日方程*) L = (m1 + m2)/2 l1^2 (a'[t])^2 + m2/2 l2^2 (b'[t])^2 +     m2*l1*l2*a'[t]*b'[t]*Cos[a[t] - b[t]] + (m1 + m2)*g*l1*Cos[a[t]] +     m2*g*l2*Cos[b[t]]; (*定义微分方程以及合适的边界条件*) funcs = {D[L, a[t]] == D[D[L, a'[t]], t],     D[L, b[t]] == D[D[L, b'[t]], t], a[0] == 3 Pi/4, b[0] == Pi/6,     a'[0] == 0, b'[0] == 0}; (*微分方程的100精度数字解*) sov = NDSolve[funcs, {a, b}, {t, 0, tt}, PrecisionGoal -> 100][[1]]; (*随时间变化的角度*) a = a /. sov; b = b /. sov; (*整个系统的动量,机械能*) T[t_] := (m1 + m2)/2 l1^2 ((D[a[x], x]) /. x -> t)^2 +     m2/2 l2^2 ((D[b[x], x]) /. x -> t)^2 +     m2*l1*l2*((D[a[x], x]) /. x -> t)*((D[b[x], x]) /. x -> t)*     Cos[a[t] - b[t]]; V[t_] := -(m1 + m2)*g*l1*Cos[a[t]] - m2*g*l2*Cos[b[t]]; Energy[t_] := T[t] + V[t]; (*m1和m2的坐标*) p1[t_] := {l1*Sin[a[t]], -l1*Cos[a[t]]}; p2[t_] := {l1*Sin[a[t]] + l2*Sin[b[t]], -l1*Cos[a[t]] - l2*Cos[b[t]]}; (*可视化模块*) result = Animate[{Show[     Graphics[Circle[{0, 0}, 1], PlotRange -> {{-2, 2}, {-2, 2}},       AxesOrigin -> {0, 0}, Axes -> True, Frame -> False,       ImageSize -> Medium],      Graphics[{Line[{{0, 0}, p1[u], p2[u]}], Disk[p1[u], m1/15],        Disk[p2[u], m2/15]}],      If[u < 3,       ParametricPlot[p2[t], {t, 0, u},        ColorFunction ->         Function[{x, y, u}, f = Hue[0.58, 0.58, 0.8, u]]],       ParametricPlot[p2[t], {t, u - 3, u},        ColorFunction ->         Function[{x, y, u}, f = Hue[0.58, 0.58, 0.8, u]]]]],     ParametricPlot[{{t, T[t]}, {t, V[t]}, {t, Energy[t]}}, {t, 0, u},      ImageSize -> Medium, AspectRatio -> 0.75,      PlotRange -> {{0, u}, {-25, 30}}]}, {u, 0.01, tt, 0.01},    AnimationDirection -> Forward, RefreshRate -> 180,    DefaultDuration -> tt]
5条评论
我愣住了
有人要文中的软件wolfram mathematica吗,如果有需求我再发个post
太高端,完全没懂
您好:
  • Clear[“Global*”]; 里为什么用中文引号?</li><li>NDSolve::ndnum: 在 t == 0. 处碰到一个导数的非数值量.
  • ReplaceAll::reps: {<<1>>} 既不是替换规则列表,也不是一个有效的分派表,因此无法用来替换.
  • $RecursionLimit::reclim2: 在 a/. <<1>> 计算过程中超过 1024 的递归深度.

在Wolfram Mathematica 12.3.1 for Mac OS X ARM (64-bit) (July 24, 2021)
schwarz251: 这个中文括号我还真没注意到。。抱歉,可能是复制黏贴出问题了?我会在下一个post上面发出我的混沌摆nb文件出来,使用的是wolfram mathematica 12.1版本,理论上来说应该是可以直接运行的。
schwarz251: 您好,我已经发布了源文件,您可以访问我的空间查看我最新的post。在写这个回复的时候文章在审核,所有不能直接贴链接上来
感谢分享
(#°Д°)你到底了哦
logo
有维咔App就够了
随时随地发现资源,免去网页端烦恼广告
打开App