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

1. 事实观察

小学二三年级地理课上老师讲到:太阳从东方升起、西方落下。我提出了问题,是*正*东吗?老师说,对,是正东。我问,为什么我看到早晨的太阳都是在东南方呢?老师说,那是因为你起得太晚,太阳已经移到东南方了。所以语文课本里有提到,“太阳升到一杆子高了”。我必须得在太阳刚离开地平线的时候观察,那时才是准的。

类似的疑问在我的读科普书时也有,埃及人如何定义“年”。说,当看到天狼星从地平线升起的时候,尼罗河就会开始泛滥,埃及人把这一天定为一年的开始。到下一次天狼星从地平线升起,这之间的时间间隔,称为一年。然而,我又困惑了。在冬季星空中,天狼星每天都会升起啊。每天升起的时候,都会路过地平线。那么,哪一天才是一年开始的那一天呢?从看到那本科普书以后,这个疑问伴随我阅读每一本这一类的科普书。大家都是这样说的,难道他们都没有疑问,只有我不懂?后来我才知道,也许吧,最初翻译的或者科普的那位作者遗漏了一点儿信息。并非“天狼星从地平线上升起”,而是“天狼星与太阳*一起*从地平线上升起”。由于太阳沿黄道在星座所构成的天穹中的逐日移动,所以,天狼星这一恒星与太阳从地平线上一同升起的时机,全年只有一天。

回到日出的方向。初中二年级,又学地理。当时我正有晨跑的习惯,所以有机会观察到太阳初升时在地平线上的位置。不是正东!

我观察到太阳每天从东北方升起。至少可以断定不是正东,而是东偏北。之所以能确定东北方向,是因为正午时的日影(的反方向)可以定义正南方。正南的180度是正北。正南和正北之间90度,是正东和正西。

太阳不仅从东北方升起,我后来还观察到太阳落下的方向是向西北方,而不是正西。东北人知道,因为向北的窗户被晒得够呛,东西都掉色了。

最近有长春的前辈老师发朋友圈提到,他在傍晚的时候发现在长春正东正西(这可以参见百度地图或者高德地图)的街道上,能看到日影向南指。也就是说,太阳偏北,在西北方。

在网上查一下作为佐证。

长春市2023年夏至日的日落时间,在http://richu.ttvz.com/cha/changchun-20230622.html查到为 19:24。

长春的经纬度,用bing查。

https://gml.noaa.gov/grad/solcalc/azel.html根据经纬度和日落时间,查到6月24日日落时的方位角为 由正北顺时针旋转 284.26度,超过正西(284.26-90*3)= 14.26度。

下图,直观感受一下,西偏北14.2度,俯视图。

2.简单原理

再确认复述一遍观察,北回归线以北的地点,都有机会看到太阳在 北面。太阳初升和落山时,会在东北和西北方,而不是正东、正西,也不是东南或西南。

简单的原理是,越向北的地点,即纬度越高,现象越明显。在北极圈里,夏至日前后(春分和秋分之间)极昼期间,太阳向大约西方落山,越过正西也不消失在地平线下,直至正北再转回来——午夜已过,太阳开始初生,由东北方升起。

以上,是以(众所周知的)极端情况解释一般现象。以下,原理再复杂一点。

北回归线以北,春分和秋分两天,白昼与夜晚时间相等,各12小时。太阳从正东升起,向正西落下,刚好180度。春分以后,秋分以前,特别是夏至日这一天现象最明确,白昼时间长于黑夜。

同时,太阳在天幕中移动的角速度是恒定的。

所以,要想得到超过12小时的白昼,初升至落山,太阳划过的角度必须超过180度才行。白昼和黑夜的时间差越大,太阳在白昼超过180度的角度也要越大。越过180度,就是从正东的北面初升,向正西的北面落下。

还能得到一条与主线关系不大的结论——秋分以后,太阳将从东南方向升起,向西南方向落山,白昼时间短于12小时,太阳初末的方位角之间小于180度。

但是为什么呢,地理书上不是这么说的啊?地理书上还有图呢。

手绘精度这么高的图示,远超出我的能力,求助geogebra。

3. 原理图示

我们先用地球的图示分别定义 东西方向、黎明,然后解释原理。

3.1 东西方向的定义

地球的侧视图如下。下图的视角是,北极点和南极点分别在最上和最下,地球的地轴与纵方向完全重合。

请注意以下3个特别的标注。1.南北方向。在长春本地人看来,所谓南北,是沿当地的经线方向,向北极点的是北方,向南极点的是南方。2.东西方向。在这一点上,长春本地人与上帝视角看地图时通常的感觉不同。上帝视角看地图,我们一般隐约觉得沿42度(长春纬度43,然而42容易记得多)纬线,向左为西,向右为东。但是当地人认为,东西方向应该是直线,而42度纬线是弧形。

如下图所示,绿线是同纬度所指的“东西”。当地人认为的“东西”在通过长春的一条测地线——球上周长最大的弧——上面。过长春一点,地球上有无数条测地线,下图中的红线是测地线之一,是过长春和西班牙北部同纬度地点(和球心)的测地线。过长春的经线也是测地线之一。

那么哪一条测地线才是长春当地人认同的“东西”方向呢?是与“南北”方向垂直的那条测地线。

换个视角,从长春的正上方,也就是从长春本地俯视大地,如下图所示,标注了蓝色“东西方向”的大弧测地线为东西方向。你看,东西方向是直的,不是弯的,42度纬线是弯的,弯向了北方。

调整一下角度,从北极上空俯视,我们可以看到,长春的白昼时间,即晨昏线与42度纬线的交点(“黑夜到来”与P点)之间,白昼部分大于180度(过北极点、南极点的淡紫色面积上缘为180度直线)。

3.2 黎明的定义

我们要讨论的是接近黄昏或者日出的时候,太阳的方位角。不失一般性(哈哈),我们讨论黎明的时候。

什么是黎明?从当地视角看,太阳即将出现在地平线上。从上帝视角看,太阳直射点即将到达 晨昏线中早晨的一侧。

什么是晨昏线?地球的白昼即太阳照射地球的半边 和 地球的黑夜即太阳照射不到的地球影子的半边,二者的交界线。晨昏线与阳光垂直,或者说,晨昏线是与阳光的方向垂直的平面与地球表示的交界形成的圆。

如下图所示,夏至日前后,金色的阳光从右上角直射在北回归线上。侧视图中,晨昏线刚好把地图分割为左下半边黑夜,右上半边白昼。

换个视角,顶视图,从北极方向看,如下图所示。长春,当地球逆时钟转到“黎明到来”那一点时,即晨昏线与42度纬线交点时,看到太阳升起——太阳即将出现在地平线上。

3.3 黎明时的太阳

为什么正午时太阳在南方?因为太阳的直射点在北回归线,在“南北方向”的南面——并且在“东西方向”这条线的南方。如下图所示。

