理解RESTful架构

分類 编程语言, RESTful架构

越来越多的人开始意识到,网站即软件,而且是一种新型的软件。

这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。

网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开始融合,现在我们必须考虑,如何开发在互联网环境中使用的软件。

RESTful架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。

但是,到底什么是RESTful架构,并不是一个容易说清楚的问题。下面,我就谈谈我理解的RESTful架构。

一、起源

REST这个词,是Roy Thomas Fielding在他2000年的博士论文中提出的。

Fielding是一个非常重要的人,他是HTTP协议(1.0版和1.1版)的主要设计者、Apache服务器软件的作者之一、Apache基金会的第一任主席。所以,他的这篇论文一经发表,就引起了关注,并且立即对互联网开发产生了深远的影响。

他这样介绍论文的写作目的:

“本文研究计算机科学两大前沿----软件和网络----的交叉点。长期以来,软件研究主要关注软件设计的分类、设计方法的演化,很少客观地评估不同的设计选择对系统行为的影响。而相反地,网络研究主要关注系统之间通信行为的细节、如何改进特定通信机制的表现,常常忽视了一个事实,那就是改变应用程序的互动风格比改变互动协议,对整体表现有更大的影响。我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。

(This dissertation explores a junction on the frontiers of two research disciplines in computer science: software and networking. Software research has long been concerned with the categorization of software designs and the development of design methodologies, but has rarely been able to objectively evaluate the impact of various design choices on system behavior. Networking research, in contrast, is focused on the details of generic communication behavior between systems and improving the performance of particular communication techniques, often ignoring the fact that changing the interaction style of an application can have more impact on performance than the communication protocols used for that interaction. My work is motivated by the desire to understand and evaluate the architectural design of network-based application software through principled use of architectural constraints, thereby obtaining the functional, performance, and social properties desired of an architecture. )

二、名称

Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。

如果一个架构符合REST原则,就称它为RESTful架构。

**要理解RESTful架构,最好的方法就是去理解Representational State Transfer这个词组到底是什么意思,它的每一个词代表了什么涵义。**如果你把这个名称搞懂了,也就不难体会REST是一种什么样的设计。

三、资源(Resources)

REST的名称"表现层状态转化"中,省略了主语。“表现层"其实指的是"资源”(Resources)的"表现层"。

**所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。**它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。

四、表现层(Representation)

"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。

比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段才是对"表现层"的描述。

五、状态转化(State Transfer)

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。

客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

六、综述

综合上面的解释,我们总结一下什么是RESTful架构:

(1)每一个URI代表一种资源;

(2)客户端和服务器之间,传递这种资源的某种表现层;

(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

七、误区

RESTful架构有一些典型的设计误区。

**最常见的一种设计错误,就是URI包含动词。**因为"资源"表示一种实体,所以应该是名词,URI不应该有动词,动词应该放在HTTP协议中。

举例来说,某个URI是/posts/show/1,其中show是动词,这个URI就设计错了,正确的写法应该是/posts/1,然后用GET方法表示show。

如果某些动作是HTTP动词表示不了的,你就应该把动作做成一种资源。比如网上汇款,从账户1向账户2汇款500元,错误的URI是:

POST /accounts/1/transfer/500/to/2

正确的写法是把动词transfer改成名词transaction,资源不能是动词,但是可以是一种服务:

POST /transaction HTTP/1.1
  Host: 127.0.0.1

from=1&to=2&amount=500.00

另一个设计误区,就是在URI中加入版本号

http://www.example.com/app/1.0/foo

http://www.example.com/app/1.1/foo

http://www.example.com/app/2.0/foo

因为不同的版本,可以理解成同一种资源的不同表现形式,所以应该采用同一个URI。版本号可以在HTTP请求头信息的Accept字段中进行区分(参见Versioning REST Services):

Accept: vnd.example-com.foo+json; version=1.0

Accept: vnd.example-com.foo+json; version=1.1

Accept: vnd.example-com.foo+json; version=2.0

(完)

留言與分享

概率2-连续型随机分布律

分類 基础, 数学
1,均匀分布

若连续型随机变量X具有概率密度

\begin{align*} f(x)= \begin{cases}{1 \over {b-a}} ,a < x < b,\\0\end{cases} \end{align*}

则称X在区间(a,b)上服从均匀分布,记为X〜U(a,b)

分布函数:

\begin{align*} F(x)= \begin{cases} 0, & x < a \\ \frac{x-a}{b-a}, & a \leq x < b \\ 1, & x \geq b \end{cases} \end{align*}

2. 指数分布

若连续型随机变量X具有概率密度:

\begin{align*} f(x)= \begin{cases} \frac{1}{\theta} e^{-x/\theta}, & x > 0 \\ 0, & \text{其他} \end{cases} \end{align*}

其中θ>0为常数,则称X服从参数为θ的指数分布。

易知f(x)≥0,且:

\begin{align*} \int^\infty_{-\infty}f(x)dx = \left[-e^{-x/\theta}\right]^\infty_0 = 1 \end{align*}

分布函数:

\begin{align*} F(x)= \begin{cases} 1-e^{-x/\theta}, & x > 0 \\ 0, & \text{其他} \end{cases} \end{align*}

服从指数分布的随机变量X具有无记忆性:
对于任意s,t>0,有

P{X>s+tX>s}=P(X>t)P\{X>s+t|X>s\} = P(X>t)

证明:

\begin{align*} P\{X>s+t|X>s\} &= \frac{P\{X>s+t\} \cap P\{X>s\}}{P\{X>s\}} \\ &= \frac{P\{X>s+t\}}{P\{X>s\}} \\ &= \frac{1-F(s+t)}{1-F(s)} \\ &= \frac{e^{-(s+t)/\theta}}{e^{-s/\theta}} \\ &= e^{-t/\theta} \\ &= P\{X>t\} \end{align*}

3. 正态分布

若连续型随机变量X具有概率密度:

\begin{align*} f(x) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \end{align*}

其中μ,σ(σ>0)为常数,则称X服从参数为μ,σ的正态分布,记为X~N(μ,σ²)。

显然f(x)≥0,下面证明:

\begin{align*} \int^\infty_{-\infty}f(x)dx = 1 \end{align*}

t=xμσt = \frac{x-\mu}{\sigma},则:

\begin{align*} σ=(x-μ)/t, t'(x)=1/σ \end{align*}

得到:

\begin{align*} \int^\infty_{-\infty}\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}dx &=\int^\infty_{-\infty}{1 \over {\sqrt{2 \pi}}(x-μ)/t}e^{-t^2 \over 2}dt \\ &= \frac{1}{\sqrt{2\pi}}\int^\infty_{-\infty}e^{-\frac{t^2}{2}}dt \end{align*}

