记录
1.路由器与手机热点或手机USB共享网络的区别
问题描述:
连接TeamViewer时,当电脑用家里的路由器连接wifi时,无法连上远程电脑。
此时如果手机打开热点,或者手机连上家里的wifi然后将手机连上电脑调成USB共享网络。就能连上远端电脑。
在使用git clone时也出现了类似的状况,用git clone无法下载,出现了错误“port:443“。即使将 .gitconfig 中proxy的IP地址改成代理端口,还是需要手机开热点的情况才能下载。但是,手机用USB共享网络就不行了。
手机USB与手机热点的区别究竟是什么?
手机端口的问题吗
2.类的指针作为参数传递进函数,无法访问到类中的数据
3.Python中类作为函数的参数,作为类元素的测试
问题描述:
Python中的函数能不能用类做参数,类中能不能用其他类做类成员。
做这样一个测试:
1 | class A: |
输出的结果为:
从测试结果可以知道,类作为参数传递时,相当于是引用。作为类成员时,也是引用。因此面向对象编程会很方便。
4.Gibbs 现象
问题描述:
做傅里叶变换时,非连续的函数最终得到的是理论上是连续的傅里叶函数,但是计算机一离散就会出问题,会有小波纹。
查资料,写code
5.隐式与显式的区别,条件数与收敛速度
问题描述:
一直没有真正理解显式与隐式的区别,需要好好整理理解下
做一个demo学习,一维信号传递,二维图像,旋转加平移。
6.珠链喷泉(Chain fountain)模拟
问题描述:
看能不能用简单的Mass-Spring模拟出来
模拟方案如下:
数据结构:
将弹簧质点存在链表里,使用链表的原因是为了方便对整条链进行操作。
- 算法
S1. 遍历弹簧质点,计算每个质点受到其他质点作用的力$ f^{spring}_i $,同时给每个质点添加重力$ f^{gravity}_i $。
S2. 对所有质点,计算其距离杯壁的距离$d$,当距离小于厚度$t$时,对质点施加一个指向法向的弹性力。
S3. 更新质点的坐标。进行碰撞处理。对于一直落在地面的粒子,进行重复利用的操作。
- 具体说明:
S1:没有什么具体要注意的。
S2:这一步涉及到质点与多边形的交互问题。处理的方法是,根据多边形的距离场,定义一个排斥项$F=k(d-t)$。这一排斥力项,一方面可以满足能量守恒、动量守恒。另一方面,可以避免很多复杂的处理。
之前一段时间,我在尝试做PolyBridge桥面要考虑桥面与小球的交互时,想通过多边形引入冲量,然后计算各种速度等,但是从实践的结果来看,这种处理方法很不好,小球根本无法稳定的停在桥面上。
从结果来看,这样简单的处理可以获得很好的结果。所以,以后遇到物体与多边形交互的情形,可以用类似的方法处理。
顺便一提的是,过程中也遇到一个问题,如果链的劲度系数不够的话,会出现链条从多边形边缘穿过的现象。这也符合物理实际,真实的链劲度系数应该非常地大。
这种处理方式应该叫penalty-based system[1],这种处理方式的问题在于力太强不稳定,力太弱会出现penetrate的现象。
还有一种方式是projection collision reactions[1],把粒子从碰撞体中拔出来。
S3:这一步有一个注意点,Verlet Integration,在分子动力学模拟中非常常用,Verlet Integration可以通过设置粒子位置来完成碰撞,而带有速度项的更新会引入一些碰撞处理的麻烦,但是,这样一来,物理的真实性就不一定可行了。这里记录它的基本思想。
从式子中可以看到,Verlet积分是local四阶精度,global二阶精度。
除此以外,还有velocity 的Verlet积分,它的形式是:
这种更新形式与Leapfrog方法相似。值得注意的是,时间精度提高一倍,但是加速度的计算开销没有发生变化。
这种方法有两个优点:
一个是time-reversibility,时间回溯性,即向前n步,掉头更新n步可以回头。这一点从
另一个是symplectic nature,辛结构?对于满足辛变换的系统会使用辛算法进行离散求解,辛积分。
这里埋个坑,为什么Euler method是一阶精度,Backward Eular精度是多少,留到问题5中进行解决。
为了让模拟的时间变长,当质点撞到地面的时候,将落在地面上的粒子移到杯子中。连在尾部。这里就体现了链表的优势,操作非常简单。后来想了下,如果用数组做索引也可以。
最终的模拟结果如图:
可以看到,出现了珠链喷泉的现象。从一定程度上反应了,这个现象来源于杯底的作用力。
- 单位向量的求导
在隐式求解Mass-Spring时,需要对单位向量进行求导。求导的公式如下:
$\frac {\partial {\hat x}}{\partial {x}}= \frac {I-{\hat x}{\hat x}^T}{\left |{x}\right |}$
[1] https://en.wikipedia.org/wiki/Verlet_integration
[2] https://en.wikipedia.org/wiki/Leapfrog_integration
7.Hexo图片、公式插入的问题
问题描述:如何在Hexo中插入图片、公式
不得不说,折腾了好一会才折腾好。
- 插入图片
图片插入是需要安装一个插件叫hexo-asset-image。
1 | npm install hexo-asset-image --save |
安装以后,一开始还是无法插入图片。观察以后发现有几个问题。一个是输出信息的时候,“Update linke—>”后面的地址有各种%2E之类的URL编码。这种情况应该是因为文章的名字中有中文(但是Hexo不是支持中文的吗…)。地址中图片名这一块有一个%5C,这个是反斜杠的编码。
之后找了很多教程基本雷同,没能解决问题,但是有一个教程很有意思。他遇到了教程里没有提到的问题,他最终是看hexo-asset-image中index.js的代码解决的。所以模仿了教程的阅读思路,看了下代码,发现应该是
1 | var src = $(this).attr('src').replace('\\', '/'); |
这边有点问题,这个替换没替换成功。所以,看了下md中的图片地址,都是反斜杠连接的,问题应该在这,所以改成了斜杠。问题就没了。
斜杠与反斜杠:反斜杠是win的文件路径。斜杠是unix的文件路径。网络文件的地址都是统一的斜杠。C里反斜杠还有转义的含义。
后来在解决公式问题的时候似乎改了一些东西。之前的问题好像自动消失了。但是可以确定的是之前是斜杠与反斜杠转换这块有问题。
- 插入公式
直接参考教程即可,很清楚。
https://www.youtube.com/watch?v=hdn6mqubh98&list=PLgPpaTsP_3Dq5KsWd6-8wmjNs3ipnvCU3