当前位置 : 首页 » 文章分类 :  开发  »  MathJax数学公式

MathJax数学公式

MathJax 公式笔记
Hexo博客中使用 MathJax js ,参考 Hexo博客(13)添加MathJax数学公式渲染

公式书写依然按照 MarkDown 语法来,基本上也和 LaTeX 相同,单$符引住的是行内公式,双$$符引住的是行间公式。
MathJax公式书写参考
http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference

Getting Started with MathJax
http://docs.mathjax.org/en/latest/start.html

MathJax官网
https://www.mathjax.org/

在线 Latex 编辑
https://www.latexlive.com/


MathJax行内公式

含下划线_的公式$x_mu$xmu
向下取整 $\lfloor x \rfloor$ x
向上取整 $\lceil x \rceil$ x
希腊字符$\sigma$σ
行内公式$y=ax+b$y=ax+b


MathJax三角函数

$\cos 2\theta = \cos^2 \theta - \sin^2 \theta = 2 \cos^2 \theta$
cos2θ=cos2θsin2θ=2cos2θ


MathJax集合运算

$M(\beta^{\ast}(D),D) \subseteq C$
M(β(D),D)C


MathJax指数对数

$$ \log_a b = \frac{\log_c b}{\log_c a} = \frac{\ln b}{\ln a} $$
logab=logcblogca=lnblna

$$ \log_a b = \frac{1}{\log_b a} $$
logab=1logba

$$ \log_{a^n} b = \frac{\log_a b}{n} $$
loganb=logabn

$$ \log_a b^n = n \log_a b $$
logabn=nlogab

$$ \log_{a^n} b^m = \frac{m}{n} \log_a b $$
loganbm=mnlogab

$$ x = e^{\ln x} $$
x=elnx

$$ a^x = e^{\ln {a^x}} = e^{x \ln a} $$
ax=elnax=exlna

$$ \sqrt{x} = x^{\frac{1}{2}} = (e^{\ln x})^{\frac{1}{2}} = e^{\frac{1}{2} \ln x} $$
x=x12=(elnx)12=e12lnx


MathJax手动输入空格

MathJax自己决定是否增加空格。所以直接输入空格是没用的。

$a\ b$ 单个空格
a b

$a \quad b$ quad 空格
ab

$a \qquad b$ qquad 空格
ab


MathJax行间公式

行间公式$$ \sum_{i=0}^n i^2 = \frac{(n^2+n)(2n+1)}{6} $$
ni=0i2=(n2+n)(2n+1)6

一元二次方程求根公式 $$ x_{1,2} = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$
x1,2=b±b24ac2a

斐波那契数列通项公式

  1. $$
  2. f(n) =
  3. \frac{1}{\sqrt{5}}
  4. \left[ \left( \frac{1 + \sqrt{5}}{2} \right)^n - \left( \frac{1 - \sqrt{5}}{2} \right)^n \right]
  5. $$

f(n)=15[(1+52)n(152)n]

n维空间中两个向量 A(a1,a2,,an)B(b1,b2,,bn) 之间的欧式距离是:

  1. $$
  2. d(A,B) = \sqrt{\sum_{i=1}^n{(a_i-b_i)^2}}
  3. $$

d(A,B)=ni=1(aibi)2

平面中两点 (x1,y1)(x2,y2) 之间的直线距离就是欧式距离:

  1. $$
  2. \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2}
  3. $$

(x1x2)2+(y1y2)2

n维空间中两个向量 A(a1,a2,,an)B(b1,b2,,bn) 之间的余弦距离是:

  1. $$
  2. \cos \theta = \frac
  3. {\sum_1^n{(a_i \times b_i)}}
  4. {\sqrt{\sum_1^n(a_i^2)} \times \sqrt{\sum_1^n{b_i^2}}}
  5. $$

cosθ=n1(ai×bi)n1(a2i)×n1b2i