记:

\begin{align*} I = \int^\infty_{-\infty}e^{-\frac{t^2}{2}}dt \end{align*}

则有:

\begin{align*} I^2 = \int^\infty_{-\infty}\int^\infty_{-\infty}e^{-\frac{t^2+u^2}{2}}dtdu \end{align*}

利用极坐标变换:

\begin{align*} I^2 = \int^{2\pi}_0\int^\infty_0 re^{-\frac{r^2}{2}}drd\theta = 2\pi \end{align*}

(p55)


附:

计算:

\begin{align*} \iint_D^\infty e^{-\frac{x^2+y^2}{2}}dxdy \end{align*}

留言與分享

概率1-离散型随机分布律

分類 基础, 数学
1.不放回抽样表达式:

a件产品中抽取n件(不放回),则可能的取法有

\begin{align*} \left( \begin{matrix} a\\ n \\ \end{matrix} \right) =C^n_a=A^n_a/n!= { {a(a-1)...(a-n+1)} \over n!} ={a! \over n!(a-n)!} \end{align*}
伯努利试验,二项分布

设试验E只有两种可能结果:A及非A,则称E为伯努利试验,设P(A)=p (0<p<1),此时P(非A)=1-p.将E独立重复地进行N次,则称这一串重复的独立试验为n重伯努利试验。

标记为
X〜b(n,p).

\begin{align*} P\{X = k\}=\left( \begin{matrix} n\\ k \\ \end{matrix} \right) p^k q^{n-k} \end{align*}

当n=1时,化为二项分布:

\begin{align*} P\{X = k\}= p^k q^{1-k} \end{align*} \begin{align*} \sum_{k=0}^n P\{X = k\}=\sum_{k=0}^n {\left( \begin{matrix} n\\ k \\ \end{matrix} \right) } p^k q^{n-k} =(p+q)^n=1 \end{align*}
泊松分布

设随机变量X所有可能取的值为0,1,2,…,2而取各个值的概率为

\begin{align*} P\{X=k\}={λ^ke^{-λ} \over {k!}} ,k=0,1,2,..., \end{align*}

其中λ>0是常数.则称X服从参数为λ的泊松分布,记为X〜π(λ).

易知,P{X=k}≥0,k=0,1,2,…,且有

\begin{align*} \sum_{k=0}^\infty P\{X = k\}=\sum_{k=0}^\infty {λ^ke^{-λ} \over {k!}}=e^{-λ}\sum_{k=0}^\infty {λ^k\over {k!}}=e^{-λ}e^λ=1 \end{align*}

倒数第二步是泰勒级数(见附表)

泊松定理 设λ>0是一个常数,n是任意正整数,设np=λ,则对于任一固定的非负整数k,有

\begin{align*} \lim_{n \to \infty} \binom{n}{k} p_n^k (1-p_n)^{n-k} = \frac{\color{red}\lambda^k \color{purple}e^{-\lambda}}{\color{red}k!}. \end{align*}

\begin{align*} p_n= {λ \over n} \end{align*}

,有

