月食和日食计算

基本参数

地球公转周期 365.2564 天
月球公转周期 27.32166 天
月球轨道面与地球轨道面交角 α=5°09\alpha=5°09'
地球和月球都是椭圆轨道,但是考虑离心率都很小,可以近似为圆形。

计算思路


计算月食或者日食即计算向量 SunEarth\overrightarrow{SunEarth}EarthMoon\overrightarrow{EarthMoon} 的夹角如果接近0,即太阳、地球、月球一线月食发生。类似,若夹角180度,即日食发生。

继续阅读“月食和日食计算”

银行推销的“低息”贷款到底划算吗?

1. 前言

我们经常收到银行的贷款推销,有的利息较高,我们通常就直接拒绝了,但是有些看似利息较低甚至可以“赚差价”的,没有仔细计算就接受了。如果仔细计算,就会发现其实中了圈套。

真实案例:
贷款分12期还款,贷款10000的话,每月还款848.333(等额本息),总计还款10180,年化利率1.8%?虽然1年期存款利率目前已经进入1时代,但是有些小银行或者理财产品可以做到2左右。按2%的平均利息水平粗略一算,10000块存起来可以赚200利息,贷款利息180,还能赚20块钱。聪明的读者,这样算对吗?能赚到利息差价吗?

乍一看,好像是赚了20块钱,但实际上赔了73块。下面我给大家详细算一下。

继续阅读“银行推销的“低息”贷款到底划算吗?”

梯度、散度、旋度

0、哈密顿算子

1、梯度(Gradient)是矢量,也是法向量

2、散度(Divergence)是标量

3、旋度(Curl)是向量

  • 标量的梯度为矢量,因此对该矢量可以继续求散度,从而引入拉普拉斯算子∇2 :
  • 矢量的散度为标量,因此对该标量可以继续求梯度:

拉普拉斯算子对标量的运算结果为标量、对矢量的运算结果为矢量。

举例:

电势场的梯度是电场强度,电场强度的的散度等于q/ε,高斯定理

 书籍是进步的阶梯

如遇网络问题无法下载,可以尝试国内镜像,网址把github改为gitee,其它不变

数论-陈景润.pdf
李政道 数学物理方法.pdf
曾谨言-量子力学卷I-第四版.pdf
曾谨言-量子力学卷II-第四版.pdf
张量分析(第二版)黄克智.pdf
电动力学(第三版)郭硕鸿.pdf
黎曼几何.pdf
高等量子力学-张永德(上).pdf
高等量子力学-张永德(下).pdf
高等数学引论2(华罗庚).pdf
高等数学引论3(华罗庚).pdf
高等数学引论4(华罗庚).pdf
费曼物理学讲义 第二卷_1981.pdf
矢量分析与张量初步.pdf
从线性代数到张量计算.pdf
机器学习与时空数据建模.pdf
继续阅读“ 书籍是进步的阶梯”

二次型与矩阵对应关系

f(x)=a11x12+a22x22++annxn2+2a12x1x2+2a13x1x3++2an1,nxn1xn 观察各个项,行和列按x1,x2,x3,,xnx_1,x_2,x_3,\cdots,x_n的顺序排列成表格,每个格子内为行列相乘的项,平方项恰在对角线位置,其他项放在对角线上三角区域,可以得到下面方阵: x1x2x3xnx1a11x122a12x1x22a13x1x32a1nx1xnx20a22x222a23x2x32a2nx2xnx300a33x322a3nx3xnxn000annxn2 如果把像 2a12,2a13,,2a(n1)n2a_{12} , 2a_{13},\dots,2a_{(n-1)n} 这样的2倍的系数沿着对角线对称的位置拆分放置,即a12=a21,a13=a31,,a(n1)n=an(n1)a_{12}=a_{21} , a_{13}=a_{31},\dots,a_{(n-1)n}=a_{n(n-1)},那么可以得到下面的样子:

继续阅读“二次型与矩阵对应关系”

