用Excel手搓傅里叶级数(2)

3. 傅里叶级数

上一节,我们验证了 不同周期的正弦函数之间、不同周期的余弦函数之间、正弦函数和余弦函数之间都是正交的,因此可以在傅里叶级数展开时作为 基底。不同幅度的这些函数相加,就可以收敛于某个周期函数。哪个周期的正弦函数、哪个周期的余弦函数 所对应的幅度,也即乘以这些函数的系数,是我们要求取的傅里叶系数。

公式大概长得像下图这样。

C:\Users\young\AppData\Local\Temp\WeChat Files\cb13597322042933dd673dde58f466b.jpg

其中a0是常数项,也可以视为cos(0),(根据不同定义)可能乘以一个系数;

与余弦对应的系数是 ai ;

与正弦对应的系数是 bi ;

3.1 傅里叶级数,展开,验证

书中的例子,需要展开为傅里叶级数的函数周期为T=1。

(1)原理,以及准备各个函数对应的数据

根据T=1

以及 角速度ω=2π/T

ω=2π/T=2π

以上备用。

我们可以跳过 傅里叶系数是待展开函数在各个基底上的映射 这一原理,查到公式如下。

上式中,n与i同义,指不同角速度/周期的正弦或余弦所对应的一个系数。我们能够注意到 an与余弦cos对应,bn与正弦sin对应,其余形式完全相同。

上式中的方框,在cos和sin之后的那两个方框,内容是 n*ω*t。

把上面备用的

ω=2π

T=1

代入到上面两个式子中,以bn为例得到下式。

an的形式非常类似,仅把sin改为cos。

得到上述公式,距离在Excel中实施只差一步。

这个定积分形式与上一篇中我们所见到的 黎曼和 形式求不同周期的、正弦函数、余弦函数间的相关性的公式非常相似。相似到不过是换了函数而已。验证基底相关性为0时,我们所用的两个函数分别是sin,cos之类的,现在用的是 f(x)和sin。再乘以一个系数,这里是2。

我们回到上一篇中的下面这组数据,对它做傅里叶展开。

这样,我们得到待展开的函数对应的数据。

在上一篇中,我们已经求出 角度、弧度、sin(t)、cos(t)。

按同样的方法,保留角度、弧度,我们求出 sin(2π*n*x)和cos(2π*n*x),其中n取1,2,3,4,5。

如下图所示,是当n=3时,以弧度作为x,绿框所在的这一列是sin(2π*n*x)。

这样,我们得到共10列不同周期的正弦和余弦函数对应的数据。

常数项,即 a0,书中的作法是 常数项也是个函数,其数据为值为 y=SQRT(2)/2 ,即0.707左右,的直线。与其他教材上 a0的定义不同,结果是等价的。

这样,我们有了常数项的函数所对应的数据。

现在,我们有了

待展开的函数 所对应的数据 (波);
10列不同周期的正弦和余弦函数 所对应的数据;
常数项的函数 所对应的数据。

以上,在Excel中共12列。

(2)傅里叶系数

我在Excel中隐藏无关的行和列,仅展示 b3这一系数的求取过程。

第一步,求得每一行,即黎曼和中的每个横坐标变化所对应的y。如下图所示。

其中G6是此前做好备用的 sin(2π*3*x)的第6个数据,
N6是待展开函数 的第6个数据,

这一行的结果暂存在b3列的S6单元格。

乘以1/1000,是因为我把整个一周期内的波形等分为1000份,因此每一行对黎曼和的贡献是1/1000。

如果忘了黎曼和,可以回顾下图,在上一篇中出现过。当时用于求内积,这里用于求傅里叶系数。

把b3所有行累加,再根据下图中的公式乘以2。

得到b3这个系数的值,如下。

值为0.424400615。

用同样的方法求出11个系数。

(3)验证

我们只使用当n=1时sin(2π*x)和cos(2π*x)这两个三角函数,因此傅里叶只涉到 a1,b1,以及常数项。这样得到的结果,在下图中表示为 “傅里叶 I”这一列。

“傅里叶 I”这一列的第一行,那个公式的含义从左向右为

蓝色 b1参数* 红色C3 正弦函数 +
紫色a1参数*D3余弦函数+
粉色a0*M3常数项函数。

验证一下对不对。如下图所示,蓝色是待展开的函数,橙色是“傅里叶 I”展开。

看起来好像对,又好像不太对。两个函数看起来有点像,但是区别又很大。

我们把更精细的傅里叶级数也加进来,得到下图。

其中绿色的,是n=1至n=5 傅里叶 V 级数展开的结果,有点像了。而且与刚刚的傅里叶 I级相比,肉眼可见像得多了。

但是我们可能会注意到一个问题,从I级到V级,一共应该有5条曲线,为什么这里只画了3条呢。有帖子提到方波(可以扩大范围至奇函数)的所有sin参数(和cos中的偶数周期倍数)非常小,小到接近0。所以,在这个例子中,每两级傅里叶级数波形极其相似,I被II覆盖,III被IV覆盖了。

不仅理论如此,在实践的数据中我们也可以看到,除了b1,b3,b5这三组,其余的都贡献微小。

肉眼看到的结果不足够有说服力,我们可以再求 均方差。方差越大,展开得到的波形与原函数就越不相似。

先求出每一行的差。我隐藏无关的行,在Excel中看起来如下图所示。

然后得到 差的平方。

最后对 差的平方 求均值,得到均方差。

对I,III,V三个级别的傅里叶展开求均方差。如下图所示,我们能够看到均方差越来越小。这表明,傅里叶级数越高,得么的曲线与原函数越接近。与我们肉眼的感觉是相同的。

(4)换周期,换采样间隔,换原函数

调程序的一大乐事,是在程序写完以后,修改代码,测试不同效果,或者反复程序,居然还不崩溃。在Excel里手搓傅里叶级数也一样,折腾各种变化很有意思。

书里的周期是1,我们换一个。

根据周期T=1求得ω,并把T和ω代入公式,得到下式。

制备出各个周期的正弦函数和余弦函数,备用。

制备出各个傅里叶系数,备用。

每一行。

上图中,每行的贡献为 1/1000*T = 1/1000*2π.

求黎曼和。

验证一下。

周期不同,看不出来什么区别,不够炫酷。

换采样间隔吧。1000份真是很多,翻页需要好久,如果在Excel中不隐藏数据行的话。改为20等份。

以下,周期使用 2 pi,未展开说明。

穷举弧度时,要说明等分为20而不是1000。

求傅里叶系数时,每行贡献1/20而不是1/1000。

其余不变。绘图验证,只有20个点,瘦骨嶙峋,果然看起来漂亮很多。

换个原函数。修改“波”这一列数据,改变原函数。瞬间Excel就给出新的傅里叶展开。

再换个原函数。

再换。

这个过程非常过瘾。改一下波形数据,对应的傅里叶级数就同时跟着变化。夫子步亦步,夫子趋变趋。

4. 待续

还可以有些展开,也非常有趣。不过,那些已经不应该在 用excel手搓傅里叶级数 这个故事中了。我们在以后的故事里再继续。

(1)傅里叶变换,模和幅角

谐波的强度为 sqrtp(a^2+b^2)
幅角为 cos (arctan (-b/a))

因此,可以把每对 cos 和 sin 转换为 只用cos。

这样就把原函数变换到了频域上,完成了傅里叶变换。

仍然可以用Excel求出(不是无穷级数的)结果,与其他工具计算的结果对比。

(2)用Geogebra绘制动图,圆周与傅里叶级数展开,本轮和均轮

我们可以使用Geogebra绘制出 红色大圆之上的绿色中圆之上的蓝色小圆上某个点的轨迹。红、绿、蓝三个圆的周期和半径不同,对应了不同的傅里叶级数。

改变横坐标,可以看到红、绿、蓝三个圆转动导致纵坐标描绘出方波。在红圆的圆心,我们可以看到蓝紫色的“行星”轨迹,像火星一样忽快忽慢,有时倒退。

怎么把这个效果做出来呢?

(3)快速傅里叶变换FFT

因为FFT求系数数的时间复杂度更低一些,所以有可能在Excel中手搓出相当多的级数而工作量可以容忍。

不过,如上所说,用Excel手搓傅里叶级数这一场的大幕落下,那些都应该在另一些故事中再继续。

用Excel手搓傅里叶级数(1)

1. 方程 vs. 数据,解析式 vs. 数值计算