\begin{align*} {\left( \begin{matrix} n\\ k \\ \end{matrix} \right)}p^k_n(1-p_n)^{n-k}&={\color{blue}{n(n-1)(n-2)...(n-k+1)} \over {\color{red}k!}}{({\color{red}{λ} \over \color{blue}n})^k}{(1-{λ \over n})^{n-k}} \\ &={\color{red}{λ^k \over k!}}{[\color{blue}1 \cdot ({1-{1 \over n})}\cdot ({1-{2 \over n})...(1-{(k+1) \over n})}}]{\color{purple}(1-{λ \over n})^{n}}{(1-{λ \over n})^{-k}} \end{align*}

对于任意固定的k,当n→∞,

\begin{align*} \lim_{n \to \infty}[1 \cdot ({1-{1 \over n})}\cdot ({1-{2 \over n})...(1-{(k+1) \over n})}]=1, \\ \lim_{n \to \infty}(1-{λ \over n})^{n}={\color{purple}e^{-λ}}, \\ \lim_{n \to \infty}(1-{λ \over n})^{-k}=1 \end{align*}

Q.E.D.


泰勒中值定理 如果函数f(x)在含有x₀的某个开区间(a,b)内具有直到(n+1)阶的导数,则对任一x∈(a,b),有

\begin{align*} f(x)=f(x_0)+f'(x_0)(x-x_0)+{f''(x_0) \over 2!}(x-x_0)^2+...+{f^{(n)}(x_0) \over n!}(x-x_0)^n+R_n(x), \end{align*}

其中

\begin{align*} R_n(x)={f^{(n+1)}(\xi) \over ({n+1})!} (x-x_0)^{n+1} \end{align*}

\begin{align*} &x_0=0,f(λ)=e^λ \\ &f(λ)=e^λ \\ &= e^0+{(e^0)(λ-0) \over {1!}}+{(e^0)(λ-0)^2 \over {2!}}+{(e^0)(λ-0)^3 \over {3!}}+...+{(e^0)(λ-0)^k \over {k!}} \\ &= \sum_{k=0}^\infty {λ^k\over {k!}} \end{align*}

留言與分享

11.偏导数(拉普拉斯方程)

分類 基础, 数学

拉普拉斯方程:
验证函数

\begin{align*} z=ln \sqrt{x^2+y^2} \end{align*}

满足方程

\begin{align*} {\partial^2{z} \over \partial{x^2}}+{\partial^2{z} \over \partial{y^2}}=0 \end{align*}

证:因为

\begin{align*} z=ln \sqrt{x^2+y^2} =1/2 ln(x^2+y^2) \end{align*}

所以

\begin{align*} {\partial{z} \over \partial{x}}={x \over(x^2+y^2)} \end{align*} \begin{align*} {\partial^2{z} \over \partial{x^2}}={(x^2+y^2)-2x \cdot x \over(x^2+y^2)^2}={y^2-x^2 \over(x^2+y^2)^2} \end{align*} \begin{align*} {\partial{z} \over \partial{y}}={y \over(x^2+y^2)} \end{align*} \begin{align*} {\partial^2{z} \over \partial{y^2}}={(x^2+y^2)-2y \cdot y \over(x^2+y^2)^2}={x^2-y^2 \over(x^2+y^2)^2} \end{align*}

Q.E.D.


验证函数

\begin{align*} u={1 \over r} \end{align*}

满足方程

\begin{align*} {\partial^2{u} \over \partial{x^2}}+{\partial^2{u} \over \partial{y^2}}+{\partial^2{u} \over \partial{z^2}}=0 \end{align*}

其中

\begin{align*} r =\sqrt{x^2+y^2+z^2} \end{align*}

证:

\begin{align*} {\partial{u} \over \partial{x}}={-1 \over r^2} \cdot {1 \over {2r}} \cdot 2x=-{x \over r^3} \end{align*} \begin{align*} {\partial^2{u} \over \partial{x^2}}=-{1 \over r^3}+ {3 \over r^4}x \cdot {1 \over {2r}} \cdot 2x=-{1 \over r^3}+{3x^2 \over r^5} \end{align*}

同理

\begin{align*} {\partial^2{u} \over \partial{y^2}}=-{1 \over r^3}+ {3 \over r^4}y \cdot {1 \over {2r}} \cdot 2y=-{1 \over r^3}+{3y^2 \over r^5} \end{align*} \begin{align*} {\partial^2{u} \over \partial{z^2}}=-{1 \over r^3}+ {3 \over r^4}z \cdot {1 \over {2r}} \cdot 2z=-{1 \over r^3}+{3z^2 \over r^5} \end{align*}

于是

\begin{align*} {\partial^2{u} \over \partial{x^2}}+{\partial^2{u} \over \partial{y^2}}+{\partial^2{u} \over \partial{z^2}}={-3 \over r^3}+{(3x^2+3y^2+3z^2) \over r^5}=0 \end{align*}

留言與分享

10.向量基本概念

分類 基础, 数学

一,向量的线性运算


1,向量的加减法

(1)交换律 a+b=B+a;

(2)结合律 (a+b)+c=a+(b+c);


2,向量与数的乘法

(1)结合律

