三个球的交点坐标(三球交会定位)
By 苏剑林 | 2025-01-28 | 15404位读者 | 引用前几天笔者在思考一个问题时,联想到了三球交点问题,即给定三个球的球心坐标和半径,求这三个球的交点坐标。按理说这是一个定义清晰且简明的问题,并且具有鲜明的应用背景(比如卫星定位),应该早已有人给出“标准答案”才对。但笔者搜了一圈,发现不管是英文资料还是中文资料,都没有找到标准的求解流程。
当然,这并不是说这个问题有多难以至于没人能求解出来,事实上这是个早已被人解决的经典问题,笔者只是意外于似乎没有人以一种可读性比较好的方式将求解过程写到网上,所以本文试图补充这一点。
特殊情形
首先,设三个球的方程分别是
球1:(x−o1)2=r21球2:(x−o2)2=r22球3:(x−o3)2=r23
脑洞大开:非线性RNN居然也可以并行计算?
By 苏剑林 | 2023-09-26 | 64754位读者 | 引用近年来,线性RNN由于其可并行训练以及常数推理成本等特性,吸引了一定研究人员的关注(例如笔者之前写的《Google新作试图“复活”RNN:RNN能否再次辉煌?》),这让RNN在Transformer遍地开花的潮流中仍有“一席之地”。然而,目前看来这“一席之地”只属于线性RNN,因为非线性RNN无法高效地并行训练,所以在架构之争中是“心有余而力不足”。
不过,一篇名为《Parallelizing Non-Linear Sequential Models over the Sequence Length》的论文有不同的看法,它提出了一种迭代算法,宣传可以实现非线性RNN的并行训练!真有如此神奇?接下来我们一探究竟。
求不动点
原论文对其方法做了非常一般的介绍,而且其侧重点是PDE和ODE,这里我们直接从RNN入手。考虑常见的简单非线性RNN:
xt=tanh(Axt−1+ut)
思考:两个椭圆片能粘合成一个立体吗?
By 苏剑林 | 2019-07-21 | 64868位读者 | 引用一阶偏微分方程的特征线法
By 苏剑林 | 2017-12-07 | 87436位读者 | 引用用二次方程判别式判断正定矩阵
By 苏剑林 | 2013-12-24 | 61992位读者 | 引用快要学期末了,不少学霸开始忙碌起来了。不过对非学霸的我来说,基本上每天都是一样的,希望把自己感兴趣的东西深入研究下去,因为我觉得,真正学会点有用的东西才是最重要的。数学分析和高等代数老师都要求写课程论文,我也写了我比较感兴趣的“欧拉数学”和“超复数研究”,之后会把这部分内容与大家分享。
虽然学期已经接近尾声了,但是我们的课程还没有上完。事实上,我们的新课一直上到十八周~随着考试的接近,我们的《高等代数》课程也已经要落幕了。最近在上的是二次型方面的内容,讲到正定二次型和正定矩阵。关于正定矩阵的判别,教科书上提供了两个判别方法,一个是基于定义的初等变换,另外一个就是主子式法。前者无可厚非,但是后者我似乎难以理解——它虽然是正确的,但是它很丑,计算量又大。我还没有想清楚主子式法到底有什么好的?在我看来,本文所探讨的基于二次方程判别式的方法才是简单、快捷的。
正定二次型
所谓正定二次型,就是关于n个变量x1,x2,...,xn的二次齐次函数,只要xi不全为0,它的值恒为正数。比如
2x21+x22−2x1x2=x21+(x2−x1)2
这是一个比较简单的正定二次型,多元的还有
5x21+x22+5x23+4x1x2−8x1x3−4x2x3
当Matlab遇上牛顿法
By 苏剑林 | 2013-05-22 | 61823位读者 | 引用牛顿法是求方程近似根的一个相当有用而且快捷的方法,我们最近科学计算软件课程(Matlab)的一个作业就是编写求方程近似解的程序,其中涉及到牛顿法。我们要实现的目标是,用户输入一道方程,脚本就自动求出根来。这看起来是一个挺简单的循环迭代程序,但是由于Matlab本身的特殊性,却产生了不少困难。
Matlab是为了数值计算(尤其是矩阵运算)而生的,因此它并不擅长处理符号计算。这就给我们编程带来了困难。在网上随便一搜,就可以发现,网上的Matlab牛顿法程序都是要求用户同时输入方程及其导函数,这显然是不方便的,因为Matlab本身就具备了求导功能。下面我们来分析一下困难在哪里。
我们要实现的最基本功能是定义一个函数,然后可以根据该函数求具体的函数值,并且自动求该函数的导数,接着求导数值。这些看起来很基本的功能在Matlab中却很难调和,因为Matlab的“函数”定义很广,一个具有特定功能的M文件叫“函数”,一个运算式f(x)也可能是一个函数,显然后者是可以求导的,前者却不行,所以Matlab一刀砍——不能对函数求导!!
薛定谔方程的启发式推导
By 苏剑林 | 2012-12-11 | 72763位读者 | 引用===聊聊天===
上个月在网上买了三本相对论教材和一本《量子力学概论》,本打算好好研究下相对论的数学体系,可是书到了之后,我却深深地被量子力学吸引住了,不停在研读。而且在研究量子力学的同时,我的线性代数和微分方程知识也增加了不少,这确实是我没有想到的。在我看来,不管是狭义相对论还是广义相对论,它本质上都是一种几何理论,你总要想象从一个参考系观测会发生什么,然后从另外一个参考系又会看到什么;而量子力学虽然对我来讲一切都是新鲜的,但是它的数学性比较强,主要是微分方程的求解和理解。我想这也是我对量子力学更感兴趣的原因吧,因为我善于代数而不善于几何。
量子力学中让我最神往的内容莫过于费曼所发明的路径积分形式。资料记载费曼用他发明的方法在一个晚上就算出了别人几个月才算出来的结果,可见路径积分形式的优越性。当然,我也清楚,这个路径积分并不简单,它涉及到了泛函积分这一非常高深的内容,对于我这个连数学分析都还没有学好的小孩来说,泛函是难以触摸的。不过,我还是尽量想办法向它靠近。为此,我还浏览到了一些不少让人兴奋的内容,比如薛定谔的方程的推导、力学-光学类比、雅可比方程等等。
很遗憾,在正统的量子力学教材中,这些让我很兴奋的内容却鲜有涉及,有的话大多数都是一笔带过的感觉。多数量子力学不会讲到路径积分,就算有也只是作为附录。对于薛定谔方程的推导,也没有涉及到。这也让我养成了一个习惯意识:书本最有趣的东西往往都是在附录。所以对于教科书,那么写得正正式式的内容我一概没有兴趣,那些附录内容才是我最喜欢读的。可是,那些让人兴奋的内容却不一定是很难的,就像下面的薛定谔方程的启发式推导,它不仅不难,而且易于理解。
===薛定谔方程===
在量子力学诞生之前,科学家已经通过实验发现光既有波动性也有粒子性,而德布罗意提出也同时具有波动性和粒子性,这些都奠定了量子力学的基础。根据量子论,一个光子的能量可以由E=hν=ℏ(2πν),其中ν是频率,ℏ=h2π,h是普朗克常数,习惯记ω=2πν,即E=ℏω。
最近评论