黎明的时候呢,太阳在哪里?如下图,太阳在金色的“北回归线23.5度”那一点。长春在哪里?在“黎明到来”那一点。

太阳,即金色的“北回归线23.5度”那一点,与长春的南北相对位置如何?

如果你认为沿经线方向向北极的方向是北,没错。如果你认为42度纬线分割了南北,那么,这是上帝视角。在长春本地人看来,“东西方向”的蓝色测地线的北面,就是北。

如下图,此时长春在图中 黎明到来,东西方向是长春(在大地上与经线圆垂直)的测地线。

可以看到,太阳正直射右侧金色点“北回归线23.5度”处,这一点,在东西方向测地线的北面。这就是长春当地人看到的,黎明时日出的方向。为什么我们一般认为太阳应该在南面呢,因为我们看地图的时候以为太阳“北回归线23.5度”在42度纬线的南面。但是,这是上帝视角,不是长春本地人的看法。

换个角度,如下图,从长春本地的正上方看,如下图所示,太阳正从东北方升起。

4. 东北是北方吗?

以上我们可以看出,在高纬度地区,不同于课本中粗略的写法,太阳的初生和落山,夏季是在东北和西北,而不是正东、正西。这是由于纬度较高,或者由于过于细节,不适合在课本中深入讨论导致淹没重点和主流。

有个类似的观点——东北是北方吗?东北当然在整个中国相对较北的部分。说起来有点奇怪,在相对较北的部分,难道不就是北方吗?这取决于如何定义北方。

“你们北方人不是喜欢吃面吗?”

如果不谈祖上,我可以算地道的东北人。不仅我,事实上,绝大多数东北人的地道东北,都不能讨论祖上。我,以及这些东北人,从出生到现在,都是以大米作为主食的,吃面(无论面条还是馒头)相对较少。为此,还被中原的同学嘲笑过,你们东北的面的做法也太贫乏了。因为我们不怎么吃面啊。

那么,为什么会有说法“北方人喜欢吃面”呢?因为,东北不是北方。在“北方人喜欢吃面”这句话里的北方,全称是 中国的北方,简称是 华北。因此,东北不在北方,东北人不是北方人。东北作为中国大米的主产区(大米是之一,粳米是唯一),怎么可能不吃大米,都进贡了吗?

北方人喜欢吃面,这说法往深了挖……是分裂……啊。或者 (在中国相对较北的部分之)东北不是北方,东北人不是北方人?

为什么长春的太阳在北面,使用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度。再向北,再向北,太阳会持续由东、向南、向西,再向北,在你还没有感觉的时候转回东方,白夜。

虚数i开方结果是什么

1. 虚数i开平方根

二猫问,-1开平方根,得到的是虚数i;虚数数i开平方根,得到的是什么呢?

即 已知sqrt(-1) => i,

问 sqrt(i) => ?

2. 不能开方-什么是开方

简单粗暴的回答是,i不能开方。这种回答也不是没有先例,在除法里,我们规定 任何数都不能除以0。就这么规定的,似乎也没有什么原因。