\begin{align*} \lambda (\mu \vec{a}) =\lambda (\mu \vec{a})= (\lambda \mu) \vec{a} \end{align*}

(2)分配律

\begin{align*} (\lambda + \mu)\vec{a} =\lambda \vec{a} + \mu \vec{a} \\ \lambda (\vec{a}+\vec{b}) =\lambda \vec{a} + \lambda \vec{b} \end{align*}

定理1 设向量a ≠ 0,那么,向量b平行于a的充分必要条件是:存在唯一的实数λ,使b=λa


向量的模,方向角,投影

向量模的坐标式

\begin{align*} |\vec{AB}|=\sqrt{x^2+y^2+z^2} \end{align*}

A,B两点间距离就是向量AB的模。

\begin{align*} |\vec{AB}|=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2+(z_1-z_2)^2} \end{align*}

方向角和方向余弦

设有两个非零向量a,b,任取空间一点O,
(P298)

留言與分享

9.Γ函数(gamma函数)

分類 基础, 数学

Γ函数:

\begin{align*} \Gamma (s)= \int_0^{+ \infty} e^{-x} x^{(s-1)}dx \ .(s>0) \end{align*}

分别讨论以下两个积分:

\begin{align*} I_1= \int_0^1 e^{-x} x^{(s-1)}dx \ .(s>0) \end{align*} \begin{align*} I_2= \int_1^{+ \infty} e^{-x} x^{(s-1)}dx \ .(s>0) \end{align*}

当s≥1时,I1I_1 是定积分(s看作定值),当0<s<1时,因为

\begin{align*} e^{-x} \cdot x^{s-1} ={1 \over x^{1-s}} \cdot {1 \over e^x} < {1 \over x^{1-s}} \end{align*}

根据比较审敛法2,反常积分I1I_1收敛。

再讨论I2I_2,因为

\begin{align*} \lim_{x \to + \infty} x^2 \cdot (e^{-x}x^{s-1})= \lim_{x \to + \infty} {x^{s+1} \over e^x}=0 \end{align*}

根据比较审敛法1,反常积分I2I_2收敛。
(最后一步洛必达法则)


Γ函数四个性质:

1.递推公式

\begin{align*} \Gamma (s+1) = s \Gamma (s) (s>0) \end{align*}

证: 应用分部积分法,有

\begin{align*} \Gamma (s+1) &= \int_0^{+ \infty} e^{-x} x^s dx \\ &= - \int_0^{+ \infty} x^s de^{-x} \\ &= -([x^se^{-x}]_0^{+ \infty } -s \int_0^{+ \infty} e^{-x}x^{s-1}dx ) \\ &= 0 + s \int_0^{+ \infty} e^{-x}x^{s-1}dx \\ &= s \Gamma (s) \end{align*}

其中

\begin{align*} \lim_{x \to + \infty } x^se^{-x} =0 \end{align*}

可由洛必达法则求得。
显然:

\begin{align*} \Gamma (1) &=\int_0^{+ \infty} e^{-x}x^{s-1}dx \\ &=\int_0^{+ \infty} e^{-x}dx \\ &=[-e^{-x}]^{+ \infty}_0 \\ &=0-(-1) \\ &=1 \end{align*}

反复运用递推公式有:
对于任意的正整数

\begin{align*} \Gamma (n+1)=n! \end{align*}

所以Gamma函数可以看作阶乘的推广

2.当

\begin{align*} s \to 0^+ \end{align*}

时,

\begin{align*} \Gamma (s) ={\Gamma (s+1) \over s},\Gamma (1)=1 \end{align*}

,所以当

\begin{align*} s \to 0^+,\Gamma (s) \to + {\infty} \end{align*}

Γ(s)Γ(s1)=πsinπs (0<s<1)\begin{aligned} \Gamma (s) \Gamma (s-1) ={\pi \over sin \pi s} \ (0<s<1) \end{aligned}

4.在

\begin{align*} \Gamma (s) = \int_0^{+ \infty} e^{-x} x^{(s-1)}dx \end{align*}

作代换

\begin{align*} x=u^2 \end{align*}

,

\begin{align*} \Gamma (s) = \int_0^{+ \infty} e^{-u^2} u^{2(s-1)}2udu = 2 \int_0^{+ \infty} e^{-u^2} u^{2s-1}du \end{align*}

再令2s-1=t有:

\begin{align*} \int_0^{+ \infty} e^{-u^2} u^{2s-1}du = \int_0^{+ \infty} e^{-u^2} u^tdu =\Gamma ({t+1 \over 2}) . (t>-1) \end{align*}

上式
令t=0,则s=1/2,得

\begin{align*} 2 \int_0^{+ \infty} e^{-u^2}du =\Gamma({1 \over 2})=\sqrt{\pi} \end{align*}

以上即为高斯积分

留言與分享

8.反常积分

分類 基础, 数学
反常积分

定义1 设函数f(x)在区间[a,+\infty)上连续,取t>a,如果极限