遇到过不止一位同学讨论的时候提到:如果要对这些数据处理—比如求导—是不是需要先求出这些数据的公式来,用拟合?

不。

函数,是从一组量到另一组量的映射。这并不意味着映射需要由公式来表达。典型的,在数字电路中,我们只需要直值表就可以完成映射,逻辑表达式并非必须。同样,只要有了数据,有了横坐标和纵坐标的对应,并不一定需要方程就能表达一种量和另一种量的映射或约束关系。如果不求解析解的话,数值计算并不需要解析式。

比如下面这组数据。

我们并不需要总结它是锯齿波的变形,就可以做针对它的数值计算。事实上,它也并不是锯齿波的变形,而是我随手瞎写的。随便再改一下,就可以换成另一个波形,两种波形之间没什么共性。

一直琢磨如何向同学们解释这个问题能更直观一些,看到书里的实例感觉很适合。还是这本书《程序员数学》 https://book.douban.com/subject/35689348/,用 python 讲解的。

书里的例子是用 python 做已知波形/数据的傅里叶级数。我用Excel重现一遍,再略加扩展。

数据就是数据,不需要转为公式,就可以做各种计算。计算的本质,是对数据的加工,公式作为模型只要在头脑里或者纸上就可以了,代码里不见得能看得见。

以上两组数据中的任意一组,就是Excel中的一列,我们称为 波。

2. 验证函数正交

在做这个波形的傅里叶级数以前,我们首先验证一个结论:傅里叶级数中的各个三角函数是正交基。即使不验证个结论,靠公式推导,或者我们就简单相信(数学课上我常有的状态,我信了还不行么)了,后面的工作也并不影响。不过这个工作也可以由Excel完成,不必更吓人的工具,非常简单,所以不妨拿来熟悉一下Excel做傅里叶级数的路数。

傅里叶级数中的各个三角函数是正交基,这个论断中有两点需要展开。

(1) 各个三角函数是哪些三角函数。包括 正弦 和 余弦。更具体地说,包括某个频率(一般写作ω,即omiga,角速度)的正弦和余弦,以及这个频率倍数的正弦和余弦。

比如sin(1 t),cos(1 t),sin(2t),cos(2t), sin(3t),cos(3t)……

或者sin(2πωt),cos(2πωt), sin(4πωt),cos(4πωt), sin(6πωt),cos(6πωt) ……

这些三角函数的参数怎么确定,我们后面再细说。

(2)什么是正交。正交是指两个基相乘的结果是0,具体什么意思我们不展开。

例如sin(t)和cos(t)相乘的结果如果是0,那么我们说sin(t)和cos(t)是正交的。

有的同学会说,sin(t)和cos(t)相乘,这不还是公式么,并不是仅使用数值判定啊?

任何两个函数,如果它们相乘的结果是0,我们说这两个函数是正交的。两个函数,如果没有公式,如何相乘呢。

(粗糙的)原理是 通过两个函数的内积,像下图这样。

这还是公式,因为里面有 f(x)g(x)这样的表达式。在离散的情况下,它可以等价于下面的(黎曼和)形式。

其中 f(xi) 不是函数表达式,而是执行以下步骤:
对于f这个函数,在一个周期范围内;
查找第i个x;
查表第i个x所对应的y;

这个y就是 f(xi)。

在上一节的表格中,我们增补x的序号,作为最左边的一列。在下图中,列x中的10是i的取值(x的值不重要,或者等于i),波这列的11是f(xi)即f(x11)的值。

类似地,g(xi)也是作数据表示函数。

这里的a和b是我们用于计算的数据的下标的上界和下界,假设为一个周期。N,是把a到b等分为N份。

所以这个等式的意思是

函数f的每一行 * 函数g的每一行 * 1/N;

把上面这句的所有结果相加。

我们 sin(t)*cos(t) 为例,操作步骤如下。

(1)角度

建立一列,标题为角度。A2即第一个单元格,手写1。A3用公式 =A2+1。复制这个公式,至第361行,这样得到角度1~360。

隐藏其中大多数行,为了以后操作方便,不然每次增加或修改数据需要连续翻页几次。

得到以下效果。增加列或修改数据的时候,跨越“隐藏”的7~360行粘贴公式,数据更新也会作用于隐藏的部分。

(2)弧度

新建一列,名为弧度。B2值为 =A2/360*2*PI()。复制这个单元格到整列,如下图所示。我们可以看到,最大弧度6.28,大约 2π.

(3)sin(t)

新建一列,名为sin。C2值为=SIN(B2),复制至整列。

取消隐藏的话,可以画出C列数据,或者画A-C的XY散点图。旁证我们的数据是正确的。

不取消隐藏的话,按下图操作,就可以 在隐藏部分数据的情况下绘出完整的图表了。

(4)cos(t)

用类似sin的方法得到cos列。

(5)内积 <sin(t), cos(t)>

函数正交与否的判定,等价于内积。内积为0的两个函数,相互垂直。

求内积,应用黎曼和公式。

求和即内积即正交与否,结果为3.81699E-17,即0.00000000000000003817,
非常接近于0。旁证了 sin(t) 和 cos(t)正交。

我们虽然用到了黎曼和公式,但是在数值计算的过程中并没有用 解析表示的函数,而是把数据本身作为自变量和函数值,把映射视为函数。

(6)sin(t)和sin(2t),sin(t)和cos(2t),cos(t)和cos(2t)……的内积

所有不同的函数,无论正弦与余弦之不同,还是角频率不同,我们都视为不同的函数。这些不同的函数两两相乘,结果都应为0。

以上组合相当之多,我们挑几个验证。

我们先创建 sin(2t)和cos(2t),像下面这样。只有每列一个单元格是手写的,其余全来自复制。事实上,连B2我也不是手写的,而是在写Excel公式的时候用鼠标点击的。

按sin(t)*cos(t)的方法,得到黎曼和——sin(t)*sin(2t),如下图所示。

结果为-4.22588E-16,非常接近0。

是不是全接近0啊,并不。

(7)sin(t)和sin(t)的内积,以及内积为1

我们选相同的函数,做内积。

结果不是0,是……像是π.

这个结果对不对呢,我们可以用其他数学工具交叉验证一下。

Wolfram|Alpha 说:

上图中的积分范围是 -π,+ π,Excel中的积分范围是0,2π即0,360度。都是sin(x) 的一个周期,所以是等价的。

既然Wolfram|Apha有图,我们也可以在Excel中画一个,再交叉检验。如下图所示,是相同的。

用 Geogebra交叉检验一下,如下图所示,结果也是相同的。

如果你也读《程序员数学》,会发现书中的同一函数s(x) 和s(x)内积的积分结果是1,解释理由是 基底的长度为1。这个结果与我们的不同。为什么呢?

因为s(x)并非sin(x),而是sin(2πx),周期2π,ω为1。我们在 geogebra中从-1到1积分,所得结果与《程序员数学》书中函数sin(2πx)的内积相同。

在Excel中积分-1,1的一半附近,即 0,1 ,如下图所示。

所得结果为0.5。

0,1为-1,1的一半,因此可以推断得到 -1,1积分的结果应为 1。与《程序员数学》书中一致。

(8)小结

以上,我们使用到了 函数正交、内积(事实上还有相关性)、定积分、黎曼和 这些概念,我们使用了一些公式。

但是!在求内积(其他都是原理,对计算过程没有影响)的过程中,我们并不需要任何公式。包括sin和cos这些三角函数,在计算它们的内积时,我们只需要数据。虽然三角函数的数据由函数公式生成,但是在内积计算时,我们无视函数公式是什么,而只需要数据就可以了。即使那些求内积的函数不是三角函数,甚至没有解析式,对计算过程也没有影响——回归到函数的定义,数(的集合)到数(的集合)的映射。

用内积佐证傅里叶的基底,那些三角函数,它们之间是正交的。它们正交这一点,并不是对某个函数/信号傅里叶分析的必要步骤,因为早就已经由前人证明过了。用解析法证明,一般会被视为更优雅吧。讨论内积的原因是,这种做法正是后面用Excel手搓傅里叶级数的手法。所以,此处也算作预备。

2.5 李萨如图形

所谓 既然气氛渲染到这种程度,数据都有了,不画个莉萨如/李萨如图形,说不过去啊。

李萨如图形,是测量两个信号周期比例的方法。不同周期、不同相位的周期函数,一个画横坐标,一个画纵坐标,可以得到非常漂亮且容易识别的图形。在双踪示波器上接两路信号,可以通过画李萨如图形求这两路信号的周期比例。如果其中一路信号是我们生成的,因此周期已知(多么熟悉的路线),另一路信号的周期可以通过李萨如图形求出。

