主要内容gydF4y2Ba

解决运动方程为指挥棒扔进空气gydF4y2Ba

这个例子解决了一个系统的常微分方程模型的动力学接力棒扔到空气中[1]。接力棒是建模为两个粒子质量gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba 和gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba 连接杆的长度gydF4y2Ba lgydF4y2Ba 。巴扔到空中,随后在垂直移动gydF4y2BaxygydF4y2Ba飞机的重力。杆形成一个角度gydF4y2Ba θgydF4y2Ba 水平和质量第一的坐标gydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba )gydF4y2Ba 。有了这个配方,第二大规模的坐标gydF4y2Ba (gydF4y2Ba xgydF4y2Ba +gydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba +gydF4y2Ba lgydF4y2Ba 罪gydF4y2Ba θgydF4y2Ba )gydF4y2Ba 。gydF4y2Ba

系统的运动方程得到了通过应用拉格朗日方程的三个坐标,gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba ,gydF4y2Ba θgydF4y2Ba :gydF4y2Ba

(gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba xgydF4y2Ba ¨gydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba θgydF4y2Ba ¨gydF4y2Ba 罪gydF4y2Ba θgydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba θgydF4y2Ba ˙gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ygydF4y2Ba ¨gydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba θgydF4y2Ba ¨gydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba θgydF4y2Ba ˙gydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba θgydF4y2Ba +gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ggydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba θgydF4y2Ba ¨gydF4y2Ba - - - - - -gydF4y2Ba lgydF4y2Ba xgydF4y2Ba ¨gydF4y2Ba 罪gydF4y2Ba θgydF4y2Ba +gydF4y2Ba lgydF4y2Ba ygydF4y2Ba ¨gydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba +gydF4y2Ba ggydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba θgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba 。gydF4y2Ba

为了解决这个系统在MATLAB®的常微分方程,方程代码到一个函数在调用解算器之前gydF4y2Ba数值gydF4y2Ba。你可以包括所需的函数作为本地功能的文件(如在这里完成),或者拯救他们作为独立,在MATLAB上的一个目录路径命名文件。gydF4y2Ba

代码方程gydF4y2Ba

的gydF4y2Ba数值gydF4y2Ba解算器需要写的方程形式gydF4y2Ba 问gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba ,在那里gydF4y2Ba 问gydF4y2Ba ˙gydF4y2Ba 每个坐标的一阶导数。在这个问题上,解决方案向量有六个部分:gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba 的角gydF4y2Ba θgydF4y2Ba 及其一阶导数:gydF4y2Ba

问gydF4y2Ba =gydF4y2Ba (gydF4y2Ba 问gydF4y2Ba 1gydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba 问gydF4y2Ba 3gydF4y2Ba 问gydF4y2Ba 4gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba ]gydF4y2Ba =gydF4y2Ba (gydF4y2Ba xgydF4y2Ba xgydF4y2Ba ˙gydF4y2Ba ygydF4y2Ba ygydF4y2Ba ˙gydF4y2Ba θgydF4y2Ba θgydF4y2Ba ˙gydF4y2Ba ]gydF4y2Ba 。gydF4y2Ba

使用这个符号,您可以重写运动方程完全的元素gydF4y2Ba 问gydF4y2Ba :gydF4y2Ba

(gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba ˙gydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba ˙gydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba =gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba ,gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba 问gydF4y2Ba 4gydF4y2Ba ˙gydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba ˙gydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba =gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba - - - - - -gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ggydF4y2Ba ,gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba ˙gydF4y2Ba - - - - - -gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba ˙gydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba +gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 4gydF4y2Ba ˙gydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba =gydF4y2Ba - - - - - -gydF4y2Ba ggydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 。gydF4y2Ba

不幸的是,运动方程不符合形式gydF4y2Ba 问gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba 所要求的解算器,因为有几个条款与一阶导数在左边。当这种情况发生时,您必须使用一个质量矩阵来表示方程的左边。gydF4y2Ba

使用矩阵符号,您可以重写运动方程作为一个六方程组使用质量矩阵形式gydF4y2Ba 米gydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba 问gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba 。质量矩阵的线性组合表示一阶导数方程左边的乘积。在这种形态下,方程组变成了:gydF4y2Ba

(gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba - - - - - -gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba 0gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba 1gydF4y2Ba 0gydF4y2Ba 0gydF4y2Ba - - - - - -gydF4y2Ba lgydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 0gydF4y2Ba lgydF4y2Ba 2gydF4y2Ba ]gydF4y2Ba (gydF4y2Ba 问gydF4y2Ba 1gydF4y2Ba ˙gydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba ˙gydF4y2Ba 问gydF4y2Ba 3gydF4y2Ba ˙gydF4y2Ba 问gydF4y2Ba 4gydF4y2Ba ˙gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba ˙gydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba ˙gydF4y2Ba ]gydF4y2Ba =gydF4y2Ba (gydF4y2Ba 问gydF4y2Ba 2gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba 2gydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba 问gydF4y2Ba 4gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba lgydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba 2gydF4y2Ba 罪gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba - - - - - -gydF4y2Ba (gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba )gydF4y2Ba ggydF4y2Ba 问gydF4y2Ba 6gydF4y2Ba - - - - - -gydF4y2Ba ggydF4y2Ba lgydF4y2Ba 因为gydF4y2Ba 问gydF4y2Ba 5gydF4y2Ba ]gydF4y2Ba

从这个表达式,您可以编写一个函数,计算质量矩阵的非零元素。这个函数接受三个输入:gydF4y2Ba tgydF4y2Ba 和解决方案向量gydF4y2Ba 问gydF4y2Ba 需要(你必须指定这些输入,即使他们不习惯在体内的功能),然后呢gydF4y2Ba PgydF4y2Ba 是一个可选的额外输入用来传递参数值。传递函数的参数问题,创造gydF4y2BaPgydF4y2Ba作为一个结构,参数值,然后使用中描述的技术gydF4y2Ba参数化功能gydF4y2Ba通过结构功能作为一个额外的输入。gydF4y2Ba

函数gydF4y2BaM =质量(t, q, P)gydF4y2Ba%提取参数gydF4y2Bam1 = P.m1;m2 = P.m2;L = P.L;g =供货商;gydF4y2Ba%质量矩阵函数gydF4y2BaM = 0 (6,6);M (1,1) = 1;米(2,2)= m1 + m2;米(2,6)= m2 * L * sin (q (5));米(3、3)= 1;米(4,4)= m1 + m2;(4、6)= m2 * L * cos (q (5));米(5,5)= 1;2米(6日)= - l * sin (q (5));4米(6日)= L * cos (q (5)); M(6,6) = L^2;结束gydF4y2Ba

接下来,您可以编写一个函数的右边每个方程的系统gydF4y2Ba 米gydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba 问gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba fgydF4y2Ba (gydF4y2Ba tgydF4y2Ba ,gydF4y2Ba 问gydF4y2Ba )gydF4y2Ba 。像质量矩阵函数,该函数有两个必需的输入gydF4y2Ba tgydF4y2Ba 和gydF4y2Ba 问gydF4y2Ba 和一个可选的输入参数值gydF4y2Ba PgydF4y2Ba 。gydF4y2Ba

函数gydF4y2Badydt = f (t, q, P)gydF4y2Ba%提取参数gydF4y2Bam1 = P.m1;m2 = P.m2;L = P.L;g =供货商;gydF4y2Ba%方程来解决gydF4y2Badydt = [q(2)平方米* L * q (6) ^ 2 * cos (q(5))(4)平方米* L * q(6) ^ 2 *罪(q (5))——(m1 + m2) * g q (6) - g * L * cos (q (5))];gydF4y2Ba结束gydF4y2Ba

解方程组gydF4y2Ba

首先,创建一个结构gydF4y2BaPgydF4y2Ba的参数值gydF4y2Ba 米gydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba 米gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba ggydF4y2Ba ,gydF4y2Ba lgydF4y2Ba 通过设置适当命名的字段的结构。结构gydF4y2BaPgydF4y2Ba传递给质量矩阵和颂歌函数作为一个额外的输入。gydF4y2Ba

P。米1=0。1; P.m2 = 0.1; P.L = 1; P.g = 9.81
P =gydF4y2Ba结构体字段:gydF4y2Bam1: 0.1000平方米:0.1000 L: 1 g: 9.8100gydF4y2Ba

创建一个向量和25分0和4之间的时间跨度集成。当你指定一个向量,gydF4y2Ba数值gydF4y2Ba在请求的时间返回插入解决方案。金宝搏官方网站gydF4y2Ba

tspan = linspace (0、4、25);gydF4y2Ba

设置问题的初始条件。自巴在一个角度向上抛出,使用非零值的初始速度,gydF4y2Ba xgydF4y2Ba 0gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba 4gydF4y2Ba ,gydF4y2Ba ygydF4y2Ba 0gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba 20.gydF4y2Ba ,gydF4y2Ba θgydF4y2Ba 0gydF4y2Ba ˙gydF4y2Ba =gydF4y2Ba 2gydF4y2Ba 。初始位置,接力棒开始于一个直立的位置gydF4y2Ba θgydF4y2Ba 0gydF4y2Ba =gydF4y2Ba - - - - - -gydF4y2Ba πgydF4y2Ba /gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 0gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba ,gydF4y2Ba ygydF4y2Ba 0gydF4y2Ba =gydF4y2Ba lgydF4y2Ba 。gydF4y2Ba

y0 = [0;4;P.L;20;-π/ 2;2);gydF4y2Ba

使用gydF4y2BaodesetgydF4y2Ba创建一个选项结构质量矩阵函数的引用。自解算器预计质量矩阵函数只有两个输入,使用一个匿名函数传递的参数gydF4y2BaPgydF4y2Ba从工作空间。gydF4y2Ba

选择= odeset (gydF4y2Ba“质量”gydF4y2Ba@ (t, q)质量(t, q, P));gydF4y2Ba

最后,解决方程组使用gydF4y2Ba数值gydF4y2Ba这些输入:gydF4y2Ba

  • 一个匿名函数的方程gydF4y2Ba@ (t, q) f (t, q, P)gydF4y2Ba

  • 向量gydF4y2BatspangydF4y2Ba次请求的解决方案gydF4y2Ba

  • 向量gydF4y2Bay0gydF4y2Ba的初始条件gydF4y2Ba

  • 选择结构gydF4y2Ba选择gydF4y2Ba引用质量矩阵gydF4y2Ba

(t, q) =数值(@ (t, q) f (t, q, P), tspan, y0,选择);gydF4y2Ba

阴谋的结果gydF4y2Ba

的输出gydF4y2Ba数值gydF4y2Ba包含运动方程的解决方案在金宝搏官方网站每个请求的时间步。检查结果,情节接力棒的运动。gydF4y2Ba

遍历每一行的解决方案,在每个时间步,情节接力棒的位置。不同的颜色两端的接力棒,这样您就可以看到它的旋转。gydF4y2Ba

图的标题(gydF4y2Ba运动的接力棒,解决了数值的gydF4y2Ba);轴([0 0 25]22日)gydF4y2Ba在gydF4y2Ba为gydF4y2Baj = 1:长度(t)θ=问(j, 5);X = q (j, 1);Y = q (j, 3);xvals = [X + P.L * cos(θ)];yvals = [Y Y + P.L * sin(θ)];情节(xvals、yvals xvals (1) yvals (1),gydF4y2Ba“罗”gydF4y2Baxvals (2) yvals (2),gydF4y2Ba“去”gydF4y2Ba)gydF4y2Ba结束gydF4y2Ba持有gydF4y2Ba从gydF4y2Ba

图包含一个坐标轴对象。轴与标题运动对象的接力棒,解决了数值包含75行类型的对象。gydF4y2Ba

引用gydF4y2Ba

[1]井,敢。gydF4y2BaSchaum轮廓的理论和拉格朗日动力学问题:治疗的欧拉运动方程,汉密尔顿的方程和哈密顿原理gydF4y2Ba。Schaum大纲系列。纽约:Schaum酒吧。有限公司,1967年版。gydF4y2Ba

本地函数gydF4y2Ba

这里列出当地的辅助函数,ODE求解器调用计算解决方案。或者,您可以保存这些函数作为自己的文件在MATLAB上的一个目录路径。gydF4y2Ba

函数gydF4y2Badydt = f (t, q, P)gydF4y2Ba%方程来解决gydF4y2Ba%提取参数gydF4y2Bam1 = P.m1;m2 = P.m2;L = P.L;g =供货商;gydF4y2Ba% RHS方程组gydF4y2Badydt = [q(2)平方米* L * q (6) ^ 2 * cos (q(5))(4)平方米* L * q(6) ^ 2 *罪(q (5))——(m1 + m2) * g q (6) - g * L * cos (q (5))];gydF4y2Ba结束gydF4y2Ba% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -gydF4y2Ba函数gydF4y2BaM =质量(t, q, P)gydF4y2Ba%质量矩阵函数gydF4y2Ba%提取参数gydF4y2Bam1 = P.m1;m2 = P.m2;L = P.L;g =供货商;gydF4y2Ba%设置质量矩阵的非零元素gydF4y2BaM = 0 (6,6);M (1,1) = 1;米(2,2)= m1 + m2;米(2,6)= m2 * L * sin (q (5));米(3、3)= 1;米(4,4)= m1 + m2;(4、6)= m2 * L * cos (q (5));米(5,5)= 1;2米(6日)= - l * sin (q (5));4米(6日)= L * cos (q (5)); M(6,6) = L^2;结束gydF4y2Ba

另请参阅gydF4y2Ba

相关的话题gydF4y2Ba