\begin{align*} \lim_{t \to +\infty} \int_a^tf(x)dx \end{align*}

存在,则称此极限为函数f(x)在无穷区间[a,+\infty)上的反常积分,记作

\begin{align*} \int_a^{+\infty}f(x)dx \end{align*}

此时称反常积分收敛。
-无穷大同理,两个无穷大都收敛,则称无穷限的反常积分。

例: 计算反常积分

\begin{align*} \int_0^{+\infty}te^{-pt}dt \end{align*}

(p是常数,p>0)

解:

\begin{align*} \int_0^{+\infty}te^{-pt}dt &= [\int te^{-pt}dt]_0^{+\infty} \\ &= [-1/p\int tde^{e^{-pt}}]_0^{+\infty} \\ &= [-1/p(te^{-pt}-\int e^{-pt}dt)]^{+\infty}_0 \\ &= [-1/p(te^{-pt}+1/pe^{-pt})]_0^{+\infty} \\ &= [-1/pte^{-pt}]_0^{+\infty}-[1/p^2e^{-pt}]_0^{+\infty} \\ &= -1/p \lim_{t \to +\infty}te^{-pt}-0-1/p^2(\lim_{t \to +\infty} e^{-pt}-1) \\ &=1/p^2 \end{align*}
\begin{align*} &\because de^{-pt}/dt=-pe^{-pt} \\ &\therefore dt= {de^{-pt} \over {-pe^{-pt}}}, e^{-pt}dt = {de^{-pt} \over {-p}} \end{align*} \begin{align*} (uv)'=u'v+v'u \end{align*}

定义2 设函数f(x)在区间(a,b]上连续,点a为f(x)的瑕点,取t>a,如果极限

\begin{align*} \lim_{t \to a^+} \int_t^bf(x)dx \end{align*}

存在,则称此极限为函数f(x)在无穷区间(a,b]上的反常积分,记作

\begin{align*} \int_a^bf(x)dx \end{align*}

此时称反常积分收敛。-a同理。


反常积分的审敛法

定理1 设函数f(x)在区间[a,+\infty)上连续,且f(x)≥0,若函数

\begin{align*} F(x)=\int_a^xf(t)dt \end{align*}

在[a,+\infty]上有界,则反常积分

\begin{align*} \int_a^{+\infty} f(t)dt \end{align*}

收敛


定理2(比较审敛原理) 设函数f(x),g(x)在区间[a,+\infty)上连续,如果0≤f(x)≤g(x)(a≤x≤+\infty),并且

\begin{align*} \int_a^{+\infty} g(x)dx \end{align*}

收敛,则

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

也收敛;如果0≤g(x)≤f(x)(a≤x≤+\infty),并且

\begin{align*} \int_a^{+\infty} g(x)dx \end{align*}

发散,则

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

也发散.


定理3(比较审敛法1) 设函数f(x)在区间[a,+\infty)上连续,且f(x)≥0,如果存在常数M>0及p>1,使得

\begin{align*} f(x) \le {M \over x^p} (a \le x< + \infty ) \end{align*}

则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

收敛;如果存在常数N>0,使得

f(x)Nx(ax<+)\begin{aligned} f(x) \ge {N \over x} (a \le x< + \infty ) \end{aligned}

则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

发散.


定理4(极限审敛法1) 设函数f(x)在区间[a,+\infty)上连续,且f(x)≥0,如果存在常数p>1,使得

\begin{align*} \lim_{x \to + \infty }x^pf(x) \end{align*}

存在,则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

收敛;如果

\begin{align*} \lim_{x \to + \infty }xf(x)=d>0 \end{align*}

\begin{align*} \lim_{x \to + \infty }xf(x)=+ \infty \end{align*}

,则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

发散


定理5 设函数f(x)在区间[a,+\infty)上连续,如果反常积分

\begin{align*} \int_a^{+\infty} |f(x)|dx \end{align*}

收敛,则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

收敛.


定理6(比较审敛法2) 设函数f(x)在区间(a,b]上连续,且f(x)≥0,x=a为f(x)的瑕玷.如果存在常数M>0及q<1,使得

\begin{align*} \int_a^{+\infty} f(x)dx \le {M \over (x-a)^q} (a < x \le b), \end{align*}

则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

收敛.

如果存在常数N>0,使得

\begin{align*} \int_a^{+\infty} f(x)dx \ge {N \over (x-a)} (a < x \le b), \end{align*}

则反常积分

\begin{align*} \int_a^{+\infty} f(x)dx \end{align*}

发散.


定理7(极限审敛法2) 设函数f(x)在区间(a,b]上连续,且f(x)≥0,x=a为f(x)的瑕点如果存在常数0<q<1,使得

\begin{align*} \lim_{x \to a^+ }(x - a )^qf(x) \end{align*}

存在,则反常积分

\begin{align*} \int_a^b f(x)dx \end{align*}

收敛;如果

\begin{align*} \lim_{x \to + a^+ }(x-a)f(x)=d>0 \end{align*}