如下图所示,用刚刚Excel中的数据画出的李萨如图形。用XY散点图。

以下是随手做的其他几个例子,好看吧。

(待续)

 

好工具 | Export Tabs URLs 和 Open Multiple URLs 换机器打开多个页面

据说在苹果系列的手机、平板、计算机之间,你可以正使用其中任何一台设备,此时切换到另一台设备,可以方便地自动打开刚才正看的网页。Firefox账号据说也有类似功能,可以在方便PC机和手机之间切换。

跨设备种类的切换,我极少有这一类需求,但是在PC之间切换常有。在一台计算机上看页面,因为链路速度不行,可能要切到远程的服务器。这种时候,通常我已经打开了一堆页面,希望在远程的服务器上把这些页面全都打开。

在一台机器上保存多个URL地址,在另一台机器上打开。手动操作的话,可以用记事本作为中介。

一个个页面的TAB遍历:
  每一个都 alt-d 到地址栏;
  ctrl-c复制;
  ctrl-v粘到记事本;
  下一个TAB。
把记事本中的文本传到另一台计算机
想办法用微信或邮件或远程桌面复制粘贴之类
换机器
对记事本中的每一行URL:
  复制;
  在浏览器中 ctrl-t 开新tab;
  键盘焦点此时正在地址栏,操作 粘贴,回车;
  记事本中的下一行URL。

不仅繁琐,我经常担心漏一两个。而且漏掉的都是重要的,就像迷途的羔羊都格外金贵。

我用两个firefox 插件合完成上述操作,
Export Tabs URLs 和
Open Multiple URLs。

其中一个插件叫做 Export Tabs URLs,地址在 https://github.com/alct/export-tabs-urls。这个工具用于导出url。

比如我正在看以下三个页面。

此时我准备换机器了,先导出URL。

得到所有正打开Tab的URL,我一般点击 Copy to clipboard。

然后我换机器/远程桌面。

在新机器上运行另一个插件,Open Multiple URLs。下载地址在https://github.com/htrinter/Open-Multiple-URLs

粘贴剪贴板里的文本,点击 Open URLs按钮。

在这个案例中,浏览器会尝试打开6个URL,如果不删除每个URL上一行文字的话。我可以容忍,至少不会丢什么。如果洁癖发作追求完美,那就删除URL以外的文字吧。

如果感觉容忍和手动删除都不够优雅的话,在Export Tabs URLs导出时,勾选掉 “include titles”复制框;或者在Open Multiple URLs按Extract URLs from text按钮。

改变向量的基底——读书笔记用geogebra重现

这是系列帖子的下半部分,此前还有一篇。这两篇共同的主题是 改变向量的基——使用 geogebra 演示。

帖子的缘起是我最近读了一本书,书名《程序员数学》,作者 Paul Orland,https://book.douban.com/subject/35689348/,下面图示中的这本。微信读书APP可以免费阅读,排版尚可。

书里涉及到线性代数、高等数学、数值计算、神经网络等的初步,都用python代码实例介绍的,直观,能帮助理解理论知识,适合作为计算机导论的补充素材。自己参考做实验也挺好玩的,比如线性代数中关于直线相关和向量换基底的这部分,我用 geogebra 重新实现了一遍。

3. 改变向量的基底

已知两个条件。其中一个条件是,有个向量,比如从原点到坐标(4,2)的点;另一个条件是,如果换一个基底,这个向量在新的坐标系下会是从原点到哪个点呢?或者说,这个点(4,2)在新的坐标系下的坐标是什么。

书中给的例子是下面这个。

条件一,如果向量在当前坐标系下为 (4,2)。

条件二,新的坐标系是这样的,由两个向量张起,其中第一个向量u1在旧坐标系下为从原点到(1,1)的向量,另一个向量u2为从原点到(-1,-1)的向量。

在u1,u2构成的这个新坐标系下,旧坐标系下的(4,2)的坐标是什么。

3.1 书里的写法,矩阵与基底的关系

书里的写法是这样的,左边的矩阵第1列是u1,第2列是u2。其中的u1和u2分别是新坐系的两个基底。等式的左边是这个矩阵乘以{{c},{d}}这个向量(或者矩阵)。等式的右边是旧坐标系下的向量{{4},{2}}。

可以通过解方程得到c和d的值。在CAS view中操作。

解方程,指定c和d是变量。

得到c=3,d=01。

所以,旧坐标系中的(4,2)在新坐标系中的坐标为(3,-1)。

在图上验证一下。我们指定第一个向量u1的3倍,以及第二个向量u2的-1倍。

看看新坐标(3,-1)与新坐标的两个基底间的关系。

看起来对的,v在新的红色坐标系下,坐标分别对应u11和u22在u1和u2上的投影。

根据《程序员数学》中的例子,总结求 新坐标系下的坐标值的方法,就是解下面的方程,求出c和d的值。

不过这个有问题,看起来 改变基底 就像 线性变换。与上一篇中的 直线相交、解方程 的方法确实非常相似,事实上我刚刚就用了 geogebra 中的 solve 这条指令。不过结果等价,并不意味着原理相同。有不少帖子都指出,改变基底是 换个观察角度,而 线性变换 是在当前空间中操作东西。在《程序员数学》中,对这一区别似乎不太关心。

如果用geogebra画图就会发现,似乎看不出来解这个方程与基底变换之间有什么几何意义上的联系。

如果并非解方程、直线相关的话,那么原理是什么呢?

3.2 支线 线性无关-垂直-正交标准基

在讨论原理之前,先简短地补充一条小的支线。书中给出的例子中,u1和u2两个新基底是相互垂直的,点积为0。

在几何意义上也可以看出二者垂直,根据坐标可以确认。

不仅垂直,这两个基底的长度也相同。根据勾股定理我们能求出,长度/模 在旧坐标系中,都是 ,我们可以把这个长度定义为1。

这可能会误导我们以为所有的基底都必须相互垂直、长度为1。这是对 标准正交基 的要求,高于对基底的要求。基底可以不相互垂直,长度也不必为1。只要不能由基中一个基底线性推导出另一个基底,就行了。

也许我读书不细,作者可能提到了,我跳读没注意。聊此备忘,免生误解。

3.3 矩阵的逆,与改变向量的基底的关系

回到正题,书里这个求解新坐标系下的坐标的方法是什么意思呢,什么原理?

之所以看起来有点奇怪,是因为这个写法不完整。有点像数学书里经常遇到的“显然”,跳了几步一定正确的过程,读者容易跟不上思路。

是个向量,它不够完整。我们补充一点东西。

对角线上全是1的对角阵,这个单位阵,是旧坐标系的基底。因为过于熟悉,我们几乎注意不到它的存在。我们看一下它的含义。

所以, 完整的写法是

这种写法我们见过,就在下面这个等式的左边。

所以,等式的完整写法是下面这样。

C:\Users\young\AppData\Local\Temp\WeChat Files\92467ebb0a4aa3a795fc63bad2dda73.jpg

等式左右两侧都是——基底构成的矩阵 左乘 向量,左乘的结果是向量。

求解c和d,即在新坐标系下的向量的过程,相当于等式左右两边分别左乘 新基底构成的矩阵的逆。得到下面的图示。

等式左侧 {{1,-1},{1,1}}^-1 * {{1,-1},{1,1}} * {{c},{d}} => {{c},{d}}

其中,左侧的两个矩阵为 ,结果为单位阵。

等式右侧 {{1,-1},{1,1}}^-1 * {{1,0},{0,1}} * {{4},{2}},即

结果为

手动/分步计算等式右侧的话,在geogebra中并无必要,为展示计算过程的原理,我们展开一下。

先是

结果为

然后 结果为

与此前解方程的结果相同。必然相同,回顾上一篇中 两直线相交、解方程、矩阵解法,是方法上是等价的。

3.4 换个例子,验证

原坐标系中的点 (5.66,1.46),这是随便点出来的。

新坐标系,第1个基底 (3,4)。为了模长为5而选,原本以为会方便计算,不此必要。第2个基底,是第1个基底顺时钟旋转了90度,得到(4,-3)。

保证正交、长度为1,构成标准正交基。

根据上文中的方法,

求得新坐标系下的坐标为 (0.91,0.73)。

方法一,解方程

或方法二,左乘新坐标基底构成的矩阵的逆。