真的没有原因。有,老师十有八九也讲过,可能咱们都没有注意到,或者后来考试也不是重点,咱们就忘了。就像网上公众号提到“吾生也有涯,而知也无涯”后面还有半句,不少人大呼被课本骗了。语文课本的书下注释明确写了后半句,“以有涯随无涯,殆已(我印象里是 汲汲乎怠哉。存疑”。这样的例子还有,共同点是你自己没注意怨谁。

a/0 非法,原因是 任何数乘以0都不能等于a。这是当时老师讲的。其背后的原理是 a/

0 并非一个数字,甚至这个数是否存在我们都不知道。a/0不是个数字,它是个运算。a/0表示这样的运算,如果这个运算可以求解,那么得到的数字 乘以0等于a。

类似的2/3的意思是 这是个运算,这个运算如果可以求解,那么所得的数字是 乘以3等于2的那个(那些?)数字。为了表示2/3这样的数字(!)我们由整数域扩展得到有理数域,这是另一个故事,按下不表。

我们确实有过规定,规定任何数不能除以0。那么是否有规定 i不能开方呢?不记得。

那么,我们类推一下。除以0的先例中的规定,要看除法的定义。虚数i是否能开方,我们要看看开方的定义。

什么是开方?

开方是一种运算,sqrt(a)的意思是 如果这个运算可以求解,那么所得的数字是 平方以后等于a的那个(那些?)数字。

运算sqrt(-1),得到的结果是i。为什么呢,因为 i^2 即 i*i => -1。这是开方的定义决定的。

那么sqrt(i)的意思是什么呢?这有点麻烦,我们暂且搁置这个话题,用geogebra求一下。

3. 用geogebra试试

先测个空白,sqrt这个函数能不能用。

这什么玩意。

世界上第一个无理数,这个可以。

看来geogebra可能有特殊的语法,我不会。想个诡计吧。

-1的平方根是i,这是已知部分。

可以,可以。虚数i的平方根是0.71+0.71i,一个复数。而且geogebra贴心地给出了这个数在复平面中的位置。

图中,z1是虚数i,z2是sqrt(i)。

我说,看起来z2也能求平方根啊。二猫说,肯定能啊,既然它也是个复数。

我在geogebra里输入z2,怎么也不对。二猫说,“得用 z 下划线 2”吧。我心想,你平时偷摸学了不少啊。

结果是这样的。

4. 复平面-乘法的含义-手动求sqrt(i)

我若有所思,0.71……这数字咋这么熟悉呢。

过了一会儿,我在白板上画了下面这张图。

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

回到刚才我们暂时搁置的线索——开方到底什么意思。

开方是这样的运算,如果a=sqrt(x),那么a是这样的数字a*a=x。一个数字x开方得到的数字a,a自己乘以a自己,能得到x。

那么sqrt(i)什么意思?一个数字,这个数字自己乘以自己,其结果是虚数i。

下一个问题,什么是乘法?在复平面上,我们已知(什么时候知道的?我也不知道,反正应该已经知道了)乘法是 绕原点逆时钟旋转(我们姑且忽略模的增长,假装没这回事)。

小结一下,
开方 是……符合……的乘法。
乘法 是 绕原点逆时钟逆转。

虚数i是什么?复平面上 坐标为 (0,1) 的那个点,即z1。

虚数i开方,就是 有个数字,它旋转两次相同的角度,就能从x轴正方向到达 (0,1)。这个数字是什么?

虚数i是(长度为1)角度90度的那个点。哪个点旋转两次相同的角度能达到90度?45度。

所以,虚数i开方,是长度为1,角度45度 的那个点。

长度为1,角度45度 的那个点的坐标是什么?在单位圆里,那个点的横坐标是 半径1*cos(45),那个点的纵坐标是 半径1*sin(45)度。

三角函数 sin(45)=cos(45)=sqrt(2)/2,即

结论,sqrt(i) => 0.71+0.71i.

这一结果验证了geogebra的sqrt的结果。

5. 任意复数开任意(实数)次方-十二平均律

我们可以再求得更具有一般性一些。

虚数i的3次方根,结果是多少?那个斜体(?)的i是按alt+i打出来的。

-1 的2/3次方根,结果是什么?

数字长得像而且眼熟?因为那是60度和30度的正弦和余弦。是对180度和90度三等分得到的角度。

几次方根,就是把角度等分多少份。因为几次方,就是自乘/旋转几次。所以几次方根就是几等分角。

十二平均律,就是把一个八度内的音程等分成12分。跨八度是频率乘以2,所以等分就是开12次方根。

2/3方根就是三等分,再取两份。

十二平均律中一个八度里的第2个音,距离最左面3个8度^1/12,即3个倍频的12次方根,就是对倍频12等分,再取2份。

6. 数域

听说,复数是数域扩展的终点。所有的运算,其来源和结果一定不会超过复数的范围。

如上示例,任意复数可以开任意实数的方根。那么,任意复数,可以方根时,可以开任意复数的方根吗?

虚数i的虚数i次方,即i^i,如下图所示,这样行不行?

复平面上的几何意义是什么?需要扩展数域才能计算?

复数是数域扩展的终点吗?

批卷子,以及其中的时间花费和技术

批卷子,再把分数填写到教务系统上,还有各种报告和表格,需要5个小时以上(尚不包含主考/监考的时间 90分钟,也不包含命题的时间)。以一门3学分的课程为例,每2周3次授课,一次每周,一次隔周;每次90分钟。计54学时,合40.5小时。在这门课程中,除授课40.5小时以外,需要额外花费5小时批卷子、核分、上分、制表和写报告。也就是说,不完全统计,十分之一以上时间用于被管理而不是教学。十分之一,其时间消耗估计大于整个课程中的任何一章。

十分之一时间这么久,就值得总结时间在各项活动中花费的比例,以及有哪些技术可以用于提高效率。

1. 试卷排序

在正式开始批卷子工作以前,先要排序。教务部门要求试卷在教师上交时必须以特定顺序排列。比如按学号、按教务/选课系统中学生的次序、按考试的座次。不同时期有不同的排列要求,因此每门课程,我都重新阅读一次当前政策,按要求执行。

当前执行的策略,在考试中,监考人员和主考,会要求学生在试卷左上角写上签到的序号。这个序号就是教师上交试卷时的序号,因此学生写上大字有助于教师对试卷排序。但是这不能完全解决问题。原因之一是,经常有学生写错这个序号,错误率在十分之一左右。即50人左右的班级,有5人左右写错。因此,不仅遇到写错的序号需要排序,而是要对所有序号核对一遍。此外,学生并没有责任在试卷上写序号,没有任何条文有此要求。确实有同学不写,可能忘了,也可能重视自己的权益。

排序,考虑到试卷这种实体,每次交换或插入、比较的花费的代价与计算机算法不同,所以我一般在总体上使用归并排序,分组以后使用插入排序。感觉效率和费劲程度都较好。

排序之后,与缺考记录单对比,确认相符。

2. 批卷子

吕老师在一次会议中讲过,要先用铅笔试批几份。假设这几份具有典型性的话,根据这几份试卷考虑一下本学期判卷的严宽程度。

判卷第一要条,甚至比正确更重要,是公平。所有试卷,必须根据相同的判卷准则。因此,如果判到后期万一发现哪道题判错了,纠正的工作量相当大,因为此前的必须全回溯一遍。这与程序设计中,bug存在的时间越长修改的工作量越大,是一致的。

这个方法我执行了十五六年,甚至一度所有试卷全用铅笔判一遍。虽然增加工作量,但是减少了担心判错带来的紧张。接下来再用红笔抄在卷面上,再擦去铅笔判的版本。但是,后来的教学检查中曾经判定我擦得不够干净,要求重擦。从此以后,我就只用红笔判,错了就剌掉,签名。也有偶尔错的,也有改完挺乱的,不过我不紧张了。

判卷的时候,答案放在旁边对照。如果同学们答得普遍地好,或者连续几位同学都答得不错,答案就背下来了。如果连续几位同学出错,答案就记不住了,记住的也会忘掉。头疼,没啥招。

3. 算分数

小题分数累加到大题,总数值较小,一般可以口算。

大题分数累加得到卷面总分,我没有能力口算。见过同事口算又快又准的,特别是父母是教师,从小帮助核分的同事。令我羡慕不已。我的口算(以及笔算)能力之差,有时候二猫妈和二猫也嘲笑我口算错得离谱,差距我咋考上大学的。因为考大学时计算不那么重要。如果考大学时计算的比重再增加一些,我怀疑我就考不上了。

所以大题分数累加,我必须借助工具。以前用计算器,卖菜的有声音的那种最好,听到可以帮助复核。

后来用 ipad 里的 siri,感觉这个最好,简直离不了手。长按呼出来,我就读“28+34+27+11等于多少”这样。Ipad会语音报出答案,我瞥一眼屏幕上显示的我读过的数字。“等于多少”也可以不说。下载试过国内的几种计算器,语音识别失误率不能忍受。没试过国外的计算器,我猜它们听不懂汉语的数字。

大题加得卷面总分,这个过程要执行两次。

接下来,把纸质试卷上的卷面成绩抄到excel表格卷面成绩中。这个过程可以借助家人,我经常需要求助二猫妈。试卷和excel表格都已经按相同次序(就是教师要上交时的)排序完毕。我按excel读人名,二猫妈读试卷上的分数,我复述,然后记在excel中。这是第一遍。第二遍,我读人名,然后读分数,二猫妈看试卷确认。

在家人繁忙的时候,教师也得能独立完成这项工作。我使用过 讯飞有声,或者手机的录音机。第一遍,我口述成绩录音,然后播放录音时,我录入得到成绩单。第二遍,成绩单导出成 excel转成word,再存成excel,微信传到手机,用ES文件管理器打开,存在donwload目录下;用讯飞有声导入,讯飞有声读成绩单,我看卷面复核。

这样,就得到了卷面成绩。

4. 作业成绩

假设 总成绩中包括 期末成绩、作业成绩、小组成绩。分别得到期末成绩、作业成绩、小组成绩,在教务的登分系统中(按教师指定的规则)计算。

作业成绩,我们从每位同学都已经有了对应的分数开始。接下来的难点在于,作业的名单和卷面成绩的名单,这两种名单的顺序可能不同,看起来像下面的表格这样。

把姓名、作业、卷面对应起来的解决方案,一种是排序。把其中之一按另一个排序。问题在于,按另一个中“另一个”的排序规律是未知的,或者不能确定。也可能是按学号排序的,也可能根本就没有规则。是的,有时根本没有规则,但是你按没有规则这个规则排序。我校登分系统,经我测试,下载模板中的姓名可以排序,不影响上传时的成绩与姓名的对应。谢天谢地。

把姓名、作业、卷面对应起来的另一个解决方案是 nslookup 函数。

先复制得到 姓名、作业。

然后增加卷面这一列,值为如下图中 卷面 这一列绿色框中的公式。

在公式中,
蓝色“Q3”对应左方蓝色方框中的“阿大”,表示要寻找的卷面成绩属于 阿大;
红色“M$3:N$12”对应左侧红色方框,表示在哪些单元格中查找(注意其中的"$"表示绝对坐标,避免在复制公式时因为位置不同而导致寻找的范围变化);
黑色“2”表示卷面成绩在单元格M$3:N$12的第2列;

FLASE表示精确查找。

综合起来,以上公式表示,在单元格M$3:N$12中的第1列查找阿大所在的行,把查找到的这一行的第2列的值填在当前位置。

接下来,把这个公式复制到下面的每一行。得到所有人的卷面成绩。

最后,如果成绩冻结了,那么复制并按数值粘贴到另一个位置备用。

5. 小组成绩

小组成绩,假设小组中每位同学的成绩均相同。用vlookup函数。

(感谢)学习委员或班长提供分组名单,形式一般如下。

在计算小组成绩时,由于不符合vlookup函数的条件,因此不能直接使用上述表格。由于同学们和班长和学习委员并无责任按教师要求填写名单(这会带来学习以外的工作量,即(教师)管理导致的时间成本),因此由教师处理。以上表格备用。

教师根据小组的工作情况得到小组成绩单,形势一般如下。

按下来,我们把小组成绩由对应到小组,推进到对应到每位同学。

首先,我得要得到 姓名-所属小组 这样的形式。

复制 | 选择性粘贴 | 转置,如下图所示。

得到下表。

删除第1列,得到下表。

按……这样的规则合成而为一列,如下表所示。

对每个小组 复制 | 填充单元格,执行了三次,得到下表。

去掉每组的表头,加上总的表头。

以上得到 姓名-所属小组 表格。

准备公式查询 此前备用的学委或班长提供的表格,即下面这张表。

Vlookup公式如下。含义在上面提过一次,此处不赘述。

这样,就得到了小组成绩。按作业成绩的处理方法,或者排序,或者vlookup,得到 姓名-卷面-作业-小组 成绩表格。

6. 成绩提交

我校的教务系统可以下载成绩录入模板,不必须在浏览器中录入。虽然登录必须使用360浏览器,别的统统不行,但是不必在浏览器中受折磨已经谢天谢地了。为了每学期录入成绩,又不愿望忍受360(毕竟我家的机器是我的,我有完全的所有权,可以决定什么软件不得安装;单位的机器虽然不是我的,但是如果安装了什么软件导致安全事故也是我的责任),所以我把360浏览器装在了 sanboxie中。为此,我贡献了1GB硬盘空间(以及CPU)给360浏览器,每学期用一次。

下载的模板里包括 学号、姓名,以及定好的成绩由哪几部分按什么比例加权,比如在期末卷面占70%,平时成绩30%,这样。学号-姓名-成绩 可以排序,真好!

我下载模板,排序。把我此前得到的 学号-姓名-卷面-作业-小组 成绩都粘到模板里。上传。

7. 成绩分析

可以下载 成绩单、成绩分析报告(的模板)了。其中成绩分析报告模板有bug,需要手动修改图表的数据范围。这个工作每学期都要做一遍。我有足够清醒的觉悟和意识,清楚模板只是为了方便我的工作而提供的,出错都是我的责任。类似的,试卷模板的头和脚,我也每年修改一次。为什么不用上一年改好的模板?万一今年模板变了,我没有看到区别怎么办。所以,所有的工作要从上级下发的模板开始,而不是从我的老经验开始,那不够可靠。

在成绩分析报告中,要回答一系列的问题。其中包括著名的“为什么学生成绩不服从正态分布”。各位教师同事,不要瞎编造谣。上级从来没有要求教师保证学生成绩必须服从正态分布,所以别向我科普小样本下正态分布如何如何。上级没要求过这个,上级要求的是如果不服从正态分布,解释一下。我每年解释一下。有时候看着差不多正态了,就不解释。

还有优秀百分比什么的,这一类,上级从来没有*要求*,而是认为应该达到什么样才合理吧。教师同事,你脑补一下,领导和颜悦色的请教你这位有经验教师的表情,“应该达到什么样才合理吧”。你对自己的经验和教学理论和你以前学过的知识,对自己算出来的分数分布到底有多少信心?考验你的时候到了。

8. 达成度报告

注意,我以上提到要花5个小时的工作里,还没有包括这项工作。

为了写达度度报告,得做一系列工作,其中这里我要讨论的是 问卷。问卷的对象是学生,要求学生回答对每部分章节或知识点或者什么什么指标,要求学生回答、对这些内容学生认为自己达到了何种程度。因为要求学生自己回答,所以得用问卷。因为考试结束以后(以及课程开始之前,所以我不赞同教师在开课前要求学生预习或做题,因为教师无此权利)教师不宜打扰学生,所以要在授课期间,课程即将结束时发布问卷。发布问卷时,上级没要求(上级甚至没要求发布问卷),我觉得教师应该意识到,咱们没权利要求学生必须填这个问卷,没有任何条例作为依据要求学生填写。是的,教师必须提交,但是学生无此义务。所以,每一轮,有多少同学配合,我都表达了感谢。对于不愿意配合的同学,我也觉得人家做得没错。帮我是人情,不帮我是本份。那是我的活儿,不是学生的。

假设,我收集到了足够(多少?)学生对问卷的填表。那就是此前谈过的
https://zhuanlan.zhihu.com/p/645284339 多列数据的分类统计。
统计之繁复,值得单独写了一篇博客,还挺长。

9. 总结

时间如此宝贵,以至于时间事实上就是生命本身。时间不仅是工程上,也是管理上,也是人生中,最重要的因素。

工作中,时间占比高达十分之一的,需要高度重视,记录花费的时间,记录每一种子任务花费多少时间。也需要高度重视,考虑如何提高效率节省时间。

把时间花在刀刃上。

没有批卷子经验的同学们,可能会以为“是不是就你笨,用好办法的话会快很多,花不了多少时间啊”。我所见的事实是,很多不熟悉(比我更不熟悉)计算机工具使用的教师,兢兢业业花了比我更多的时间,令人心疼。如果你刚好知道有什么办法能提速增效的,一定要告诉我啊!

//封面

// 我根据下面这本书,在瓦楞纸上刻的。

// Woodimals Creative Animal Puzzles for the Scroll Saw (Jim Sweet)

 

多列数据的分类统计

这个问题在三两年前就2022年4月,2022年11月分别困扰过我。当时解决了,然后忘到脑后。后来又遇到同一次问题,虽然后来也解决了,然而解决之前又一次走上同一条弯路,这感觉令人不悦。

最近2023年7月,又一次遇到同一类型的问题。探索的顺序和以前又完全相同。我不禁想起我的本科导师李树杰老师教导过我的,“杨儿啊,你得做笔记啊。”我当时说什么来着,“那些失败的过程有啥好记的。”

得正经记录一下了,不然还会第四次错。贴出来是最好的记录,因此有了这个帖子。

先从问题的背景和故障现象说起。

微信图片_20230722224008

1. 问题

如下表所示,是学生对教师授课效果的评价。例如,阿大同学认为,教师第一章讲得优,第二章讲得良,第三章讲得中。依此类推。

要求是,统计 每一章 分别 有多少优、多少良、多少中、多少差。即,想得到下面的表格。

按上表所示,我们可以看出,纵向看例如第一章;有7人优,2人良,1人中,共10人;横向看例如优的人数,第一章7,第二章4,第三章2,共13人。

另一个类似问题的场景,订餐-派送。如下表所示,我们希望按宿舍得到一张表,按宿舍-楼层再得到一张表。每张表都按 早餐每种菜品多少份、午餐每种菜品多少份、晚餐每种菜品多少份 计数。

需求/字段尚不稳定,可能多次随时变更。每次变更后都要求 快!

2. 为什么用透视表不行

统计数据最快的不是R或者python,更不是matlab。而是excel。这里的快不是指执行速度,而是指开发。响应快速,培训周期短,用户接受迅速,部署环境简单(经常已经安装过)。

Excel里看起来最像解决方案的是功能强大的 透视表。

然而不行。

关于透视表的使用,值得另用一篇博客才能说清楚。在此暂且略过,假设你已经会了。我尝试了每个字段在行或者在行,尝试了各种计数值的方法,都得不到我想要的结果。各种尝试的结果都非常乱,在此不贴图了。

我想要的结果是,再贴一遍,如下。

中间是计数值;行,是优良中差;列是……每列分别统计。

如果每列分别统计,但是不要求放在一张表中,透视表是可以胜任的。如下。

我们可以看出,这三张表合在一起,就是我希望的结果。

严格地说,这三张表(每张表取1列,横向拼接在一起;
并且行标签都使用 优、良、中、差这4个条件;
并且计数值都使用 优、良、中、差这4种情况对应的计数)合在一起,就是我希望的结果。

“合在一起”符合这么复杂的定义才行。但是透视表的 多列 并不是这个意思。

透视表的 多列,是指 每一列作为一个条件,这些条件以 与操作 复合。例如

以上数据得表下表。

使用透视表的前提条件是 只有1列是数据(计数项,或者求得项等),基余的列都是条件。而我在这里遇到的两张表,学生评教师的 和 订餐-派送 的,其中的 每章 或者 每餐,都不是条件,而是多列数据。

如果从SQL的角度考虑,那么相当于 group by 语法。Group by后面如果有多个列/字段,列/字段之间用逗号分隔,其含义是 既符合又符合,例如 既是东北地区,又是吉林,可爱度10;东北地区所有省份可爱度之和 30。

另一个可供参照的技术是 平行数组。两个数组是独立的,一个数组是语文成绩,另一个数组是数学成绩。两个数组都使用学号作为下标,因此发生关联。两个数组都是计数或求和项,下标(对应excel中的左侧那些列)是条件。

3. 解决方案0 归约

有个近乎耍赖的方案。这个故事告诉我们:1.很多巧妙的方案都近乎耍赖,然而有效;2.巧妙不得长久和通用。

既然我们要求的是计数,那么如果正确赋值,我们可以只计数,而不分类、统计、汇总。因此也不需要透视表。

这个问题,我们把 优、良、中、差分别赋值为10、8、6、4。在这里,我们假装这就是教务部门要求的赋值权重,或者教师不会得到比4分还低的评价。事实上的要求共5档,然而4档还是5档并不影响我们的技术讨论,因此忽略这一区别。Ctrl-h,给出对应赋值,全部替换。

得到下表。

求平均值。

得到下面的表格。

可以看到,第一章教学效果最后,第二章稍差,第三章快放弃了。

虽然以上数据已经符合教务部门的期待了,但是在以上归约过程中,我们舍弃了优、良、中、差每个档次的数量,因此丢失了一些细节。

在 订餐-派送 问题中,按类别计数这一节细不能丢弃,如何赋值呢?

令几种类别 正交,使用多项式。用每“位”数字对一种类别计数。

特色1 1
特色2 10
特色3 100
基本 1000
全素 10000

得到下面的表格,计数。

早餐这一列3205的意思是 3份基本,2份特色3,0份特色2,5份特色1。按宿舍和楼层求和,可以得到 地点-类别 派送数量。

春华,2份基本,3份特色1。

如果计数超过10种,那么可以使用为每种类别预留多位数字。

4. 解决方案1 按列分别统计后合并

还可以把多列数据拆开,对每列数据单独统计。

4.1 透视表

对每一章分别用透视表统计。

手动排序,得到下表。

把行和列改为第二章。

得到第二章的统计结果。

用同样方法得到第三章的统计结果。把三章数据横向拼接,得到下面的表格。

4.2 Access - group by

把Excel粘贴或导入到Access。

新建查询,SQL视图如下。

执行得到结果,尚未根据优良中差排序。

然后对F2排序,横向合并,略。

之所以使用Access,是因为拆分单列和合并结果比Excel更方便。

4.3 Excel - countif函数

这种方法学自 OLIVER_QIN cnblogs 奔跑的金鱼。

https://www.cnblogs.com/OliverQin/p/9436814.html

在下图中绿色的单元格中使用函数 countif。第一个参数是用于统计的区域,这里对应第一章。第二个参数是判断的依据,左侧的优良中差是手动键入的。“良”是红色,因为当前统计的是良的数量,引用“良”。

注意需要用形如$B$2的绝对引用,这样在向其他单元格复制时引用的位置不会变动。类似的,第二章和第三章如下图。

5. 解决方案2 转变为一维数据-透视表

把列标题作为变量名,改为一维数据。具体操作步骤如下。

第一步,把表格复制三份,纵向排列。如下表所示。

第二步,删除除了第一个以外的标题行。

第三步,增加一列,章节。按下图填写 第一章、第二章、第三章。

第四步,删除并非本章的成绩。

第四步,把第一章、第二章、第三章3列合并为一列。

以上,完成了把列标题作为变量名,改为一维数据。这样就符合透视表的要求,只有一列,即最右一列 作为数据的计数项,其余的左边两列都是条件。

对上面“一维”表格使用透视表。

手动对行和列排序,得到下面的表格。

6. 解决方案3 透视表-多重计算合并计算数据区域

以下方案最为优雅来自,OLIVER_QIN cnblogs 奔跑的金鱼

https://www.cnblogs.com/OliverQin/p/9436814.html

快捷键Alt + D P,调出 数据透视表和数据透视图向导,选择点选按钮 多重合并计算数据区域。

共3步,所以第2步拆成了2a和2b!此处有手动狗头表情。

选定区域,然后点击 添加 按钮。

注意,此时得到的透视表不是我们想要的,如下表。

当前的行、列、值是这样的。

修改为下图所示,关键点是行由“行”改为“值”,即由按行(姓名)改为按值(优、良、中、差)分类。

多列数据的分类统计

这个问题在三两年前就2022年4月,2022年11月分别困扰过我。当时解决了,然后忘到脑后。后来又遇到同一次问题,虽然后来也解决了,然而解决之前又一次走上同一条弯路,这感觉令人不悦。

最近2023年7月,又一次遇到同一类型的问题。探索的顺序和以前又完全相同。我不禁想起我的本科导师李树杰老师教导过我的,“杨儿啊,你得做笔记啊。”我当时说什么来着,“那些失败的过程有啥好记的。”

得正经记录一下了,不然还会第四次错。贴出来是最好的记录,因此有了这个帖子。

先从问题的背景和故障现象说起。

问题

如下表所示,是学生对教师授课效果的评价。例如,阿大同学认为,教师第一章讲得优,第二章讲得良,第三章讲得中。依此类推。

要求是,统计 每一章 分别 有多少优、多少良、多少中、多少差。即,想得到下面的表格。

按上表所示,我们可以看出,纵向看例如第一章;有7人优,2人良,1人中,共10人;横向看例如优的人数,第一章7,第二章4,第三章2,共13人。

另一个类似问题的场景,订餐-派送。如下表所示,我们希望按宿舍得到一张表,按宿舍-楼层再得到一张表。每张表都按 早餐每种菜品多少份、午餐每种菜品多少份、晚餐每种菜品多少份 计数。

需求/字段尚不稳定,可能多次随时变更。每次变更后都要求 快!

为什么用透视表不行

统计数据最快的不是R或者python,更不是matlab。而是excel。这里的快不是指执行速度,而是指开发。响应快速,培训周期短,用户接受迅速,部署环境简单(经常已经安装过)。

Excel里看起来最像解决方案的是功能强大的 透视表。

然而不行。

关于透视表的使用,值得另用一篇博客才能说清楚。在此暂且略过,假设你已经会了。我尝试了每个字段在行或者在行,尝试了各种计数值的方法,都得不到我想要的结果。各种尝试的结果都非常乱,在此不贴图了。

我想要的结果是,再贴一遍,如下。

中间是计数值;行,是优良中差;列是……每列分别统计。

如果每列分别统计,但是不要求放在一张表中,透视表是可以胜任的。如下。

我们可以看出,这三张表合在一起,就是我希望的结果。

严格地说,这三张表(每张表取1列,横向拼接在一起;
并且行标签都使用 优、良、中、差这4个条件;
并且计数值都使用 优、良、中、差这4种情况对应的计数)合在一起,就是我希望的结果。

“合在一起”符合这么复杂的定义才行。但是透视表的 多列 并不是这个意思。

透视表的 多列,是指 每一列作为一个条件,这些条件以 与操作 复合。例如

以上数据得表下表。

使用透视表的前提条件是 只有1列是数据(计数项,或者求得项等),基余的列都是条件。而我在这里遇到的两张表,学生评教师的 和 订餐-派送 的,其中的 每章 或者 每餐,都不是条件,而是多列数据。

如果从SQL的角度考虑,那么相当于 group by 语法。Group by后面如果有多个列/字段,列/字段之间用逗号分隔,其含义是 既符合又符合,例如 既是东北地区,又是吉林,可爱度10;东北地区所有省份可爱度之和 30。

另一个可供参照的技术是 平行数组。两个数组是独立的,一个数组是语文成绩,另一个数组是数学成绩。两个数组都使用学号作为下标,因此发生关联。两个数组都是计数或求和项,下标(对应excel中的左侧那些列)是条件。

解决方案0 归约

有个近乎耍赖的方案。这个故事告诉我们:1.很多巧妙的方案都近乎耍赖,然而有效;2.巧妙不得长久和通用。

既然我们要求的是计数,那么如果正确赋值,我们可以只计数,而不分类、统计、汇总。因此也不需要透视表。

这个问题,我们把 优、良、中、差分别赋值为10、8、6、4。在这里,我们假装这就是教务部门要求的赋值权重,或者教师不会得到比4分还低的评价。事实上的要求共5档,然而4档还是5档并不影响我们的技术讨论,因此忽略这一区别。Ctrl-h,给出对应赋值,全部替换。

得到下表。

求平均值。

得到下面的表格。

可以看到,第一章教学效果最后,第二章稍差,第三章快放弃了。

虽然以上数据已经符合教务部门的期待了,但是在以上归约过程中,我们舍弃了优、良、中、差每个档次的数量,因此丢失了一些细节。

在 订餐-派送 问题中,按类别计数这一节细不能丢弃,如何赋值呢?

令几种类别 正交,使用多项式。用每“位”数字对一种类别计数。

特色1 1
特色2 10
特色3 100
基本 1000
全素 10000

得到下面的表格,计数。

早餐这一列3205的意思是 3份基本,2份特色3,0份特色2,5份特色1。按宿舍和楼层求和,可以得到 地点-类别 派送数量。

春华,2份基本,3份特色1。

如果计数超过10种,那么可以使用为每种类别预留多位数字。

解决方案1按列分别统计后合并

还可以把多列数据拆开,对每列数据单独统计。

4.1 透视表

对每一章分别用透视表统计。

手动排序,得到下表。

把行和列改为第二章。

得到第二章的统计结果。

用同样方法得到第三章的统计结果。把三章数据横向拼接,得到下面的表格。

4.2 Access - group by

把Excel粘贴或导入到Access。

新建查询,SQL视图如下。

执行得到结果,尚未根据优良中差排序。

然后对F2排序,横向合并,略。

之所以使用Access,是因为拆分单列和合并结果比Excel更方便。

4.3 Excel - countif函数

这种方法学自 OLIVER_QIN cnblogs 奔跑的金鱼。

https://www.cnblogs.com/OliverQin/p/9436814.html

在下图中绿色的单元格中使用函数 countif。第一个参数是用于统计的区域,这里对应第一章。第二个参数是判断的依据,左侧的优良中差是手动键入的。“良”是红色,因为当前统计的是良的数量,引用“良”。

注意需要用形如$B$2的绝对引用,这样在向其他单元格复制时引用的位置不会变动。类似的,第二章和第三章如下图。

解决方案2 转变为一维数据-透视表

把列标题作为变量名,改为一维数据。具体操作步骤如下。

第一步,把表格复制三份,纵向排列。如下表所示。

第二步,删除除了第一个以外的标题行。

第三步,增加一列,章节。按下图填写 第一章、第二章、第三章。

第四步,删除并非本章的成绩。

第四步,把第一章、第二章、第三章3列合并为一列。

以上,完成了把列标题作为变量名,改为一维数据。这样就符合透视表的要求,只有一列,即最右一列 作为数据的计数项,其余的左边两列都是条件。

对上面“一维”表格使用透视表。

手动对行和列排序,得到下面的表格。

解决方案3 透视表-多重计算合并计算数据区域

以下方案最为优雅来自,OLIVER_QIN cnblogs 奔跑的金鱼

https://www.cnblogs.com/OliverQin/p/9436814.html

快捷键Alt + D P,调出 数据透视表和数据透视图向导,选择点选按钮 多重合并计算数据区域。

共3步,所以第2步拆成了2a和2b!此处有手动狗头表情。

选定区域,然后点击 添加 按钮。

注意,此时得到的透视表不是我们想要的,如下表。

当前的行、列、值是这样的。

修改为下图所示,关键点是行由“行”改为“值”,即由按行(姓名)改为按值(优、良、中、差)分类。

对行和列手动排序,得到下面的表格。

总结

(1)核心原理 透视表认为只有一列数据是计数项,其余的列都是条件。

所以可以 拆分为单列统计再合并。

所以可以 把通过把标题改为变量名,把多列数据转为一维数据。

(2)特殊技术 数据透视表和数据透视图向导 可以 多重合并计算数据区域。

(3)你得做笔记啊。失败的实验也同样重要。发表是最好的记录。

对行和列手动排序,得到下面的表格。

7. 总结

(1)核心原理 透视表认为只有一列数据是计数项,其余的列都是条件。

所以可以 拆分为单列统计再合并。

所以可以 把通过把标题改为变量名,把多列数据转为一维数据。

(2)特殊技术 数据透视表和数据透视图向导 可以 多重合并计算数据区域。

(3)你得做笔记啊。失败的实验也同样重要。发表是最好的记录。

微信图片_20230722224018

好工具 | 平铺窗口WindowGrid

窗口在屏幕上以什么样的风格布局,我见过几种典型的方案。

一种是层叠的,或者浮动的。就是一般我们所见到的情况。如下图所示,三个窗口互相有覆盖的区域。激活的窗口在最前面,挡住后面的窗口。工作的时候视线在这些窗口间转来转去。

我见过最疯狂的层叠,是在大二的时候,看机房里旁边的师兄玩windows3.1自带的纸牌游戏。一大堆纸牌从远到近,从上到下,倾泻而下,后出现的覆盖先出现的。我以为是他写的程序,问这个是怎么实现的。他说这个可容易了。这么炫的效果又特别容易,我更加觉得自己无知。后来有另外的师兄告诉我,那是纸牌游戏打赢时候的过关效果动画。

我见过其次疯狂的层叠,是实验课的时候看到不少同学的编程界面。那么大个显示器,整个都被按钮、菜单、toolbar、广告、各种无关的窗口占据着,留了不到十行五十来个字符的空间,挤在里面写代码。大概就像下图这样。

这类同学往往倾向于用鼠标编程序,在写代码的过程中用鼠标比键盘还多。

层叠以外的风格,我本人走的是另一个极端。无论编程序还是写文字,绝大多数情况下,我都是把当前窗口设置为全屏。不仅最大化而已,而是要占据整个屏幕,连菜单和按钮都隐藏起来。绝大多数操作用快捷键,鼠标也几乎不动。

看起来就像这样,同一时刻只能看到一个窗口。Word快捷键 alt-v u 全屏,退出全屏按ESC。

在用word写作文字时,经常需要用鼠标翻页,使得我正关注的段落在屏幕的正中间。使用 Emacs 则这个操作可以由键盘 C-l 完成,令当前位置上下居中显示。

像这样。Emacs和Firefox全屏快捷键 F11。

如果不是正在写文字或者写代码,我的窗口口风格也并不总简洁到如此极端,而是采用平铺式 tiling的风格。

平铺式风格,又称为瓦片式。整个屏幕划分成若干区域,每个区域显示一个窗口。窗口之间互相没有覆盖,分别在某个区域里最大化。如下图所示,左侧、右上、右下,分别由三个不同窗口占据,窗口间彼此不覆盖。因此可以同时看到三个窗口,但是工作时如果要打字输出,那么需要切换激活的窗口。

平铺式还有个特性对我有帮助。我视力不好,需要非常靠近显示器。与你不同,你看屏幕左上角,只需要转动眼睛,我需要向前探头,再上,再向左。费时间而且易疲劳。所以,我希望窗口特别是我关注的段落能精准地显示在我希望的地方,这样能减少左右移动脖子。

平铺式的窗口管理器(以及各式窗口管理器)在Linux下非常繁荣。Dwm,awesome,xmonad,sawfish,xfce4,各具特色。Windows操作系统下,我长期用过一个,忘了名字。这一轮装机器时似乎找过,找不到了,也许停止开发了。微软开发的PowerToys中的FancyZones,看介绍也非常不错。但是PowerToys是个全家桶,包括很多我不关心的功能,尺寸也不小。所以我没有使用。

我用了 WindowGrid,感觉不错。在这里 http://windowgrid.net/。安装文件也就是运行文件,553KB。运行时占内存30MB多一点,CPU 0。

操作的过程很方便。鼠标点击窗口的标题栏,不要松开,这是拖动窗口的起始动作。差异是,此时按下空格键,当前窗口变成青色,鼠标拖动,只能在事先分配的几个区域中停靠。这几个区域,就是瓦片。如下图所示,青色细线划分了区域,3*2的青色范围是当前正要停靠的区域。

我的机器设置了12个纵列,1行。经常把窗口停在左起第3列到右数第3列之间,正对着我的眼睛。

12*1,这比windows内置的 左1/2,右1/2,左上、右上、左下、右下多了些选择。特别是windows内置的区域要么偏左,要么偏右,居然没有正中间u我最需要的这种配置。

鼠标左键在窗口标题栏按下时,按下 左control 可以只移动而不改变窗口大小。也只能移动到指定的几个区域中,在目标区域中最大化窗口。

 

如何将无损音频格式FLAC转换为其他格式,如MP3或AAC?

如何将无损音频格式FLAC转换为其他格式,如MP3或AAC?

---------------------------

用ffmpeg。

  1. 测试播放 flac 格式的文件。
ffplay filename.mp3

2. 转换

ffmpeg -i filename.flac filename.mp3
ffmpeg -i filename.flac filename.aac

3. 测试转换结果,播放mp3和aac格式的文件。

4. 慎重起见,换个播放器试试。

用微软windows自带的媒体播放器播放,没有问题。因为界面看起来就是空白的窗口,所以略去截图了。

文件大小如图所示。

由太阳角度和时间求地点

假设有张照片,有太阳照射下的影子,知道房屋墙基的角度,知道照片拍摄的时间。求拍照的地点经纬度。

1. 题目

就是这张照片。

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

橙色线,即墙基的角度,为东偏北25.4度。

(原本拍照想题目的时候,以为房屋是正南正北的,即墙基是正东正西走向。在百度地图上看了一下,并非如此。截图放在geogabra里量了一下角度,即上图。)

拍摄时间为 2023年6月30日15:22。

2. 分析

2.1 概念

本篇标题中的“太阳的角度”并非单一变量,而是包含两个数据。其中之一是 高度角 Elevation,另一个是 方位角 Azimuth。

高度角,指 在纵剖面上,太阳的投影-观测者-地平线 之间的夹角。

方位角,指 在水平面上,正北-观测者-太阳的投影 之间的夹角。

https://gml.noaa.gov/grad/solcalc/azelzen.gif

上图来自 https://gml.noaa.gov/grad/solcalc/glossary.html#azimuthelevation.

图中,h为高度角,A为方位角。

2.2 原理

太阳的高度角 与 时间、纬度 有函数关系。由高度角、时间求得的纬度不唯一,分别在太阳在地点上的直射点两侧,距离太阳在地点上的直射点有相等的纬度差。

太阳的方位角 与 时间、经度 有函数关系。

例如下面的示例,由经度、时间 求得 太阳的方位角,由纬度、时间求得 太阳的方位角。我们需要的是两个反函数,由 太阳的高度角、时间 求得 经度,由 太阳的方位角、时间 求得 纬度。

https://www.osgeo.cn/app/s1904

我们需要找公式或找到可查的表。

2.3 自变量

函数值是 经度和纬度,我们需要的自变量 为 太阳的高度角、太阳的方位角、时间。

时间已知。

太阳的高度角可以由建筑的影子和建筑的比值得到;太阳的方位角可以由墙基的角度得到正北,由建筑的影子在大地上的旋转角度得到。

影子长度的测量和影子角度的测量,细节在下文中。

3. 测量

在照片上做出辅助线,得到下图。

图中的角β是高度角。

图中的角 α与方位角有关。把百度地图与照片叠置,旋转照片得到下图。

其中绿线为正东正西走向,红线为太阳影子的方位角。因此太阳方位角与东西方向的夹角为
25.4度-∠GFH。

3.1 太阳的高度角

根据带辅助线的照片,用geogabra可测得太阳高度角41.82度。

或者 根据房角高CD的像素个数 与 房角的影子长DE的像素个数,二者比值构成太阳的高度角β的正切。根据反正切可求得β角大小。

用 画图 测量像素的坐标,在excel中用勾股定理算得距离。用反正切求得角度为40.5度。

注意到此处有误差,由于视角并非水平,因此求得的角度略小于真实值。考虑到影子的本体是建筑物而不是较短的钉子,因此测量误差较小;并且视角高度不大,所以认为误差可以接受。

3.2 太阳的方位角

视角高度不大,因此对水平面角度(和长度)的测量误差较大,需要做透视矫正。

选了个容易使用的工具。用华为手机拍照功能中的 智慧视觉(左上角)| 扫描 功能,校正照片。

其中左上角是房角在水平面上的投影。左上角-右上角和左上角-左下角 之间等距,由假设栏杆的每根立柱间隔无论左右方向和前后方向都是相等的推得。右下角是做平行线得到的。

测得太阳影子与房基间夹角23.02度。

因此从正北顺时针的方位角为 270-(25.4-23.02)=267.62度。

4. 代入公式

所需公式在网上可以查到,未重新推导。

4.1 高度角

4.1.1 高度角公式

高度角公式

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

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

其中

hs 为高度角

φ 为地理纬度

δ-赤纬

Ω-时角,deg

4.1.2 赤纬公式

赤纬公式

https://zhuanlan.zhihu.com/p/265303609

https://pic4.zhimg.com/v2-54d355b186fcee176de2edb3fd45c3fb_r.jpg

其中t为由3月21日到所求日期6月30日的差,用excel求得值为101,如下图。

把101代入赤纬公式得到23.15度。旁证检验,6月30日刚过夏至不久,太阳由北回归线23.5度向南,求得赤纬的结果与此符合。

4.1.3 时角

在高度角公式的贴子中,孔sysu

求得15:22对应的时角为 (15.37-12)*15=50.55度。

4.1.4 反函数

不必求反函数,可以根据高度角公式在excel中制表,局部如下。

上图中,由纬度、赤纬、时角三个变量求得高度角。其中赤纬和时角在本题中是固定值,已求出。以1度为间隔穷举所有北纬纬度。

观察表格可以发现,在高度角40度左右对应的纬度范围相当大。如果考虑到测量的误差,北纬10度至北纬60度都有可能。

画XY散点图如下。

散点图由上图可以看出,根据高度角求纬度,由于高度角范围较小,所以计算得到的高度角误差较大。(纬度分辨率相当低。)

4.2 方位角

不需要引入方位角公式。

时差,经度差与时间差对应,每360度对应24小时。因此 360/24=15,即每小时对应15度,或每度0.067小时。

拍照时间使用东八区时间-北京时间。同一时刻,东八区中央经线东经120度的太阳方位角为259.56度。根据 https://gml.noaa.gov/grad/solcalc/azel.html 查得。

此前已算得太阳的方位角267.62度。与东八区间的方位角相差267.62-259.56=8.06度。照片所在地比东经120度的太阳更偏西,所以地点更东,120+8.06=东经128.06度。或者按每度111km,拍照地点为由北京向东8.06*111=894.66km。

5. 验算

剧透得知,照片拍摄地点为 吉林省长春市东北师范大学净月校区。

根据 Stellarium 得到 经纬度。

https://gml.noaa.gov/grad/solcalc/azel.html

查得高度角41度左右,方位角264度左右。

或者 用 https://scienceasdf.github.io/site/solarAngle.html 在PC机获得大致的经纬度。

得到高度角为41度左右,方位角264度左右。

https://www6b3.wolframalpha.com/Calculate/MSP/MSP550511ie5c243908hid200003i4hhge80hh56880?MSPStoreType=image/gif&s=4

似乎看起来不错,由经纬度算得的高度角和方位角 与 测量值相差不大。

测量值 根据经纬度的计算值 误差
高度角 40 41 -1
方位角 268 264 4

然而误差相当大。

因为纬度分辨率差,所以高度角即使测量非常精确,求得纬度的范围也非常大。按我的测量,纬度从北纬10度到北纬60度,跨度5550,大致相当于从漠河到曾母暗沙。

方位角差4度合地面4*111=444km,从长春到珲春,再远一点就是日本海。