\begin{align*} \lim_{x \to + a^+ }(x-a)f(x)=+ \infty \end{align*}

,则反常积分

\begin{align*} \int_a^b f(x)dx \end{align*}

发散

留言與分享

7.定积分

分類 基础, 数学

定义 设函数f(x)在[a,b]上有界,在[a,b]中任意插入若干个分点

\begin{align*} a={x_0}<{x_1}<{x_2}<...<{x_{n-1}}<{x_n}=b \end{align*}

把区间[a,b]分成n个小区间

\begin{align*} [x_0,x_1],[x_1,x_2],...,[x_{n-1},x_n], \end{align*}

各个小区间的长度依次为

\begin{align*} \Delta x_1 = x_1-x_0,\Delta x_2 = x_2-x_1,...,\Delta x_n = x_n-x_{n-1}, \end{align*}

在每个小区间

\begin{align*} [x_n,x_{n-1}], \end{align*}

上任取一点ξ(ξ∈[xi-1,xi],作函数f(ξ)与小区间长度Δxi的乘积f(ξ)Δxi(i),并作出和

\begin{align*} S= \sum_{i=1}f(\xi_i) \Delta x_i \end{align*}
定积分基本性质

(1)当a=b时,

\begin{align*} \int^b_a f(x)dx=0 \end{align*}

(2)当a>b时,

\begin{align*} \int^b_a f(x)dx= - \int^a_b f(x)dx \end{align*}

性质1

\begin{align*} \int^b_a [f(x) \pm g(x)]dx = \int^b_a f(x) \pm \int^b_a g(x)dx \end{align*}

性质2

\begin{align*} \int^b_a kf(x)dx = k \int^b_a f(x)dx \end{align*}

性质3

设a<c<b,则

\begin{align*} \int^b_a f(x)dx = \int^c_a f(x)dx + \int^b_c f(x)dx \end{align*}

性质4

如果在区间[a,b]上f(x)≡1,则

\begin{align*} \int^b_a 1dx = \int^b_a dx=b-a \end{align*}

性质5

如果在区间[a,b]上f(x)≥0,则

\begin{align*} \int^b_a f(x)dx \ge 0 (a < b) \end{align*}
积分上限函数及其导数

设函数f(t)在区间[a,b]上连续,并且设x为[a,b]上的一点。在[a,b]定义一个函数,记作

\begin{align*} \Phi (x)= \int^x_a f(t)dt (a \le x \le b ) \end{align*}

定理1 如果函数f(x)在区间[a,b]上连续,则积分上限的函数

\begin{align*} \Phi (x)= \int^x_a f(t)dt \end{align*}

在[a,b]上可导,并且它的导数是

\begin{align*} \Phi' (x)={d \over dx} \int^x_a f(t)dt =f(x) (a \le x \le b ) \end{align*}

若x∈(a,b),设x获得增量Δx,其绝对值足够地小,使得x+Δx∈(a,b),
则Φ(x)在x+Δx∈处的函数值为

\begin{align*} \Phi (x+\Delta x)=\int^{x+\Delta x}_a f(t)dt \end{align*}

由此得函数的增量为

\begin{align*} \Phi (x+\Delta x)-\Phi (x) &= \int^{x+\Delta x}_a f(t)dt - \int^{x}_a f(t)dt \\ &= \int^x_a f(t)dt+\int^{x+\Delta x}_x f(t)dt - \int^{x}_a f(t)dt \\ &= \int^{x+\Delta x}_x f(t)dt \end{align*}

应用积分中值定理有等式
ΔΦ(x)=f(ξ)Δx
即:

\begin{align*} {ΔΦ(x) \over Δx}=f(ξ) \end{align*}

由于f(x)在[a,b]上连续,当Δx→0,ξ→x,因此

\begin{align*} \lim_{\Delta x\to 0}f(ξ)=f(x) \end{align*}

两端取极限即可。

定理2 如果函数f(x)在区间[a,b]上连续,则函数

\begin{align*} \Phi (x)= \int^x_a f(t)dt \end{align*}

就是f(x)在[a,b]上的一个原函数


牛顿-莱布尼茨公式

定理3 如果函数F(x)是连续函数f(x)在区间[a,b]上的一个原函数,则

\begin{align*} \int^b_a f(x)dx=F(b)-F(a). \ \ (1) \end{align*}

证 已知函数F(x)是连续函数f(x)的一个原函数,又根据定理2知道,积分上限函数

\begin{align*} \Phi (x)= \int^x_a f(t)dt \ \ (2) \end{align*}

也是f(x)的一个原函数.于是这两个原函数之差F(x)-Φ(x)在[a,b]上必定是一个常数C,即

F(x)-Φ(x)=C (a≤x≤b) (3)

令x=a.得F(a)-Φ(a)=C,由定理2,得Φ(a)=0,因此F(a)=C,代入式(1),F(a)代入式(3)得

\begin{align*} F(x)- \int^x_a f(t)dt =F(a) \\ \therefore \int^x_a f(t)dt =F(x)-F(a) \end{align*}

将x=b代入,即式(1)

也记为

\begin{align*} \therefore \int^b_a f(x)dx =[F(x)]_a^b \end{align*}

留言與分享

6.不定积分

分類 基础, 数学
基本积分表
\begin{align*} 1. &\int kdx = kx +C \\ 2. &\int x^n dx = {x^{n+1} \over {\mu +1}} +C \ (\mu \neq -1) \\ 3. &\int {dx \over x} = ln|x| +C \\ 4. &\int {dx \over {1+x^2}} = arctan x +C \\ 5. &\int {dx \over \sqrt {1+x^2}} = arcsin x +C \\ 6. &\int cosx \ dx = sin \ x + C \\ 7. &\int sinx \ dx = -cos \ x +C \\ 8. &\int {dx \over cos^2 x} = \int sec^2 x dx=tan x + C \\ 9. &\int {dx \over sin^2 x} = \int sec^2 x dx=-cot x + C \\ 10. &\int sec x \ tanx \ dx = sec x + C \\ 11. &\int csc x \ cot x \ dx = -csc x +C \\ 12. &\int e^x dx =e^x + C \\ 13. &\int a^x dx = {a^x \over ln \ a} + C \\ 14. &\int sh \ x \ dx = ch \ x + C \\ 15. &\int ch \ x \ dx = sh \ x + C \end{align*}
不定积分的性质:

性质1 设函数 f(x)及g(x)的原函数存在,则

\begin{align*} \int [f(x)+g(x)]dx = \int f(x)dx + \int g(x)dx \end{align*}

性质2 设函数 f(x)及g(x)的原函数存在,则

\begin{align*} \int kf(x)dx = k \int f(x)dx \end{align*}
换元积分法

1,第一类换元积分法

定理1 设f(u)具有原函数,u=ψ(x)可导,则有换元公式

\begin{align*} \int f[ \psi(x)]\psi '(x)dx =[\int f(u)du]_{u=\psi(x)} \end{align*}

2,第二类换元积分法

定理2 设x=ψ(t) 是单调的,可导的函数,并且ψ’(t)≠0.又设f[ψ(t)]ψ’(t)具有原函数,则有换元公式

\begin{align*} \int f(x)dx = [ \int f[ \psi (t)] \psi ' (t)dt]_{t=\psi ^{-1} (x)} \end{align*}

其中

\begin{align*} \psi ^{-1} (x) \end{align*}

是x=ψ(t)的反函数.

设f[ψ(t)]ψ’(t)的原函数为Ψ(t),记

\begin{align*} Ψ[ψ^{-1}(x)] = F(x) \end{align*}

,利用复合函数及反函数的求导法则,得到

\begin{align*} F'(x) = {\color{red}{d \Psi \over dt}} \cdot {\color{blue}{dt \over dx}} = {\color{red}f[ \psi(t) ] \psi'(t)} \cdot {\color{blue}{1 \over \psi'(t)}} = f[\psi (t)]=f(x) \end{align*}
分部积分法
\begin{align*} \int u dv = uv - \int v du \end{align*}

留言與分享

5.微分中值定理

分類 基础, 数学

费马定理

\begin{align*} {设函数}f(x) {在点} x_0 {的某邻域} U(x_0) {内有定义,且在} x_0 {处可导。若对任意} x \in U(x_0) \end{align*}

有:

\begin{align*} f(x) \leq f(x_0) \quad \text{(或} \ f(x) \geq f(x_0)\text{)} \end{align*}

则:

\begin{align*} f'(x_0) = 0 \end{align*}

证明
对于

\begin{align*} x_0 + \Delta x \in U(x_0), \end{align*}

\begin{align*} f(x_0 + \Delta x) \leq f(x_0) \\ \end{align*}

当 $$\Delta x > 0$$ 时:

\begin{align*} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} \leq 0 \quad \text{(右导数非正)} \end{align*}

当 $$\Delta x < 0$$ 时:

\begin{align*} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} \geq 0 \quad \text{(左导数非负)} \end{align*}

由可导性知左右导数相等,故 $$f’(x_0) = 0$$。


罗尔定理

若函数 f(x)f(x) 满足:

  1. 在闭区间 [a,b][a,b] 上连续;
  2. 在开区间 (a,b)(a,b) 内可导;
  3. 在区间端点处的函数值相等,即 f(a)=f(b)f(a) = f(b)

则在 (a,b)(a,b) 内至少存在一点 \xi{(a < ξ < b)} 使得 f(ξ)=0f'(\xi) = 0


拉格朗日中值定理

如果函数f(x)满足

(1)在闭区间[a,b]上连续;

(2)在开区间(a,b)内可导;

那么在(a,b)内至少有一点ξ(a<ξ<b) 使等式

\begin{align*} f(b)-f(a)=f'(\xi)(b-a) \end{align*}

成立


证:

  1. 构造辅助函数ψ(x),等于f(x)曲线跟直线AB之间的垂直距离:

ψ(a)=ψ(b)=0\psi(a)=\psi(b)=0

设直线AB的方程为y=L(x),则

\begin{align*} L(x) = f(a)+\frac{f(b)-f(a)}{b-a}(x-a) \end{align*}

由于M,N的纵坐标为f(x)及L(x),有:

\begin{align*} \psi(x)=f(x)-L(x)=f(x)-\left[f(a)+\frac{f(b)-f(a)}{b-a}(x-a)\right] \quad (1) \end{align*}
  1. 验证罗尔定理条件:
  • ψ(x)在[a,b]上连续
  • ψ(x)在(a,b)内可导
  • ψ(a)=ψ(b)=0

对(1)式求导:

\begin{align*} \psi'(x)=f'(x)-\frac{f(b)-f(a)}{b-a} \end{align*}
  1. 应用罗尔定理:
    在(a,b)内至少存在一点ξ(a<ξ<b)使得ψ’(ξ)=0,即:
\begin{align*} f'(\xi)-\frac{f(b)-f(a)}{b-a}=0 \end{align*}

从而得到:

\begin{align*} f(b)-f(a)=f'(\xi)(b-a) \quad (2) \end{align*}
  1. 推论:
    如果函数f(x)在区间I上的导数恒为0,那么f(x)在区间I上是一个常数。

证明:
由(2)式,当$ f’(ξ)=0 $时,有f(b)-f(a)=0,即f(b)=f(a)。由于a,b是I上任意两点,故f(x)在I上为常数。


注:

  1. 式(2)表明存在点ξ处的切线斜率等于弦AB的斜率
  2. 辅助函数ψ(x)的构造是关键,它表示曲线与弦的垂直距离
  3. 当f(a)=f(b)时,即为罗尔定理的特殊情形

柯西中值定理

若函数 f(x)f(x)F(x)F(x) 满足:

  1. 在闭区间 [a,b][a,b] 上连续;
  2. 在开区间 (a,b)(a,b) 内可导;
  3. x(a,b),F(x)0\forall x \in (a,b), F'(x) \neq 0

则在 (a,b)(a,b) 内至少存在一点 ξ\xi 使得:

\begin{align*} \frac{f(b)-f(a)}{F(b)-F(a)} = \frac{f'(\xi)}{F'(\xi)} \quad \text{(两函数变化率之比相等)} \end{align*}

证:
f(x),F(x)应用(2)式,上下一除即可


洛必达法则

定理1xax \to a 型):
若:

\begin{align*} &1. \lim\limits_{x \to a} f(x) = \lim\limits_{x \to a} F(x) = 0 ; \\ &2. 在 a 的去心邻域内 f'(x), F'(x) 存在且 F'(x) \neq 0; \\ &3. \lim\limits_{x \to a} \frac{f'(x)}{F'(x)} 存在(或为无穷大), \\ \end{align*}

则:

\begin{align*} \lim_{x \to a} \frac{f(x)}{F(x)} = \lim_{x \to a} \frac{f'(x)}{F'(x)} \end{align*}

定理2xx \to \infty 型):
将定理1中的 xax \to a 改为 xx \to \infty,条件类似。


重要极限例子

  1. 对数函数与幂函数:
\begin{align*} \lim_{x \to \infty} \frac{\ln x}{x^n} &= \lim_{x \to \infty} {f'(x) \over F'(x)} \\ &= \lim_{x \to \infty} \frac{1/x}{n x^{n-1}} \\ &= \lim_{x \to \infty} \frac{1}{n x^n} \\ &= 0 \quad \text{(对数增长慢于幂函数)} \end{align*}
  1. 幂函数与指数函数:
\begin{align*} \lim_{x \to \infty} \frac{x^n}{e^{\lambda x}} &= \lim_{x \to \infty} {f'(x) \over F'(x)} \\ &= \lim_{x \to \infty} \frac{n x^{n-1}}{\lambda e^{\lambda x}} \\ &= \cdots \\ &= \lim_{x \to \infty} \frac{n!}{\lambda^n e^{\lambda x}} \\ &= 0 \quad \text{(指数增长快于幂函数)} \end{align*}

泰勒公式

泰勒中值定理

\begin{align*} 若 f(x) 在含 x_0 的开区间 (a,b) 内有直到 (n+1) 阶导数,则对任意 x \in (a,b) 有: \end{align*} \begin{align*} f(x) &= f(x_0) + f'(x_0)(x-x_0) + \frac{f''(x_0)}{2!}(x-x_0)^2 + \cdots \\ &\quad + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n + R_n(x) \end{align*}

其中余项:

\begin{align*} R_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}(x-x_0)^{n+1} \quad \text{($\xi$ 在 $x_0$ 与 $x$ 之间)} \end{align*}

留言與分享

作者的圖片

Kein Chan

這是獨立全棧工程師Kein Chan的技術博客
分享一些技術教程,命令備忘(cheat-sheet)等


全棧工程師
資深技術顧問
數據科學家
Hit廣島觀光大使


Tokyo/Macau