验证一下,向量的第1个分量和向量的第2个分量,分别除以基向量,4.56/5和3.65/5,结果正是 (0.91,0.73)。

看上图中,在旧坐标系中的(0.91,0.73)的位置相对于旧基底,可以看出与新坐标系下向量相对于新坐标系基底的关系,这两个关系是相同的。

直线相交,二元方程,矩阵——读书笔记用geogebra重现

这是系列帖子的上,后面还有一篇。这两篇共同的主题是 改变向量的基——使用 geogebra 演示。

1. 荐书

最近读了一本书,感觉非常不错。书名《程序员数学》,作者 Paul Orland,https://book.douban.com/subject/35689348/,下面图示中的这本书。微信读书APP可以免费阅读,排版尚可。

书里涉及到线性代数、高等数学、数值计算、神经网络等的初步,都用python代码实例介绍的,直观,能帮助理解理论知识,适合作为计算机导论的补充素材。自己参考做实验也挺好玩的,比如线性代数中关于直线相关和向量换基底的这部分,我用 geogebra 重新实现了一遍。

2.直线相交

在二维平面上,有两条直线,分别已知方程,求交点的坐标。

问题简单朴素,正可以用来熟悉一下如何在geogebra之中把 方程、几何意义、矩阵 对应起来。

下图中的两条直线、两个方程、矩阵,就是《程序员数学》中的实例。我们也用它讨论。

2.1 几何意义,与方程的关系

其中一条直线的方程如下。

输出方程的同时,在geogebra(的standard view)中就显示出了对应的直线。甚至在输入的过程中也对中间结果给出了图形,不过与论题无关,所以省略。

根据上图,我们能看出,斜率刚好是1;在直线上任意一点,x和y总是相等的。

另一条曲线的方程如下。为了与第一条曲线相区别,我手动改成了红色。

两条直线都显示出来了。可以把x和y分别赋值为0,求出对应的y和x,验证图中的红色直线是正确的。

手动标出交点,如下图所示。

即 指行执行,如下图,求eq1和eq2这两个 方程/直线 的交点。

在平面直交坐标系上,可以看到这个点。

以上,是两条直线相交的几何意见,以及与方程的关系。

解两个联立的二元方程,与几何意见对应,即求两条直线相交的交点。在geogebra中的方法,其中一种就是如上所述,画出两条直线,把直线的交点标出来。除此以外,以下方法也有效。

2.2 解方程

用指令Solve,参数是两个方程外面括上花括号组成的 list。

由上图得到精确解,分数表示。鼠标单击 约等号,得到下图,数值解,用小数表示,与此前的两直线交点所得结果相同。如下图所示。

2.3 矩阵形式

《程序员数学》书中给出的是矩阵形式,类似下图所示。

上图中的最后一行,geogebra给出了矩阵对应的方程形式。

方程左半边,即 x-y 、x+2y 与
矩阵形式的左半边,即乘法部分m1m2 的对应关系如下。

2.4 用矩阵解方程(1)

根据刚刚m1,m2,m3的定义,在等式左右两端 分别 左乘 m1的逆。

或者含义相同,geogebra中特有的写法。

然后,
等式左边,m1的逆与m1得到单位阵,向量{{x},{y}}不变;
等式右边,m1的逆与向量{{0},{8}}相乘得到向量 {{8/3},{8/3}}

C:\Users\young\AppData\Local\Temp\WeChat Files\84c0415a4242da9029723dc00cdfa63.jpg

严格地说,得到的并不是x和y的根,而是向量。

这里还有一些扣儿,与主题关系不大,我也不甚了了。姑且跳过,左乘一个矩阵的逆,这个方法在下一次的讨论中要用到,这里作为序曲。

2.5 用矩阵解方程(2)

标准的解法如下。

太阳的方位角变化是否匀速 续 使用excel描点或geogebra画函数曲线

在前文中,为了回答 太阳的方位角变化是否匀速,特别是 在日出和日中时相同时间内的方位角变化是否相同,我们根据天文观测数据,又通过立体几何(?)从原理的角度分析,得出结论 太阳的方位角变化不是匀速的。不是匀速的,这个结论可以更精细一些,方位角(以及高度角)的变化符合什么规律呢?

太阳的方位角变化,涉及天文学里的球面坐标系转换等知识。假设,我们已经理解了这些知识,因此得到了一些公式。这些公式在网上不少,一般地都是对的,并且彼此可以验证。所以,我随便找了一下。

1. 高度角,使用excel描述

之所以需要高度角的原因,一方面,既然方位角变化不是匀速的,对于高度角的变化,我们也很好奇;另一方面,方位角的公式里有高度角,先求出高度角再求方位角更容易一些。

参见 https://zhuanlan.zhihu.com/p/641045406

高位角的公式如下

sin hs =sinφ·sinδ+cosφcosδ·cosΩ

其中

(1)hs 是高度角,待求的值。

(2)φ 为地理纬度,我们保持与前文一致,北纬42度。

(3)δ-赤纬,可以通过公式求得

https://pic4.zhimg.com/v2-554a19438d84e27266e317fcd7932bc3_r.jpg

在这里,我偷懒了,按与前文一致的时间 2016年1月1日,

在这里查表 http://www.jisuanqiol.com/baike/jk/3575.html

得到-22.99度。

(4)Ω-时角,deg (时刻-12)小时*15度/小时。时刻是唯一的变量。

在excel中,时角的公式为

=(E17-12)*15

其中E17是时刻的单元格。

明确了以上几个量以后,我们就可以根据时刻这个唯一变量,求得 指定日期2016年1月1日,北纬42度 太阳的高度角变化。不需要经度的原因,是因为我们使用当地时间。

在excel中,高度角的公式为

=ASIN( SIN(42/180*3.14)*SIN(-22.9/180*3.14)+COS(42/180*3.14)*COS(-22.9/180*3.14)*COS(F17/180*3.14))/3.14*180

其中F17是时角的单元格。

从7:30日出时起,至16:30日落时止,每隔1小时计算一次,我们得到以下表格。

其中 时刻以小时为单位,例如7.5代表7:30分;

时角,是计算的中间过程;

高度角,为所求目标。

画图如下。

从图中我们可以看出,高度角从日出时0度,逐渐上升,在正午时25度左右。下午至日落,高度角逐渐降低。

细致观察我们也可以看出,高度角的变化不是匀速的,似乎日出时快,至日中时慢,与前文中的结论一致。

对高度角的变化,我们作进一步的定量分析,求每两次计算值之间(因为时间间隔一致,因此差分即斜率)。为了符合一般感觉,我们把对差值再取绝对值。这样,我们得到下述表格。

其中,diff为两次高度角之差,diff-abs为取绝对值的结果。绘图如下。

在上图中我们可以看出,高度角的变化/差分/斜率/导数,不仅早/晚和中午不同,而且还有更细致的变化规律。那可以由二次导求出。事实上,仅通过公式,我们也可以知道,其中有三角函数,变化一定不是线性的。

2. 方位角,使用excel描点

参见 https://zhuanlan.zhihu.com/p/526310019?utm_id=0

里面有个公式,我截图抄来如下。

可以得到以下方位角的公式。

cos 方位角 = (sin 赤纬 – sin 高度角 * sin 纬度 )/(cos 高度角 * cos 纬度)

有两点需要简单解读。

(1) 右式=cos 方位角,所以可以用对右侧式子取 acos,从而得到方位角;

(2) 要保持所角的都是角度制或者弧度制,并且符合所用工具excel的要求。

其中

赤纬查表 -22.99
高度角 已求
纬度 42

这样,唯一的变量是时刻。与上文中高度角一样,我们从日出到日落,每隔1小时求一次方位角。

2016年1月1日,北纬42度。

在excel中公式为

=ACOS((SIN(-22.99/180*3.14)-SIN(42/180*3.14)*SIN(B14/180*3.14))/(COS(42/180*3.14)*COS(B14/180*3.14)))/3.14*180

其中B14是时刻的单元格。

过12点以后,上述方位角公式失效,角度开始回转。所以我稍作改动

=180-ACOS((SIN(-22.99/180*3.14)-SIN(42/180*3.14)*SIN(B19/180*3.14))/(COS(42/180*3.14)*COS(B19/180*3.14)))/3.14*180+180

其中B19是时刻的单元格。

根据上述表格绘图,结果如下图所示。