矩阵对角化

一、什么样的n阶矩阵才能对角化?

先说结论 {a.特征值无重根b.有重根{b.1.厄米特矩阵(Hermitian),特别的对称实数矩阵b.2.非厄矩阵{b.2.1.几何重数=代数重数b.2.2.几何重数≠代数重数

定理1:

λ1,λ2,,λm\lambda_1,\lambda_2,\dots,\lambda_m 是方阵AA的m个特征值,p1,p2,,pmp_1,p_2,\dots,p_m依次是与之对应的特征向量,如果λ1,λ2,,λm\lambda_1,\lambda_2,\dots,\lambda_m各不相等,则p1,p2,,pmp_1,p_2,\dots,p_m线性无关。

继续阅读“矩阵对角化”

韦达公式推导

一元n次方程 anxn+an1xn1+...+a1x+a0=0 \begin{align} a_nx^n + a_{n-1}x^{n-1} + … + a_1x + a_0 = 0 \end{align} 的根为x1,x2,...,xnx_1, x_2, …, x_n,其中an0a_n \neq 0。 那么(1)式可以写成下面的形式: an(xx1)(xx2)...(xxn)=0 \begin{align} a_n(x – x_1)(x – x_2)…(x – x_n) = 0 \end{align}

将其展开,并观察多项式系数,xn1x_{n-1}的系数: (x1+x2+...+xn)an-(x_1 + x_2 + … + x_n)a_n 常数项: (1)nx1x2...xn1an(-1)^nx_1x_2…x_{n-1}a_n

比较常数项和xn1x_{n-1}的系数,可以得到: a0=(1)nx1x2...xn1anan1=(x1+x2+...+xn)an \begin{aligned} a_0 &=(-1)^nx_1x_2…x_{n-1}a_n \\ a_{n-1} &=-(x_1 + x_2 + … + x_n)a_n \end{aligned}

\therefore i=1nxi=x1x2...xn1an=(1)na0ani=1nxi=x1+x2+...+xn=an1an \begin{equation} \begin{aligned} &\prod_{i=1}^nx_i=x_1x_2…x_{n-1}a_n=\frac{(-1)^{n}{a_0}}{a_n} \\ &\sum_{i=1}^nx_i=x_1 + x_2 + … + x_n = -\frac{a_{n-1}}{a_n} \end{aligned} \end{equation}

这就是一元n次方程的韦达公式。

神经网络原理

神经网络是什么?

神经网络是一组受人类大脑功能启发的算法。一般来说,当你睁开眼睛时,你看到的东西叫做数据,再由你大脑中的 Nuerons(数据处理的细胞)处理,并识别出你周围的东西,这也是神经网络的工作原理。神经网络有时被称为人工神经网络(Artificial Neural Network,ANN),它们不像你大脑中的神经元那样是自然的,而是人工模拟神经网络的性质和功能。

继续阅读“神经网络原理”

神经网络之反向传播算法(BP)

反向传播(英语:Backpropagation,缩写为BP)是“误差反向传播”的简称,是一种与最优化方法(如梯度下降法)结合使用的,用来训练人工神经网络的常见方法。该方法对网络中所有权重计算损失函数的梯度。这个梯度会反馈给最优化方法,用来更新权值以最小化损失函数。 在神经网络上执行梯度下降法的主要算法。该算法会先按前向传播方式计算(并缓存)每个节点的输出值,然后再按反向传播遍历图的方式计算损失函数值相对于每个参数的偏导数。

我们将以全连接层,激活函数采用 Sigmoid 函数,误差函数为 Softmax+MSE 损失函数的神经网络为例,推导其梯度传播方式。

准备工作

1、Sigmoid 函数的导数

继续阅读“神经网络之反向传播算法(BP)”

如何:使用颜色矩阵对单色进行变换

GDI+ 提供用于存储和操作图像的 ImageBitmap 类。 ImageBitmap 对象用一个 32 位数字存储每个像素的颜色:红、绿、蓝和 Alpha 各 8 位。 这四个分量的值都是 0 到 255,其中 0 表示没有亮度,255 表示最大亮度。 alpha 分量指定颜色的透明度:0 表示完全透明,255 表示完全不透明。

颜色矢量采用 4 元组形式(红色、绿色、蓝色、alpha)。 例如,颜色矢量 (0, 255, 0, 255) 表示一种没有红色和蓝色但绿色达到最大亮度的不透明颜色。

表示颜色的另一种惯例是用数字 1 表示亮度达到最大。 通过使用这种约定,上一段中描述的颜色将可以由矢量 (0, 1, 0, 1) 表示。 在执行颜色变换时,GDI+ 遵循使用 1 为最大亮度的惯例。

可通过用 4×4 矩阵乘以这些颜色矢量将线性变换(旋转和缩放等)应用到颜色矢量中。 但是,您不能使用 4×4 矩阵进行平移(非线性)。 如果在每个颜色矢量中再添加一个虚拟的第 5 坐标(例如,数字 1),则可使用 5×5 矩阵应用任何组合形式的线性变换和平移。 由线性变换组成的后跟平移的变换称为仿射变换。

例如,假设您希望从颜色 (0.2, 0.0, 0.4, 1.0) 开始并应用下面的变换:

  1. 将红色分量乘以 2。
  2. 将 0.2 添加到红色、绿色和蓝色分量中。

下面的矩阵乘法将按照列出的顺序进行这对变换。

颜色矩阵的元素按照先行后列(从 0 开始)的顺序进行索引。 例如,矩阵 M 的第五行第三列由 M[4][2] 表示。

5×5 单位矩阵(在下面的插图中显示)在对角线上为 1,在其他任何地方为 0。 如果用单位矩阵乘以颜色矢量,则颜色矢量不会发生改变。 形成颜色变换矩阵的一种简便方法是从单位矩阵开始,然后进行较小的改动以产生所需的变换。

有关矩阵和变换的更详细的讨论,请参见坐标系统和变形

示例

下面的示例采用一个使用一种颜色 (0.2, 0.0, 0.4, 1.0) 的图像,并应用上一段中描述的变换。

下面的插图在左侧显示原来的图像,在右侧显示变换后的图像。

下面示例中的代码使用以下步骤进行重新着色:

  1. 初始化 ColorMatrix 对象。
  2. 创建一个 ImageAttributes 对象,并将 ColorMatrix 对象传递给 ImageAttributes 对象的 SetColorMatrix 方法。
  3. ImageAttributes 对象传递给 Graphics 对象的 DrawImage 方法。

C#

VB

Image image = new Bitmap(“InputColor.bmp”);
ImageAttributes imageAttributes = new ImageAttributes();
int width = image.Width;
int height = image.Height;

float[][] colorMatrixElements = {
   new float[] {2,  0,  0,  0, 0},        // red scaling factor of 2
   new float[] {0,  1,  0,  0, 0},        // green scaling factor of 1
   new float[] {0,  0,  1,  0, 0},        // blue scaling factor of 1
   new float[] {0,  0,  0,  1, 0},        // alpha scaling factor of 1
   new float[] {.2f, .2f, .2f, 0, 1}};    // three translations of 0.2

ColorMatrix colorMatrix = new ColorMatrix(colorMatrixElements);

imageAttributes.SetColorMatrix(
   colorMatrix,
   ColorMatrixFlag.Default,
   ColorAdjustType.Bitmap);

e.Graphics.DrawImage(image, 10, 10);

e.Graphics.DrawImage(
   image,
   new Rectangle(120, 10, width, height),  // destination rectangle
   0, 0,        // upper-left corner of source rectangle
   width,       // width of source rectangle
   height,      // height of source rectangle
   GraphicsUnit.Pixel,
   imageAttributes);

编译代码

前面的示例是为使用 Windows 窗体而设计的,它需要 Paint 事件处理程序的参数 PaintEventArgse