二维空间中向量 A(x1,y1)B(x2,y2) 之间的夹角的余弦为

  1. $$
  2. \cos \theta = \frac
  3. {x_1x_2 + y_1y_2}
  4. {\sqrt{x_1^2 + y_1^2} \sqrt{x_2^2 + y_2^2}}
  5. $$

cosθ=x1x2+y1y2x21+y21x22+y22


MathJax大括号右多行赋值(分支等式)

\\ 公式内换行,cases 实现大括号右多行赋值,& 用于列对齐
注意:为了和 marked.js 兼容,公式内改为4个反斜线 \\\\ 换行。

  1. $$
  2. f(n) =
  3. \begin{cases}
  4. n/2, & \text{if $n$ is even} \\\\
  5. 3n+1, & \text{if $n$ is odd}
  6. \end{cases}
  7. $$

f(n)={n/2,if n is even3n+1,if n is odd

又比如最长公共子序列的动态规划递推公式:

  1. $$
  2. lcs[i,j] =
  3. \begin{cases}
  4. 0, & \text{if $i = 0$ or $j = 0$ } \\\\
  5. cls[i-1, j-1] + 1, & \text{if $i,j > 0$ and $x_i = y_j$ } \\\\
  6. max(cls[i-1][j], cls[i][j-1]), & \text{if $i,j > 0$ and $x_i \neq y_j$ }
  7. \end{cases}
  8. $$

lcs[i,j]={0,if i=0 or j=0 cls[i1,j1]+1,if i,j>0 and xi=yj max(cls[i1][j],cls[i][j1]),if i,j>0 and xiyj 


MathJax方程组

线段 (x1, y1) - (x2, y2) 的参数方程为

  1. $$
  2. \begin{cases}
  3. x = x_1 + t_1(x_2 - x_1) \\\\
  4. y = y_1 + t_1(y_2 - y_1)
  5. \end{cases}
  6. \quad t_1 \in [0,1]
  7. $$

{x=x1+t1(x2x1)y=y1+t1(y2y1)t1[0,1]


MathJax多行公式对齐

比如多行公式推导中常用的等号对齐
begin{split} 表示开始多行公式,end{split}表示结束;公式中用\\表示回车到下一行,&表示对齐的位置。
为了和 marked.js 兼容,公式内改为4个反斜线\\\\换行。

  1. $$
  2. \begin{equation}
  3. \begin{split}
  4. \frac{\partial^2 f}{\partial{x^2}} &= \frac{\partial(\Delta_x f(i,j))}{\partial x} = \frac{\partial(f(i+1,j)-f(i,j))}{\partial x} \\\\
  5. &= \frac{\partial f(i+1,j)}{\partial x} - \frac{\partial f(i,j)}{\partial x} \\\\
  6. &= f(i+2,j) -2f(f+1,j) + f(i,j)
  7. \end{split}
  8. \nonumber
  9. \end{equation}
  10. $$

2fx2=(Δxf(i,j))x=(f(i+1,j)f(i,j))x=f(i+1,j)xf(i,j)x=f(i+2,j)2f(f+1,j)+f(i,j)


MathJax公式自动编号

要想MathJax支持公式编号,需添加AMS支持,在脚本中添加如下MathJax配置项:

  1. <script type="text/x-mathjax-config">
  2. MathJax.Hub.Config({
  3. TeX: { equationNumbers: { autoNumber: "AMS" } }
  4. });
  5. </script>

我上面mathjax.ejs脚本中已加入公式编号的配置。
书写时只要使用begin{equation}环境就会自动编号:

  1. $$
  2. \begin{equation}
  3. \end{equation}
  4. $$

注意此时会自动将文档内的所有begin{equation}公式连续编号,例如:

  1. $$
  2. \begin{equation}
  3. \sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
  4. \end{equation}
  5. $$
  6. $$
  7. \begin{equation}
  8. \beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
  9. \end{equation}
  10. $$

ni=0Fiϕ(H,pi)ni=1ai(~xi,~yi)+bi(~xi2,~yi2)

β(D)=argminβλ||β||2+ni=1max(0,1yifβ(xi))

禁止自动编号

在end{equation}前加\nonumber可禁止对此公式自动编号,例如:

  1. $$
  2. \begin{equation}
  3. \sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 )
  4. \nonumber
  5. \end{equation}
  6. $$
  7. $$
  8. \begin{equation}
  9. \beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i))
  10. \end{equation}
  11. $$