我们可以注意到,早晨和中午的方位角变化,有5度左右的差异。日出和日落时方位角变化慢,接近中午,方位角变化快。正午前后,方位角变化慢了?

上述使用 excel,比前文中天文数据或立体几何中取几个点,看起来更具有一般性。并且,对于扩充到更多的数据,我们仍有潜力。

我们还可以做得更好,使用 geogebra画函数曲线

3. 高度角,使用 geogebra画函数曲线

根据公式,我们得到 f(x),如下。

其中,lat是纬度,我们暂定42度; dec是赤纬,我们暂定-22.99度。

绘出函数图像如下。

求导,得到蓝色曲线如下。

比excel描点的方法,我们能得到更多更密集的数据。

不仅如此。我们可以容易地修改纬度和赤纬。

上图是 纬度为0、赤纬为0 的太阳高度角变化。早6点日出,晚6点日落。12小时白昼。作为对比,北纬42度的元旦,白昼只有9个小时。正午太阳高高角90度(90.01多出的部分,我猜测是计算误差)。

它的高度角变化,是均匀的。

很容易切换到北极圈以内,白夜,太阳永远不落到地平线以下。

4. 方位角,用geogebra画函数曲线

锁定纬度、赤纬,高度角由公式求出作为中间结果。

方位角公式如下。

叠加了高度角帮助判断日出和日落,绘出函数图像如下。

变化率,即求导的结果呢?下图中,绿色的曲线是对方位角曲线求导。

看来,正午12点左右,我修改过的公式有毛病,出现了间断点。其余的形状看起来都与excel描述的结果一致。哪位大侠知识正确的方位角公式,还请不吝赐教。

我们定位到北极圈接近北极点,赤纬接近0的那一天。

得到方位角持续不变。

这是超出了公式的有效范围,还是……方位角是南?如果方位角是南,那应该是180度吧。

后面的Geogebra函数曲线,我解释不了,超出我所了解的范围了。不过使用geogebra画曲线;改参数值,观察曲线立即变化,以及曲线导数的变化,很有意思。

5. 结论

在多数时间和地区,太阳的高度角和方位角的变化,不是匀速的。变化的速度持续改变,需要用公式或图像才能定量描述。

疑似,有些地区,有些时间,高度角或方位角的变化是匀速的。

日出和日中时的方位角变化,是匀速的吗?

(1)问题

这是在知乎上看到的问题。链接在此

一天中太阳方位角的变化速度一样吗,是不是日出和落时更快? – 知乎

https://www.zhihu.com/question/616149596

草率地想,当然啊,当然是匀速的。因为太阳在天空中划过角度的原因,来自地球的自转。在相当高的精度下测试,地球的自转都可以视为匀速。太阳初升到再初升,这是一个太阳日。同一星座,比如猎户,从初升到再初升,这是一个恒星日。二者略有不同,不过这个差异是恒定的,因此并不影响太阳划过天空时,单位时间的角度,也就是角速度,对角速度没有影响。

然而,对“当然”二字要格外小心。

我们忽略误差,假设太阳划过天空的角度是匀速的。然而误差真的可以忽略吗,即误差对肉眼无法察觉吗?

(2)误差存在

如果没有大气层的偏折,大阳划过天空的角度保持恒定,每小时 360/24=15度。

但是,由于大气偏折光线,导致肉眼所见太阳扫过的角度,在日出和日落前后比日中时要大。

参见 为何在日出前,日落后,我们仍能看到太阳?。链接在 https://k.sina.com.cn/article_1808449333_6bcabf3500100goid.html

里面有张示意图,转引如下。

https://picx.zhimg.com/v2-ddddf5f40a85031e84a60e1c8023ac95_r.jpg?source=1940ef5c

在非日出或日落的时间段里,在太阳的高度角较大,即更垂直于地面时,偏折的角度更小一些。

在日出和日落时段附近,光线偏折导致肉眼所见的太阳扫过了更大的角度范围,所以高度角变化速度更快。

这个误差有多大呢,是否能被肉眼觉察?文中提到,在明显的地点在赤道,大气偏折导致我们在日出时提前大约2分钟看到太阳。2分钟,太阳划过的角度是 2/60*15=0.5度。肉眼所见太阳的视角刚好是0.5度。也就是说,偏差达到1个太阳的张角那么大的。借助不太精密的设备,再降低光强对眼睛充分保护,肉眼是可以看到的。所以,这一误差不能忽略。

(3)发现错误

