摘要:
过去有画过常微分方程的向量场,通过向量场能够很形象的看出方程解的状态。 最近过节在家刷视频刷到了3Blue1Brown介绍微分方程的视频。 视频中对钟摆建立的微分方程组通过向量场的形式也很形象的表达了系统状态。 这里用matlab也实现一下,同时对三维情况也做了一个实现。 绘制的方法就是计算方程在二 阅读全文
摘要:
和线性常微分方程组参数拟合类似,我们要用差分代替微分,然后进行插值处理,然后构造最小化函数。 最后用最优化方法处理该函数即可。 这里举个例子,先随便设一个非线性微分方程组,并给定初值: 然后定义最小化函数: 最后用之前介绍的非线性最优化方法解决。 matlab代码如下: clear all;clos 阅读全文
摘要:
BFGS和DFP都是拟牛顿法,和高斯牛顿法不同的地方是不用直接求J'*J矩阵了,而BFGS又比DFP算法有更好的数值稳定性。 算法步骤如下: 1. 给一个待求参数的初始值x(1)。 2. 给定H(1)矩阵为单位阵,并且计算出待优化函数在x(k)处的梯度g(k)。 3. 令d(k) = -H(k)*g 阅读全文
摘要:
比如我们已经有了微分方程模型和相关数据,如何求模型的参数。 这里以SEIR模型为例子,SEIR模型可以参考之前的文章。 一般的线性方程我们可以用最小二乘来解,一般的非线性方程我们可以用LM来解。 这里是线性微分方程组,所以我们采用最小二乘来解。 关键是构造出最小二乘形式,微分可以通过前后数据差分的方 阅读全文
摘要:
python没有原生goto语句,需要安装第三方库。 安装: pip3 install goto-statement 示例: @with_goto def get_response(i): label .begin print(i) site = "XXX" r = urllib.request.R 阅读全文
摘要:
方法就是先对图像按照cellsize设置网格,一般是16*16或32*32。 然后对每个网格做投影变换,最后把所有格子拼起来就行了。 单个格子类似下图: 在实际编程的时候这里没有采用常见的反变换采样法,而是采用了正向变换的方式直接处理,投影公式见这里。 正向变换后得到待采样点集,再对点集重新进行一次 阅读全文
摘要:
计算方法: 1. 两条直线方向向量v1和v2的叉积,得到平行于两条直线的平面v3。 2. 计算v3与第一条直线v1叉积,得到垂直于v3并且过线v1的平面v4,计算面v4与线v2的交点,得到线v2上的点t2。 3. 计算v3与第二条直线v2叉积,得到垂直于v3并且过线v2的平面v5,计算面v5与线v1 阅读全文
摘要:
拿到一张全景图,我们可以做一些变换将其投影到平面上。 比如可以投影到局部立方体平面、可以投影到类似行星效果的平面,还可以投影到类似超广角像头一样的平面。 所有的投影方式基本是一致的,唯一的区别就是视点位置和视场角的大小。 比如我们有下面一张全景图。 全景图宽高比为2:1,可以认为是球坐标系下的the 阅读全文
摘要:
这里置顶一个索引吧,方便所有人查找。 基础与技巧: matlab练习程序(Schur补) matlab练习程序(正交分解) matlab练习程序(GPU加速) matlab练习程序(生成gif图片) matlab练习程序(克莱姆法则解方程) matlab练习程序(读取列不一致的数据) matlab练 阅读全文
摘要:
之前实现过三维椭圆拟合,当时是利用已知点先进行椭球拟合,再进行平面拟合,通过解两个面的相交线得到空间椭圆函数。 如果只知道空间坐标可以用上述的方法,但是通常我们获得空间点时会附带时间信息,因此我们可以认为三个分量都是时间的函数,来进行拟合。 函数如下: 由于是非线性方程组,下面我们只需要用高斯牛顿法 阅读全文