ni=0Fiϕ(H,pi)ni=1ai(~xi,~yi)+bi(~xi2,~yi2)

β(D)=argminβλ||β||2+ni=1max(0,1yifβ(xi))


MathJax公式手动编号

可以在公式书写时使用\tag{手动编号}添加手动编号,例如:

  1. $$
  2. \begin{equation}
  3. \sum_{i=0}^n F_i \cdot \phi (H, p_i) - \sum_{i=1}^n a_i \cdot ( \tilde{x_i}, \tilde{y_i}) + b_i \cdot ( \tilde{x_i}^2 , \tilde{y_i}^2 ) \tag{1.2.3}
  4. \end{equation}
  5. $$

ni=0Fiϕ(H,pi)ni=1ai(~xi,~yi)+bi(~xi2,~yi2)

不加\begin{equation} \end{equation}也可以,例如:

  1. $$
  2. \beta^*(D) = \mathop{argmin} \limits_{\beta} \lambda {||\beta||}^2 + \sum_{i=1}^n max(0, 1 - y_i f_{\beta}(x_i)) \tag{我的公式3}
  3. $$

β(D)=argminβλ||β||2+ni=1max(0,1yifβ(xi))

行内公式加\tag{}后会自动成为行间公式,例如:
$z = (p_0, ..... , p_n) \tag{公式21} $
z=(p0,..,pn)
又如:

  1. $ s = r cos(a+b) = r cos(a) cos(b) - r sin(a) sin(b) \tag{1.1} $
  2. $ t = r sin(a+b) = r sin(a) cos(b) - r cos(a) sin(b) \tag{1.2} $

s=rcos(a+b)=rcos(a)cos(b)rsin(a)sin(b)
t=rsin(a+b)=rsin(a)cos(b)rcos(a)sin(b)


MathJax将下标放到正下方

1、如果是数学符号,那么直接用 \limits 命令放在正下方,如 max 函数下面的取值范围,需要放在 max 的正下方。可以如下实现:

  1. $ \max \limits_{a \leq x \leq b} f(x) $

max

如果不加 \limits,直接使用 \max_{} 则是放在右下角标的,例如:

  1. $ \max_{a \leq x \leq b} f(x) $

\max_{a \leq x \leq b} f(x)

2、若是普通符号,那么要用 \mathop 先转成数学符号再用 \limits,如
$ \mathop{wonima} \limits_{i=1} $
\mathop{wonima} \limits_{i=1}

3、对于双美元符的行间公式,Latex默认下标是放在正下方。所以就不需要加 \limits
例如

  1. $$ \max_{a \leq x \leq b} f(x) $$

\max_{a \leq x \leq b} f(x)


MathJax控制括号大小

如果直接输入括号(花括号需要进行转义),其大小是固定的,如果公式的高度比较大,就会显得很不协调。
使用 \left\right 能自动控制不同层次括号的大小,需要配对使用

  1. $\left( \frac{a}{b} \right)$

\left( \frac{a}{b} \right)

  1. $\left[ \frac{a}{b} \right]$

\left[ \frac{a}{b} \right]

  1. $$ \left( \frac{3}{5} \left[ 3 + 2 * \left( a + b \right) \right] \right) $$

\left( \frac{3}{5} \left[ 3 + 2 * \left( a + b \right) \right] \right)

  1. $$
  2. f\left(
  3. \left(
  4. \frac{
  5. 1+x
  6. }{
  7. \left( \frac{x}{y}+\frac{y}{x} \right) \left(u+1\right)
  8. }+a
  9. \right)^{3/2}
  10. \right)
  11. $$