答完以上,发现 美杨杨的张先生 (https://www.zhihu.com/people/zhang-nan-60-41-17)提到

>日出没时高度角变化快方位角变化慢,日中天时相反

我还没有细想他说得对不对,但是!我审题不认真啊。答非所问,结论完全错误。

原题问的是什么?“一天中太阳方位角的变化速度一样吗,是不是日出和落时更快?”讨论的是哪个物理量?方位角。

方位角是什么,大阳在大地上的垂直向下投影、与我即观察者作为夹角的尖儿、以及正北之间的夹角。要投影啊。

我答的是什么?我答的一直是 太阳在天空中划过的角度。那是什么角度,那是如下图所示,太阳在黄色的平面上经过的角度。

题目问方位角是否匀速,我答了在太阳轨迹上的角度匀速。答非所问。

到这里,我们还不能知道,在太阳轨迹上太阳行过的角度匀速的假设下,是否能推得方位也是匀速的。但是,假设两个不同概念的值是一致的,这是不明智的,更何况这投影明显有角度存在,不是平行投影,两个值一致才怪。

(4)度量,实验检验

这时,简单地做法是 既然对事实有争议,那就测一下好了。支起天文望远镜,支起史前巨石柱,还有各种上古或现代的设备……等等,这样相当花时间和成本。已有的测量数量是可以用的啊。

随便找一个网站,能根据指定 时刻,给出 太阳高度角 和 太阳方位角的。比如https://www.osgeo.cn/app/s1904

如下图所示。指定经度,纬度,随便选了日期(以上在红框中)。给定一个时刻(在绿框中,在整个实验中要改变多次),点击计算按钮,得到一组天阳高度角和太阳方位角(在下方的两个红框中),记下来。

这样,如下图所示,我设置了5个*5组时刻(在红框中),组间内隔1分钟。得到了对应的高度角和方位角(在绿框中)。这5组数据分别是日出、上午、中午、下午、日落时分。

求出高度角之差的绝对值。考虑到高度差的变化可能为正,日出和上午,也可能为负,下午和日落。而题目关心的变化率应该对正负不敏感,所以对差取了绝对值。

求出方位角的差。

高度角的差和方位角的差都列在表中,根据数据画图,得到以下 chart。

其中蓝色的,表示高度角的差的绝对值,橙色的,表示方位角的差。在上图中我们可以看出,高度角的变化速度,在日出和日落时较快,在日中时最慢;方位角变化,在日出和日落时变化较慢,在日中时最快。上午和下午,高度角和方位角的变化符合相同的规律,即介于日出或日落时的速度 与 日中的速度 之间。方位角速度最快和最慢之差达0.25度,高度角速度最快和最慢之差达到0.15度,分别达到太阳视张角的1/2和近1/3,不需要太精密的仪器是可以观察到的。

偏离一下主题。要想观测到这一事实,有个前提,导致在古代无法实施。我们可能想到,角度可以通过放大尺度,即圆的半径,比如把设备换成高大建筑或者山脉这种方法。这样角度可以测量得更精确。固定地点,以固定经度和纬度,这使得经度和纬度不需要精度。

然而,在这一事实的观测还有一个物理量,测量起来如此简单和精确,以至于我们甚至难以觉察到做过测量。但是没有这个物理量,或者精度稍低,整个测量就都不可能完成。

时间!我们上述数据中,精确到分钟。在古代,分钟,即每天的1/1440这种精度的时间,是不可信任的,至少不比太阳可信任。如果太阳是必须信任的,那么,就是信仰。质疑信仰,你就是坏人。后面不必讨论了。

回到正题。以上数据相当于实测。事实表明,日出、日落、日中的方位角变化,不是匀速的。事实顺便可以看出,不仅方位角,连高度角也不是匀速的。即使太阳在行经太阳轨迹时角速度恒定。

即使我们不知道为什么,不知道原理,甚至不知道每年365天中是不是只有我设置的那一天,甚至5千年里只有那一年的那一天才是这样——即使如此,事实仍然说明,在误差范围内,在可观测的精度下,太阳的方位角角速度不恒定。

(5)原理

原理就是倾斜平面的投影。具体原理是一顿三角函数,以及变化率。超出我的解释能力了,因此以下只给出一个例子。

假设地点为北纬42度附近,1月1日前后,所以太阳在日中时的高度角为25度左右。

如下图所示,我们用 geogebra 构造出符合天圆地方世界观的图。蓝色的天空,绿色的是大地。我们依据25度画出太阳轨迹的平面。金黄色的是太阳轨迹面,太阳在此经过。

我们在日初时分,即图的左侧,在太阳轨迹上划出10度。在日中时分,即图的右侧上方,在太阳轨迹上划出10度。这俩角度是相等的,只是因为拍照的角度,看起来日出时的10度的弧度要小一些,是相等的。

我们看日中时分,太阳在太阳轨迹前进10度。在这种情况下,高度角的变化和方位角的变化分别有多大。如下图所示,高度角变化-日中,太阳轨迹10度。

高度角的测量,是 中心点至太阳 和 中心点至太阳在大地上的投影 两条射线的夹角。

在图中可以看到,日中时,高度角(在图中这两个角是“竖立着”的方向)分别为24.73和25.15,
即高度角变化为25.15-24.73=0.42度。

方位角的测量,为太阳在大地上的投影,与 中心点/我/观察者 所形成的的连线这一射线 与 正北之间的夹角。所以方位角的变化,我们可以通过测量两次太阳的投影分别与中心点连线,这两条连线间的夹角。

如图下所示,我们可以看到,方位角的变化为11.09度。这个角度在大地上。

以相同的方法,我们测量日出或日落时的高度角变化、方位角变化。下图,日出时太阳轨迹上的10度。

如下图所示,在日出时,高度角由0度行至4.27度,所以高度角变化为4.27度。

如下图所示,日出时,方位角由变化为9.22度。

总结得到如下表格。

日出 日中
方位角变化 9.22 11.09
高度角变化 4.27 0.42
太阳轨迹上的角度 10 10

太阳每小时在轨迹上转过15度,因此10度对应的时间为10/15小时即2/3小时,合40分钟。转换为平均1分钟的方位角和高度角变化。如下表。

日出 日中
方位角变化 0.2305 0.27725
高度角变化 0.10675 0.0105

(6)结论

还记得我们根据实测数据画的 chart 么,就是下面这个。

我们只取日出和日中,求时段接近的每组4个差(或差的绝对值)的平均值。得到下面的表格。

日出 日中
方位角变化 0.1675 0.255
高度角变化 0.1575 0.0025

对于(根据天文数据)实测和在Geogebra上测量结果略有差异,可能来自初值和我测量的误差。我在绘制 geogebra 时未能保证精确,有点移动了,人懒,没有重做。根据勾股定理复原一下场景,方位角9.22当为9.04左右,每分钟0.226度。仍大于天文数据实测得到的0.1675较多。

尽管存在差异,我们仍可以看出相符之处,数据表现出下述规律。

第一,日中时 高度角变化缓慢,日出时 高度角变化较快;

第二,日中时 方位角变化较快,日出时 方位角变化 缓慢。

此前讨论过大气偏折造成的影响,当时没有特意区分影响的是在太阳轨迹上的角度,高度角,还是方位角。在日出前后,这种影响主要在高度角上,对方位角影响不大。

所以回到 美杨杨的张先生 (https://www.zhihu.com/people/zhang-nan-60-41-17)提到的

>日出没时高度角变化快方位角变化慢,日中天时相反

美杨杨的张先生 的结论与上述实测和geogebra测量一致。

日出 日中
方位角变化
高度角变化

回到问题上。

“一天中太阳方位角的变化速度一样吗,是不是日出和落时更快?”

是的,一天中太阳方位角的变化速度不同。

(太阳方位角变化)不是日出和落时更快,相反,是日出和落时更慢。

 

锻炼十年(5)伤痛

2018年曾经写过一个系列,回顾自2008年起保持俯卧撑锻炼开始的历程,题目叫做锻炼十年。而今2023年,又五年过去了,有想增补的内容,仍放在这个系列中。虽然15年矣,为保持题目一致,还是叫做锻炼十年吧。反正,多出的五年,也没有多少进步。

这一篇谈伤痛。

(1)

即使持续锻炼,我所受的伤痛也算少的。

一个原因是我所做的大都不剧烈,特别是最近几年几乎完全排除了爆发力的训练以后。小学四年级开始,每次见眼科医生都会受到叮嘱,“不能做爆发性动作,不能受突然打击。”不然的话,可能导致视网膜剥脱。所以,我刻意避免了所有的对抗性运动,足球、篮球什么的。一般的情况下,可能只不过是积极对抗,或者稍微一不小心。对我来讲,可能后半辈子会非常不方便。视网膜剥脱是高度近视特有的危险。因于眼内压高,眼轴前后拉长,视网膜本来也处于岌岌可危的状态。一旦发生就失明了,虽然可以修复,但是非常麻烦。要脸朝下俯卧不动长达一个月(?)之久,一动就前功尽弃。在成年以后,经常遇到朋友同事对医生的交待不屑,“别什么都信大夫的,他们就吓唬人。”然而,每次都是相同的叮嘱,书上也是这样说的。而且,觉得无所谓的这些人里,没有一个可以替我承担。所以,可能受突然击打和需要爆发力的体育运动,我都避免参加。也因此受伤的机会少了很多。大学的时候,同学们踢足球打篮球,每次受伤的时候我都乐,“运动才会受伤,我不运动也从来不受伤。”

另一个原因是训练的理念。是哪本自重训练的书告诉我来着?拿不起来就别拿,抓不起来就别抓。不要使用爆发力,缓慢推拉。缓慢推拉对提高力量(也许还有增大维度)本身也是有帮助的,并且可以减少拉伤。

包括太极拳在内的动作要领,都包括先慢。对于锻炼而言后快不那么重要。通过缓慢的动作体会动作要点,哪块肌肉在什么时机发力,哪个关节在什么时候哪个受力。类似精读文章、做实验、练琴,亲身体会时没有办法滑过去。不借助重力,不借助惯性(冲量),纯靠自身肌肉,尽可能使用预期发力的肌肉。这些都要求慢,只有慢才能感觉清楚。练了几十天以后,经常发现,咦,这里还有个扣儿,又捋顺一个地方。

最重要的原因是,伤痛实在太费时间了。

一旦受伤,会有相当多的动作没法训练。拉伤的肌肉或关节本身不能发力,不能作为目标肌肉训练了。作为拮抗肌的训练也只能暂停。简直难以想像,人体居然是这么精密复杂的机械,内部耦合得如何密切,哪怕一个小地方受伤,几乎全体的训练都受到影响。更不用说像腰部这样的枢纽。暂停训练,会破坏计划,还会让原本正成长的部分搁置甚至衰退下去。小伤一周,稍微重一点的拉伤挫伤,一个月到三个月。年龄越大,需要的恢复时间越长。所以,宁走十步远,不走一步险。所以,活得长全靠胆小。只要不受伤,即使今天练不明白,明天也还能练。想起当年打游戏暴力摩托,屡败,几乎要放弃。二猫妈说,你别打那些NPC,冲过去。果然,只要不倒,就能轻松取胜。背单词,有时候想提高速度,也发现——不出错,是速度最快的方法。宁可降低速度,只要不出错,总的速度就最快。

爆发力,或者超出力量上限的重量,贸然尝试没做过的姿势。冲击数量或重量。这些都可能会受伤。身体疲劳,头脑不清楚,正在生病,这些也会加大受伤的可能。需要小心。

以下,是记录所受伤痛,包括训练带来的,也包括平时姿态不良的后果。还有自行作死的。

(2)脖子

不是运动的结果,我颈椎本来就不好。因为视力弱,所以看显示器的时候身体前倾,脖子再探。脖子在端肩的基础上,还向后折了一下。专注阅读和写东西的时候,其他的感觉都下降了,伤害逐渐积累到相当的程度才意识到。当年洗头时头疼,歪头也疼,颈椎按起来像有一包水,颈椎有一节的感觉按下来的手指上有刺。左右一歪头脖子里面喀卡响。

C:\Users\young\AppData\Local\Temp\WeChat Files\f3a8de122350dd7f8479f0fe7023b8f.png

后来,我练瑜伽的 展臂功,就这一个动作。一天也就练个三次,一组。后来脖子好了。

https://zhuanlan.zhihu.com/p/22593099?utm_id=0

展臂功用到的主要肌肉应该是斜方肌,同时可能缓解了颈部肌肉。斜方肌感觉上是为肩胛服务的,但是它的疲劳导致了脖子疼。人体的运动系统远比我想像得复杂,这是我练展臂功治了脖子最大的体会。

后来练引体向上,还有 俯卧直臂支撑 沿矢状面(从正面上举)持哑铃上抬手臂至与身体平行。这两个动作,有时不小心动作没有注意发力的顺序,或者动作走形,或者数量或重量过大,都有过导致过脖子酸疼,当天可能落枕,持续一周。现在我在做完以后感觉一下,如果不非常好,那就加练四向点头,特别是左右单侧沉肩向另一侧抻脖子。不用手助力,仅仅拉伸。感觉能缓解。

(3)肩

引体向上不仅可能伤脖子,还伤肩胛后面。有一段时间我追求数量,并且希望快点突破,在底端爆发性用力拉起。经常导致肩胛后面疼,感觉是上背部疼痛。有那么几块肌肉,我分不太清,大约是大圆肌、小圆肌之类的,总之是稳定肩胛用的。

拉起以前,先使肩胛达到指定位置,下沉,后夹(称为内收?),保持住。然后再发力拉起。如果不能形状开了,那么再来一次,先肩胛动作,然后保持住。如果保持不住,或者肩胛后夹做不到,那就离受伤不远了,应该休息。

不要使用爆发力拉起。可以快,这样能省力,但是不能突然。肩胛放松,沉到底,甚至两肩靠近耳边,发力行程更长了,但是肩胛和背阔肌同时发力,我的感觉是更容易受伤。

这个原则可以推广一些,即小肌肉用于固定,大肌肉作为主动肌主要发力;小肌肉先动作,保持,等长,大肌肉再发力。如果大肌肉已经动作了,小肌肉不可能再有力量改变姿态。在力量举的书里,也旁证了这一推测。

如果拉起时肩膀响,伴有轻微不适或者轻微疼的话,我的感觉也是因为小肌肉发力没有结束,姿态不能保持。宽握引体向上时,我目前经常有这种情况,通过收紧肩胛导致后仰躯体可以解决。深蹲时也一样,膝盖响或疼,通过小腿扭转的趋势,大腿内夹的趋势或外张的趋势,能解决。

左肩疼了很多年,按压后能缓解一阵儿。后来发现,坐着看文章或网页时,为了省力,我的左肘几乎总是搭在桌上,受键盘阻挡小臂与桌子边缘平行。这导致肩胛后侧持续 过拉伸。

C:\Users\young\AppData\Local\Temp\WeChat Files\2d1810f86b444ffe898920e058a8e4a.png

能够发现左肩疼的原因,可能跟长期锻炼之后感觉更加敏锐有关。这是健身群里的大神 饭后老打嗝 或 Zack说的。不然即使天天去感受,也可能感觉不到。

在同一问题中,锻炼的经验对于姿态的矫正也起了作用。想起来就把左肩扳回来,而不是内疚自责。刚开始偶尔能注意到,那么能注意到多少次就算赚了。后来慢慢经常注意到,再后来不需要刻意注意也能保持不向前探左肩了。左肩的疼痛消失了,只有在偶尔长时间阅读屏幕的时候才犯,那时需要的不仅是注意而是间歇了。

右肩在引体向上的时候才发现问题。不刻意后夹的时候会向前探,可能是由于后背或肩胛的肌肉不如胸肌发达,所以拮抗牵引的结果就是有点圆肩。不用力时还好,用力的时候,比如引体向上数量稍微多点,或者引体向上时负重,或者直臂上举向后,或者面拉,右肩的角度不对,没有充分下沉和后夹,会导致响声或者疼。这个不仅需要刻意注意姿态,先固定姿势才发力,而且需要慢慢锻炼右肩后侧的肌肉。还在努力中。

因为常年用计算机,还有引体向上握住以后下拉,也有类似网球肘和鼠标手,有的时候也会有。因为经常关注状态,所以发现了休息一下,就好了。经常关注,是锻炼带来的直接效果。

七八年以前手腕常疼。认识我年头多的同学,会注意到我那时一直戴着护腕,有时是拆下来的线衣袖子,这个感觉最好。XL同学提醒我用引体向上或悬挂帮助腰椎,结果引体向上进步不大,因为握力(也许还有腕屈和腕伸)提高,手腕不疼了。这个故事告诉我们,很多关节的疼痛来自肌肉力量不足。

(4)腰

还是因为近视,不仅向前探脖子,而且以胯骨(上缘还是下缘?)为轴,上半身前倾。腰的负担非常大,长期受到剪切力的作用。

又,我的关节延展度先天好,经常玩儿直腿体前屈。终于有一天玩脱了,我觉得是这个原因。直腿体前屈以后,第二天早晨第一次腰突。想来可能早有征兆,也许早就犯了,但是我并不知道。如果更早就是腰突的话,那么当年坐在软床上,以为是腰扭了,可能才是第一次腰突。

总而言之,腰突并不是运动带来的结果,而是姿态不良之类的生活习惯导致的。锻炼对腰突以后的生活有帮助。

虽然由于腰突,对于前倾上半身的动作都要格外小心,甚至干脆就跳过不做,但是锻炼对腰突有帮助。一方面,温柔地训练加强了腰部附近的肌肉,有利于稳定腰椎。另一方面,锻炼提高了感受的敏锐程度,更容易意识到“不好,季节有变”或者“有点疲劳,离腰突不远矣”。能更早,在更轻微有预兆的时候就开始休息。

练平板撑,恐怕长至第七八年。如果算上俯卧撑的话,15年了。我才注意到在平板撑这一类姿势中,骨盆后倾,用腹肌发力,避免腰肌代偿。联想到武术动作里略微小腹突起什么的,感觉打开了一扇大门。充分体会到活到老、学到老,底层有无限空间无限细节可供玩味。

(5)大腿

练靠墙倒立的时候,因为空间大腿受伤。练倒立需要有足够的空间。

上下的空间要够。倒立的高度相当于双手过顶举直臂,这需要2米左右高度。靠墙倒立,需要有一面墙。也就是说,门不行。因为门框的高度不够两。保证倒立时脚踢到门框以上,对动作需要有格外的要求。锻炼,而不是练得纯熟显摆的话,要留有充分余量而不要另外限制。危险。左右和身后的空间也要够,需要保证倒下来的时候可以不被阻挡,脚就能踩实地面。不然也危险。

我练靠墙倒立的时候倒向右方,那里是个一米高的铁架子。大腿青了块,就像被棍子斜着实打到。好在没有骨头没有事。印象里花了好几个月,印子才逐渐退下去。

还是大腿,用木棍当剑挥劈的时候,姿势不对,劈在了大腿上。疼!所以后来在网上看到有人提醒说练刀剑的时候要小心,有人表达了不屑。我想,如果当时我用的不是木棍,而是刀,如果再开了封……嗯。

大腿的这两次伤痛,都是运动伤害,作死的结果。

(6)膝盖

初中的时候家里盖了新房子。为了结实,地基石足有一米高。当时我们都不懂,我就靠窗户看书,右膝靠近地基石。可能只一个冬天?我的右膝从那以后经常疼。前几年用核磁共振检查了一次,结果是 没大事,保守治疗。

选不太费膝盖的动作,加强膝盖周边的肌肉。还在努力中。现在验证了的是,在深蹲等动作中,也包括主要单腿发力的动作,令小腿和大腿均有扭转的趋势(并不真的转,而是绷紧),对缓解膝盖疼或响都有用。另外 ,注意大腿后侧参与发力,因此可能调整了角度,也有帮助。

有次送毕业生团建,打真人CS。在山坡上来回跑,一脚踩到坑里,膝盖当时有点疼。疼了半年,做俯卧撑的时候小腿向前发力的时候难以保持。这个故事告诉我,非常多的肌肉与各种动作错综复杂地联系在一起,俯卧撑居然需要肌四头肌,也因此需要膝盖。好好的时候,根本不会注意到它存在。

膝盖的老伤,算姿态不良。后来那半年,算运动伤害,作死的结果。

(7)小腿,脚踝,脚

小腿后侧鼓起个包。相当长时间我觉得那是静脉曲张,毕竟教师职业和年龄,还有喜欢徒步都会导致高发。后来有天突然想起来,可能根本不是静脉曲线,而是弹力带撸的。作死的结果。

当时的动作是把弹力带一端固定在面前的高低柜腿上,另一端卡在脚踝上,后踢腿。秃鲁了。当时紫了一块,怀疑静脉曲张以后很久才意识到,就是那里。

脚跟(滑囊炎),脚踝,脚掌和脚拇指都受过小伤,几乎全是夏天非常热徒步的时候,头脑不太清楚,在疲劳的时候动作没有控制好。

(7)发烧,腹泻,新冠

几乎都不是运动导致的,但是可能由运动加重。

新冠最吓人。目前看,根据心率和感觉,两次发作,每次之后一个月以上,应该更久,不能恢复到发作前的强度。

(8)意外的好处

年轻的时候,为头皮挺烦的。也听说过各种洗发精,还有什么,洗头的东西,也试过不少。理论上,有说是血热的,有说是真菌吃头皮的,不一而足。

最好的办法是 每天洗,就没有头皮了。

气候干燥的原因,如果天天洗澡,皮肤会干,多数人会皮子紧(字面意思,不暗示熟皮子),会痒。而且由于缺水,以前并没有天天洗澡的习惯。但是锻炼之后出汗实在太多了,所以天天洗,头皮也没了。

(9)危险

即使我做的多数是自重训练,也用哑铃这种小重量的,但是仍有危险。有过闭气时眼前一黑的时候。有过心脏咯噔一下,我心想哎呀不好。都没事。有过并非正锻炼的时候,心律不齐。先是感觉心慌得奇怪。用手环一测,心率相当低。二猫用手一搭,说,每跳几下,有两下跳得非常弱。好在都是一过性的。不过,我在锻炼的时候尽可能注意,不要闭气。推不起来就不推,举不起来就不举,拉不起来就不拉。

设备翻倒之类的有危险。引体向上架子,我的没有掉下来,但是在视频里看到过。二猫妈要求我不得做双腿抬起的动作,不然就把架子拆了。确实相当危险。

卧撑,我始终不敢做。到目前为止,图书馆翟老师保护的,我只做过一次。

群里的 饭后老打嗝 的锻炼方式是举铁,他提到小重量有些特有的危险。因为重量小,所以可以靠其他肌肉代偿完成动作。时间久了,会劳损。我怀疑,引体向上时我拉伤肩胛后侧,就因为代偿能解决,才经常弓背拉伤的。如果代偿也拉不起来,只能专注正确的发力姿势了。

微信图片_20230812153927

解除 Dell显示器电源按钮锁

1. 故障现象

我的显示器莫名其妙出现了个现象。本来,手指轻按电源按钮,显示器就会关掉。电源按钮,就是显示器右下方,如下图所示箭头所指的黑色突起,左数第5个。以前按完以后,图中的蓝灯灭,显示器也同时黑。

现在,轻按电源按钮,蓝灯不灭,显示器不黑。显示器正中央出现提示,如下图所示。“电源 按钮 锁住了”。

隐约有印象锁过。但是印象模糊,也不记得如何锁,更不知道如何解锁了。这个功能看起来不错,所以这不是 bug,而是厂商的特性吧,undocumented。

在网上一顿搜,看到HP和Dell的显示器有人问有人答。试了各种方法。什么长按10秒,长按20秒,还有说15秒、30秒的,都无效。有的说,说找 能源 菜单,禁用OSD,诸如此类的,没有菜单、没有菜单项,甚至有的没有那个按钮。还有联系售后客服……嗯,这是个万能解决方案。但是一想到电话以后,要被从最幼稚的问题问起,没有个把小时拆腾不下来吧。

2. 解决方案

瞎试试出来的。

参见下图。

第一步 按住1键不抬起,此时显示器右下角会显示菜单,不必处理这个菜单;

第二步 保持1键按住,快速按“下箭头”钮1次,就是下图中绿色箭头指向的那个按钮;

第三步 保持1键按住,按“下箭头”按钮,显示器上会显示Unlocking

Power Button,并有进度条和数字。保持按住10秒。

解锁完毕,显示器正中央显示下图。

此时,轻按电源按钮,蓝灯灭,显示器黑。

3. 怎么锁住的?

操作方法与解锁完全相同,除了进度条上的文字,以及最后加锁成功的文字。如下图。

这样就锁住了。

想起了王朔写道:杜梅是个什么样的人?就是那种夹克你穿过吗,洗了穿穿了洗,穿了多少多少年,打算要扔了,突然发现,欸,这里还有个兜一直不知道。

这种特性,难道不应该非常难以调出才对吗。这就是核武器整俩扳机,不装保险。

4. 其他

不仅电源按钮能锁住,其他按钮也能锁住。其他按钮调出的功能叫做 OSD (on-screen display),译为 屏幕菜单式调节方式(?)。

按住1键保持,快速按“上箭头”按钮,再按住“上箭头”按钮保持10秒。

锁住以后,除电源按钮外,其他的4个按钮,按下去时不起作用,屏幕显示如下图所示。

解锁方式与锁住的操作步骤相同,除了提示信息不同。如下图所示。

10秒后,显示 OSD Unlocked,解锁完毕。

5. 适用范围

我的显示器型号是Dell的 D2421DS,以上测试通过,其他型号不确定是否有效。估计也差不多吧。

记录下来备用,发布出来万一你也遇到同样的问题且没搜到答案。

 

补充 为什么长春的太阳在北面,使用geogebra解释

5. 补充1-定量

以上,定性分析表明,长春日出时的方位角在 东西向测地线 以北,因此日出在东北方。

定量分析也对吗?我们以长春夏至日那天日出时的方位角为例。

5.1 测量

下图,是长春正上方俯视。阳光与晨昏线垂直,阳光穿过北回归线(在这个角度上的投影边缘,图中在阳光的路线上、地球边缘的黄圆点),并穿过地心。阳光与东西方向夹角为23度左右。未考虑投影。

立体视角如下图所示,阳光与东西方向夹角为23度左右。在图中可以看到,23度测量自 北回归线与(长春日初时)当地刚好正午的那个地点阳光的交点、长春、长春东西方向测地线三者的夹角,比投影到(或投影后展开?)长春的大地上的角度略小。这是长春夏至日时的日初时的方位角。

考虑一下投影呢?下图中,两个灰色箭头是刚刚测得23度的夹角;两个蓝色箭头是测地线(假设大地是平面)的延伸,夹角32.72度。

5.2 验证数据

https://gml.noaa.gov/grad/solcalc/azel.html
查 北纬42度,东京120度,使用东八区时间。之所以不使用长春的真实经纬度,是为了与上一节 测量 中的经纬度以及时刻保持一致。

方位角为 90-57.65=32.35度。

https://www.osgeo.cn/app/s1904 查同一时点地点。

302.20-270=32.2度。这个网站也说 方位角从正北顺时针算,但是结果并不是。存疑。

5.3 小结

验证数据32.35度或32.2度,我测量的数据32.72度,可以视为大致相等了。Geogebra绘图测量和根据天文或地理网站上推算的相符,长春日出时的方位角在 东西向测地线 西偏北32度左右。九十度的三分之一,肉眼容易观察到,难以忽视。

6. 补充2-为什么纬度越高,
日出时的方位角越北

为什么纬度越高,日出时的方位角越北呢?

我们回顾下面这张图。长春的方位角,是北回归线(与长春日出时,当地时间正午的那个地点)、长春、东方之间的夹角。

我们增加了一个虚拟的城市,北境。由上图可以看到,北境比长春更靠北。为什么图中画得更向西了呢?因为北境的日落时间更晚。如果保持图中的晨昏线(以及北境日出时,当地时间正午的那个地点)不变的话,即北境与长春使用同一晨昏线。就在长春日出时,北境也同时日出。

我们旋转一下地球,从北境的上空俯视。如下图所示,肉眼可见,北回归线、北境、东(注意这是北境的东,不是长春的东)的夹角,即北境日出时的方位角 大于 长春日出时的方位角。

这个角度有多大呢?用geogebra量一下(与长春一样的,仍然不是北境大地上的角度)。下图,35.02度。

35.02度大于23度。日出时的太阳,北境的比长春的更北。

从上帝视角再看一下。越向北,晨昏线越向西;越向北,东西方向的测地线越“陡峭”;越向北,日出时的方位角越北。

以上未考虑到投影。考虑到投影以后,如下图所示。长春的太阳方位角(太阳、长春、长春的东)32.74度,北境的太阳方位角(太阳、北境、北境的东)49.99度。再向北,再向北,太阳会持续由东、向南、向西,再向北,在你还没有感觉的时候转回东方,白夜。