辛款

这可能是有史以来的第一篇文章的标题“辛款”。如果我今天谷歌这一称号,包括双引号把这两个词放在一起,我没有得到任何打击。但只要谷歌注意到这篇文章,我应该能够看到至少一个打击。

内容

辛是一个不常使用的数学术语,用来描述对象连接在一起顺利。它还与鱼骨头。对我们来说,这是一个相当新的数值方法求解某些特殊类型的常微分方程。

现在通常被认为是世界上第一款电子游戏。它的作者是史蒂夫“鼻涕虫”Russell和他的一些伙伴在1962年麻省理工学院。史蒂夫是一个研究助理教授约翰·麦卡锡,他在1963年从麻省理工学院,斯坦福大学。史蒂夫·麦卡锡来到加州,和他把款。我遇到了史蒂夫,打了很多款,而我是一个斯坦福大学研究生。《跑PDP-1,数字设备公司的第一台电脑。两个宇宙飞船,由玩家控制使用开关在控制台上,彼此空间鱼雷射击。太空飞船和鱼雷围绕中央恒星的轨道。这是一个屏幕截图。
X = imread (“https://blogs.mathworks.com/images/cleve/Spacewar1.png”);imshow (X)
这是一张照片,在2006年的老式电脑公平,史蒂夫和PDP-1。图形显示、模拟cathrode射线管由电脑里,可以看到在史蒂夫的肩膀。银行的开关是底部的控制台。
X = imread (“https://blogs.mathworks.com/images/cleve/Steve_Russell.png”);imshow (X)
一个很棒的Java web applet,巴里和布莱恩·西尔弗曼和瓦迪姆Gerasimov写的,提供了一个模拟PDP-1款机器指令运行。它是可用的在这里。他们的README文件解释了如何使用键盘的开关。你应该先学习如何将宇宙飞船和火火箭为了避免卷入明星和摧毁。

圆发电机

恒星的引力使船只和鱼类在椭圆轨道移动,像鱼雷的路径在屏幕截图。史蒂夫的程序需要计算这些轨迹。当时,没有像MATLAB。机器语言编写的程序,程序的每一行对应一条机器指令。我不认为有任何浮点运算的硬件;浮点数可能是在软件中完成。在任何情况下,这是需要避免评价轨道三角函数的计算。orbit-generating程序会是这样的。
x = 0, y = 32768 L:情节x y负载y转变对2添加存储在x改变符号右移2添加存储在y L
这个项目是做什么的?没有三角函数,没有根,没有乘法或除法。一切都完成了转变和添加。的初始值y,这是2美元^{15}$,作为整体的比例因子。所有的运算包括单个整数寄存器。“右移2”命令将这个寄存器的内容,分2 ^ 2美元,并丢弃任何剩余。注意到的当前值y用于更新x,那么这个新x用于更新y。这个优化指令数量和存储需求,因为没有必要保存当前x更新y。但是,正如我们将要看到的,这也是该方法的数值稳定性的关键。

原始

如果《太空轨道生成器是今天在MATLAB编写的,它将看起来是这样的。有两个轨迹,大小不同的步骤。蓝色的轨迹已经h= 1/4,对应“右移2”。绿色的轨迹已经h= 1/32,对应于“5”的转变。我们不再局限于整数值,所以我改变了2美元的比例因子^ {15}$ $ 1 $。轨迹不确切的圈子,但在一个时期他们回到附近的起点。注意,当前y用于更新x然后是新的x用于更新y
clf轴(1.5 *[1 1 1 1])轴广场bg =“蓝”;h = (1/4 1/32) x = 0;y = 1;线(x, y,“标记”,“o”,“颜色”,“k”)t = 0: h: 2 *π线(x, y,“标记”,“。”,“颜色”,bg) x = x + y;y = y - h * x;结束bg = [0 0] 2/3;结束标题(“原始”)

欧拉方法

将生成一个精确的圆解决这个系统的常微分方程。$ $ {x} _1 \点= x_2 $ $ $ $ {x} _2 \点= -x_1 $ $这可以用矢量化形式为$ $ \点{x} =一个x $ $ $ $ = \ pmatrix {0 & 1 \ cr 1 & 0} $ $最简单的方法计算该系统的近似数值解,欧拉方法,是$ $ x (t + h) = x (t) + h x (t) $ $在矢量化MATLAB代码中,所有的组件x一起更新。这导致螺旋向外的轨迹。减少步长螺旋率下降,但并不能消除它。
clf轴(1.5 *[1 1 1 1])轴广场bg =“蓝”;(0 = 1;1 0];h = (1/4 1/32) x = [0 1] ';线(x (1), (2),“标记”,“o”,“颜色”,“k”)t = 0: h: 6 *πx = x + h * *;线(x (1), (2),“标记”,“。”,“颜色”bg)结束bg = [0 0] 2/3;结束标题(“欧拉”)

隐式欧拉

隐式欧拉方法旨在说明僵硬的方程的方法。这个系统不是僵硬的,但无论如何我们试试隐式欧拉。隐式方法通常涉及非线性代数系统的解决方案在每一步,但这里的代数系统是线性的,所以反斜杠的工作。$ $ (I - h) \ x (t + h) = x (t) $ $,所有组件的数值解同时更新。现在,内螺旋轨迹。
clf轴(1.5 *[1 1 1 1])轴广场bg =“蓝”;我眼睛= (2);(0 = 1;1 0];h = (1/4 1/32) x = [0 1] ';线(x (1), (2),“标记”,“o”,“颜色”,“k”)t = 0: h: 6 *πx = x (I - h *) \;线(x (1), (2),“标记”,“。”,“颜色”bg)结束bg = [0 0] 2/3;结束标题(“隐式欧拉”)

特征值

特征值是理解的关键行为这三个圆的发电机。让我们先从显式欧拉。的轨迹是$ $ x (t + h) = E x (t) $ $ $ $ E =我+ h = \ pmatrix {1 & h \ cr - h & 1} $ $矩阵E美元是不对称的。它的特征值是复杂的,因此,循环行为。特征值满足$ ${\λ}\ lambda_1 = \酒吧_2 $ $ $ $ \ lambda_1 + \ lambda_2 = \ mbox{跟踪}(E) = 2 $ $ $ $ \ lambda_1 \ cdot \ lambda_2 = \ mbox{侦破}(E) = 1 + h ^ 2 $ $行列式大于1和产品特征值的决定因素,所以他们必须在单位圆外。特征值成倍增长的权力,因此所以轨迹。我们可以得出这个结论没有真正找到特征值,即使这将是容易的在这种情况下。隐式欧拉矩阵显式的逆的转置矩阵。$ $ x (t + h) = E ^ {- t} x (t)的特征值$ $ $ E ^ {- t}的特征值的倒数是E美元美元,所以他们都是单位圆内。职权衰减指数,因此这样的轨迹。 Today, the spacewar circle generator would be called "semi-implicit". Explicit Euler's method is used for one component, and implicit Euler for the other. $$\pmatrix{1 & 0 \cr h & 1} x(t+h) = \pmatrix{1 & h \cr 0 & 1} x(t)$$ So $$x(t+h) = S x(h)$$ where $$S = \pmatrix{1 & 0 \cr h & 1}^{-1} \pmatrix{1 & h \cr 0 & 1} = \pmatrix{1 & h \cr -h & 1-h^2}$$ The eigenvalues satisfy $$ \lambda_1 + \lambda_2 = \mbox{trace} (S) = 2 - h^2 $$ $$ \lambda_1 \cdot \lambda_2 = \mbox{det} (S) = 1 $$ The key is the determinant. It is equal to 1, so we can conclude (without actually finding the eigenvalues) $$ |\lambda_1| = |\lambda_2| = 1$$ The powers $\lambda_1^n$ and $\lambda_2^n$ remain bounded for all $n$. It turns out that if we define $\theta$ by $$ \cos{\theta} = 1 - h^2/2 $$ then $$ \lambda_1^n = \bar{\lambda}_2^n = e^{i n \theta} $$ If, instead of an inverse power of 2, the step size $h$ happens to correspond to a value of $\theta$ that is $2 \pi / p$, where $p$ is an integer, then the spacewar circle produces only $p$ discrete points before it repeats itself. How close does our circle generator come to actually generating circles? The matrix $S$ is not symmetric. Its eigenvectors are not orthogonal. This can be used to show that the generator produces ellipses. As the step size $h$ gets smaller, the ellipses get closer to circles. It turns out that the纵横比椭圆的长轴的比例小轴,等于条件数矩阵的特征向量。

辛集成商

辛常微分方程的数值解的方法适用于该类方程来源于守恒量称为汉密尔顿。解决方案的组件属于两个子集,p和q美元,美元的哈密顿函数这两个组件,H (p, q)美元。微分方程是$ $ \点{p} = \压裂{\偏H (p, q)}{\部分q} $ $ $ $ \点{q} = - \压裂{\偏H (p, q)}{\部分p} $ $为我们圆生成器,$ p $和$ $的坐标x和y美元,美元和H是1/2美元半径的平方。$ $ H (x, y) = \ textstyle{\压裂{1}{2}}(x ^ 2 + y ^ 2) $ $哈密顿系统包括模型基于牛顿第二运动定律,F = ma美元。在这种情况下$ p $位置,问美元是速度,H (p, q)是美元的能量。semi-implicit辛方法。他们使用的当前值扩展的想法问更新$ p $美元然后使用$ p $的新值更新问美元。这使得它可以保存的值H (p, q),美元在精确度的方法。款圆生成器是一阶辛方法。半径是常数,在准确性与步长h美元成比例。 For other examples of symplectic methods, including then身体的轨道力学问题,请参见轨道章和orbits.m程序的与MATLAB实验。这是一个屏幕截图显示了太阳系内行星。
X = imread (“https://blogs.mathworks.com/images/cleve/solar2.png”);imshow (X)
史蒂夫·罗素当然不知道他的《使用辛积分器。这个词直到多年后才发明的。意外的是最短的机器语言程序的最佳数值属性。

引用

[1]http://en.wikipedia.org/wiki/Spacewar !款,维基百科文章。[2]http://en.wikipedia.org/wiki/File: steve_russell_and_pdp - 1. png,史蒂夫·拉塞尔和计算机历史博物馆的PDP-1古董电脑公平2006。

使用MATLAB®7.14发表

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。