f\left( \left( \frac{ 1+x }{ \left( \frac{x}{y}+\frac{y}{x} \right) \left(u+1\right) }+a \right)^{3/2} \right)

还可以使用 \big 等一系列标签,包括 \big\Big\bigg\Bigg。按着顺序,它们控制的括号不断变大。
不需要成对使用,可以单独控制半个括号。括号的大小由具体使用的标签控制,不能自动调整,所以需要注意匹配。

  1. $$ \bigg( \frac{3}{5} \Big( 3 + 2 * \big ( a + b \big ) \Big) \bigg) $$

\bigg( \frac{3}{5} \Big( 3 + 2 * \big ( a + b \big ) \Big) \bigg)


MathJax矩阵

注意:为了和 marked.js 兼容,公式内改为4个反斜线\\\\换行。

可以用 $$\begin{matrix} ... \end{matrix}$$ 来表示矩阵。将矩阵元素放在 \begin\end 之间即可。
\\ 来分割行,为了和 marked.js 兼容,公式内改为4个反斜线\\\\换行
& 来分割同一行的矩阵元素。

无括号矩阵

  1. $$
  2. \begin{matrix}
  3. 1 & x & x^2 \\\\
  4. 1 & y & y^2 \\\\
  5. 1 & z & z^2 \\\\
  6. \end{matrix}
  7. $$

\begin{matrix} 1 & x & x^2 \\ 1 & y & y^2 \\ 1 & z & z^2 \\ \end{matrix}

方括号矩阵

  1. $$
  2. A =
  3. \begin{bmatrix}
  4. 1 & 0 & 2 \\\\
  5. -2 & 1 & 3 \\\\
  6. \end{bmatrix}
  7. $$

A = \begin{bmatrix} 1 & 0 & 2 \\ -2 & 1 & 3 \\ \end{bmatrix}

矩阵运算

  1. $$
  2. \left(
  3. \begin{array}{c}
  4. s \\\\
  5. t
  6. \end{array}
  7. \right)
  8. =
  9. \left(
  10. \begin{array}{cc}
  11. cos(b) & -sin(b) \\\\
  12. sin(b) & cos(b)
  13. \end{array}
  14. \right)
  15. \left(
  16. \begin{array}{c}
  17. x \\\\
  18. y
  19. \end{array}
  20. \right)
  21. $$

\left( \begin{array}{c} s \\ t \end{array} \right) = \left( \begin{array}{cc} cos(b) & -sin(b) \\ sin(b) & cos(b) \end{array} \right) \left( \begin{array}{c} x \\ y \end{array} \right)

有括号有竖线矩阵

  1. $$
  2. \left[
  3. \begin{array}{cc|c}
  4. 1&2&3\\\\
  5. 4&5&6
  6. \end{array}
  7. \right]
  8. $$

\left[ \begin{array}{cc|c} 1&2&3\\ 4&5&6 \end{array} \right]

行内小矩阵

$\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$
这是一个行内小矩阵\bigl( \begin{smallmatrix} a & b \ c & d \end{smallmatrix} \bigr),直接嵌入行内。

这里有个问题,上面的写法在矩阵内没有换行,我看了下源码,双反斜杠\\又被MarkDown渲染引擎转义为单个反斜杠了,解决方法是写三个反斜杠\\\或在双反斜杠后换行即可:
$\bigl( \begin{smallmatrix} a & b \\\ c & d \end{smallmatrix} \bigr)$
这是一个行内小矩阵\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr),直接嵌入行内。


上一篇 LeetCode.1160.Find Words That Can Be Formed by Characters 拼写单词

下一篇 LeetCode.程序员面试金典.0106.CompressString 压缩字符串

阅读
评论
3.2k
阅读预计16分钟
创建日期 2020-03-17
修改日期 2021-03-07
类别

页面信息

location:
protocol: http:
host: masikkk.com
hostname: masikkk.com
origin: http://masikkk.com
pathname: /article/MathJax/
href: http://masikkk.com/article/MathJax/
document:
referrer:
navigator:
platform: Linux x86_64
userAgent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)

评论