用Python学《微积分B》(有理式与简单无理式积分套路)
前一篇介绍了“换元法”和“分部积分”两种一般的求积分的方法,这一篇主要学习对“有理式”和“简单无理式”求积分的套路。这一篇是对不定积分方法的总结,在此特地介绍一个在线积分器和symbolab,对于复杂的积分式可以用它们辅助计算。
一、知识点
1,四个分式模式
所谓的“套路”,都是通过一系列变换,把被积函数转化为“积分表”中的函数及其组合。积分表中有四个积分式对于分式有理式非常重要,甚至被总结为四种模式(pattern)。
1)一次单因式(对数模式)
\int \frac{A}{ax+b}dx = \frac{A}{a}ln|ax+b|+C
2)一次k重因式
\int \frac{A}{(ax+b)^{k}}dx = \frac{A}{(1-k)a}\cdot \frac{1}{(ax+b)^{k-1}}+C
上式运用了“凑微分”。
3)二次单因式(反正切模式)
\int \frac{Bx+D}{px^{2}+qx+r}dx = \frac{B}{2p}\int \frac{2px+q}{px^{2}+qx+r}dx + (D-\frac{Bq}{2p})\frac{1}{p}\int \frac{dx}{(x + \frac{q}{2p})^{2}+\frac{4pr-q^{2}}{4p^{2}}} \\ = \frac{B}{2p}ln\left | px^{2}+qx+r \right |+\frac{2pD-qB}{p\sqrt{4pr-q^{2}}}arctan(\frac{2px+q}{\sqrt{4pr-q^{2}}})+C
4)二次k重因式
\int \frac{Bx+D}{(px^{2}+qx+r)^{k}}dx = \frac{B}{2p(1-k)}\cdot \frac{1}{(px^{2}+qx+r)^{k-1}}+\frac{2pD-qB}{p\sqrt{4pr-q^{2}}}\int \frac{dx}{[(x + \frac{q}{2p})^{2}+(\frac{\sqrt{4pr-q^{2}}}{2p})^{2}]^{k}}
上式先“凑微分”,然后换元,再分部积分,并运用递归,可以求出原函数。其中,∫dx(x2+a2)n\int \frac{dx}{(x^{2}+ a^{2})^{n}},n是大于1的自然数使用分部积分可以得到它的递归公式,如下:
I_{n+1}=\frac{2n-1}{2na^{2}}I_{n}+\frac{x}{2na^{2}(x^{2}+a^{2})^{n+1}}
I_{1}=\frac{1}{a}arctan(\frac{x}{a})+C
2,分式有理式
定理:设Pm(x)Qn(x)\frac{P_{m}(x)}{Q_{n}(x)}是一真分式,则它可以唯一地分解为最简分式之和。
例:
\int \frac{x+1}{x^{2}-4x+3}dx=\int [\frac{A}{x-1}+\frac{B}{x-3}]dx
通分,解系数方程,求出A和B。
分式有理式求积分的方法又称为“部分分式积分法”(Interation by Partial Fractions),它是基于“部分分式分解”(Partial Fraction decomposition)得来的一种求特定积分的方法。sympy提供了“apart()”函数用于执行“部分分式分解”操作。下面再给几个相关链接:
部分分式积分
partial fraction expand in matlab
3,三角函数有理式
对sin(x)和cos(x)及常数进行有限次的四则运算得到的表达式称为“三角函数有理式”,记作R( sin x, cos x ),其中 R - Rational
对于三角函数有理式∫R[sin(x),cos(x)]dx\int R[sin(x), cos(x)]dx的积分套路如下:
(根据“三角函数万能公式”)取t=tanx2t=tan\frac{x}{2},则x=2arctan(t),dx=21+t2dt,sin(x)=2t1+t2,cos(x)=1−t21+t2x=2arctan(t),dx=\frac{2}{1+t^{2}}dt,sin(x)=\frac{2t}{1+t^{2}},cos(x)=\frac{1-t^{2}}{1+t^{2}},于是可得:
\int R[sin(x), cos(x)]dx=\int R[\frac{2t}{1+t^{2}}, \frac{1-t^{2}}{1+t^{2}}]\frac{2}{1+t^{2}}dt
很显然,这里应用的是“反函数换元法”(第二类换元法)。
4,简单无理式
无理式积分的困难在于被积函数中带有开发运算,因此,一般的思路是先进行“有理化”。如下:
1)∫R(x,ax+b−−−−−√n)dx,(a≠0)\int R(x,\sqrt[n]{ax+b})dx,\; (a\neq 0)
取ax+b=tnax+b=t^{n},可得
\int R(x,\sqrt[n]{ax+b})dx=\int R(\frac{t^{n}-b}{a},t)\frac{nt^{n-1}}{a}dt
2)∫R(x,ax+bcx+d−−−−√n)dx\int R(x,\sqrt[n]{\frac{ax+b}{cx+d}})dx
取ax+bcx+d=tn\frac{ax+b}{cx+d}=t^{n},可得
\int R(x,\sqrt[n]{\frac{ax+b}{cx+d}})dx = \int R(\frac{t^{n}d-b}{a-t^{n}c}, t)\frac{n(ad-cb)t^{n-1}}{(a-ct^{n})^{2}}dx
3)∫R(x,ax2+bx+c−−−−−−−−−−√)dx,(a≠0)\int R(x,\sqrt{ax^{2}+bx+c})dx,\; (a\neq 0)
先凑成“平方和”或“平方差”形式,再应用三角函数“平方公式”进行变量替换。
4,可积与求出积分
在“不定积分的概念”那一节,讲到“连续函数”甚至“满足介值定理的函数”都可积(原函数存在)。但是,“可积”不代表一定能求出它的积分表达式(用初等函数表示),例如:e−x2,sin(x)x,1ln(x),1−12sin2(x)−−−−−−−−−−−√e^{-x^{2}},\; \frac{sin(x)}{x},\; \frac{1}{ln(x)},\; \sqrt{1-\frac{1}{2}sin^{2}(x)}。
事实上,大多数初等函数的原函数都不能表示为初等函数。这从一个侧面显示了“求导”的降维作用,它可以把非初等函数问题转换为初等函数问题来研究。
二、思考题
1,是否所有的分式有理函数在实数范围内都可以化为形如ax−b\frac{a}{x - b}简单分式的和?
答:否!本课程中的“Partial Fraction decomposition”定理只是说可以将任意有理分式分解化为最简分式,而这里所说的最简分式包含了四个,而不只是一次单因式。比如,并不是所有的二次单因式都能化为一次单因式。
2,是否可以得到“分式有理函数的不定积分都可以用初等函数表示”的结论?
答:是!首先,所有的分式有理函数都可以化为一个多项式(整式)与一个真分式之和。然后,根据定理,所有的真分式又可以分解为四个模块(最简分式)的线性组合,而最简分式都可积,且积分后的原函数都是初等函数,那么这个命题成立。
注:这个问题非常有意思。有了计算机之后,人们开始从繁琐的运算中解放出来了,当然这个运算也包括积分运算。但是,对于计算机来说,判断一个函数是否可积,是比按程序计算积分更大的挑战。而从这个问题出发,人们可以先判断一个函数是否可积,可积再交给计算机去执行积分运算,不可积就不要浪费时间和计算资源了。或许,这也暗合“数据标记”吧!
三、选择题
from sympy import *
init_printing()
#Exercise 6-4-3
x = Symbol('x')
integrate(1 / (1 - x ** 2), x)
- \frac{1}{2} \log{\left (x - 1 \right )} + \frac{1}{2} \log{\left (x + 1 \right )}
#Exercise 6-4-4
t = Symbol('t')
integrate((t+4) / (t ** 2 + 5 * t - 6), t)
\frac{5}{7} \log{\left (t - 1 \right )} + \frac{2}{7} \log{\left (t + 6 \right )}
#Exercise 6-4-5
x = Symbol('x')
integrate((2 * x ** 2 + 2 * x + 13) / ((x - 2) * (x ** 2 + 1) ** 2), x)
- \frac{4 x - 3}{2 x^{2} + 2} + \log{\left (x - 2 \right )} - \frac{1}{2} \log{\left (x^{2} + 1 \right )} - 4 \operatorname{atan}{\left (x \right )}
#Exercise 6-4-6
x = Symbol('x')
integrate(1 / (x ** 4 + 1), x)
- \frac{\sqrt{2}}{8} \log{\left (x^{2} - \sqrt{2} x + 1 \right )} + \frac{\sqrt{2}}{8} \log{\left (x^{2} + \sqrt{2} x + 1 \right )} + \frac{\sqrt{2}}{4} \operatorname{atan}{\left (\sqrt{2} x - 1 \right )} + \frac{\sqrt{2}}{4} \operatorname{atan}{\left (\sqrt{2} x + 1 \right )}
对于∫1x4+1dx=?\int \frac{1}{x^{4} + 1}dx=?,sympy已经求出了积分,但是这个结果可以写得更简单一些。其中对数表达式可以合并,反正切表达式也可以合并。关于反正切的合并如下:
根据正切函数的和差公式:tan(α±β)=tan(α)±tan(β)1∓tan(α)tan(β)tan(\alpha \pm \beta )=\frac{tan(\alpha )\pm tan(\beta )}{1\mp tan(\alpha )tan(\beta )},两边取反函数,可得:
arctan(a)\pm arctan(b)=\alpha \pm \beta=arctan[\frac{tan(\alpha )\pm tan(\beta )}{1\mp tan(\alpha )tan(\beta )}]=arctan\frac{a \pm b}{1 \mp ab}
所以,这个积分的结果可以简写为:
\int \frac{1}{1+x^{4}}dx=\frac{\sqrt{2}}{8}ln\frac{x^{2}+\sqrt{2}x+1}{x^{2}-\sqrt{2}x+1}+\frac{\sqrt{2}}{4}arctan\frac{x^{2}-1}{\sqrt{2}x}+\frac{\pi }{2}+C
注意:反正切函数合并后,又用了反正切函数的“负数关系”和“倒数关系”。
下面再来看手动计算:
1)首先试着因式分解,很明显,不是很容易分解。那么不妨假设根据有理分式的分解定理,将它分解成4个二次k重因式的组合。
2)列方程组解出各系数。
3)分别对各个因式积分。
注:从这一题,我得到了一个意外的发现,对于像11+x4\frac{1}{1+x^{4}}或1+x41+x^{4}这样的式子,直接用sympy的apart()函数,并不能对它进行分解。如果我们要做的不是求积分,而是进行“partial fraction decomposition”,不妨反过来,先求积分,再对各部分求导,这正式因式分解需要的么?
#Exercise 6-5-1
x = Symbol('x')
integrate(1 / (sin(x) + 1), x)
- \frac{2}{\tan{\left (\frac{x}{2} \right )} + 1}
#Exercise 6-5-2
x = Symbol('x')
integrate(1 / (1 - cos(x)), x)
- \frac{1}{\tan{\left (\frac{x}{2} \right )}}
#Exercise 6-5-3
x = Symbol('x')
integrate((1+sin(x)) / (1 + cos(x)), x)
\log{\left (\tan^{2}{\left (\frac{x}{2} \right )} + 1 \right )} + \tan{\left (\frac{x}{2} \right )}
#Exercise 6-5-4
x, a = symbols('x a')
b = Symbol('b', nonzero=True)
integrate(tan(x) / (a ** 2 * (cos(x)) ** 2 + b ** 2 * (sin(x)) ** 2), x)
\int \frac{\tan{\left (x \right )}}{a^{2} \cos^{2}{\left (x \right )} + b^{2} \sin^{2}{\left (x \right )}}\, dx
#Exercise 6-5-4b
x, t, a = symbols('x t a')
b = Symbol('b', nonzero=True)
expr1 = 2 * t / (1 + t ** 2)
expr2 = (1 - t ** 2) / (1 + t ** 2)
expr3 = 2 / (1 + t ** 2)
expr = simplify((expr1 / expr2) / (a ** 2 * expr2 ** 2 + b ** 2 * expr1 ** 2) * expr3)
inte = integrate(expr, t)
expr, inte
\left ( - \frac{4 t \left(t^{2} + 1\right)}{\left(t^{2} - 1\right) \left(a^{2} \left(t^{2} - 1\right)^{2} + 4 b^{2} t^{2}\right)}, \quad - \frac{1}{b^{2}} \log{\left (t^{2} - 1 \right )} + \frac{1}{2 b^{2}} \log{\left (t^{4} + 1 + \frac{t^{2}}{a^{2}} \left(- 2 a^{2} + 4 b^{2}\right) \right )}\right )
inte.subs(t, tan(x / 2))
- \frac{1}{b^{2}} \log{\left (\tan^{2}{\left (\frac{x}{2} \right )} - 1 \right )} + \frac{1}{2 b^{2}} \log{\left (\tan^{4}{\left (\frac{x}{2} \right )} + 1 + \frac{1}{a^{2}} \left(- 2 a^{2} + 4 b^{2}\right) \tan^{2}{\left (\frac{x}{2} \right )} \right )}
进一步化简,将半角化简掉。
根据三角函数半角公式:
tan(\frac{\theta }{2})=\pm \sqrt{\frac{1-cos(\theta )}{1+cos(\theta )}}=\frac{sin(\theta)}{1+cos(\theta)}=\frac{1-cos(\theta)}{sin(\theta)}
代入上式,并合并对数,再化简可得:
x, t, a, b = symbols('x t a b')
expr = log((t ** 4 + 1 - 2 * t ** 2 + 4 * b ** 2 / a ** 2 * t ** 2) / (t ** 2 -1) ** 2)
expr, simplify(expr.subs(t, sqrt((1 - cos(x)) / (1 + cos(x)))))
\left ( \log{\left (\frac{1}{\left(t^{2} - 1\right)^{2}} \left(t^{4} - 2 t^{2} + 1 + \frac{4 b^{2}}{a^{2}} t^{2}\right) \right )}, \quad \log{\left (1 + \frac{b^{2}}{a^{2}} \tan^{2}{\left (x \right )} \right )}\right )
#Exercise 6-5-5
x = symbols('x')
integrate(sin(2 * x) / ((cos(x)) ** 2 + 2 * sin(x)), x)
\int \frac{\sin{\left (2 x \right )}}{2 \sin{\left (x \right )} + \cos^{2}{\left (x \right )}}\, dx
很明显,这个直接积分积不出来。当然,我们也可试着用上一题的方法来换元,但是,最后的结果会很复杂,也不能像上一题一样化简。那么,我们根据它的特点来手动计算吧:
\int \frac{sin(2x)}{cos^{2}(x)+2sin(x)}dx=\int \frac{sin(2x)}{1-sin^{2}(x)+2sin(x)}dx=\int \frac{2sin(x)d[sin(x)]}{1-sin^{2}(x)+2sin(x)}
然后再应用换元法
x, t = symbols('x t')
expr = integrate(2 * t / (1 - t ** 2 + 2 * t), t)
expr.subs(t, sin(x))
- 2 \left(- \frac{\sqrt{2}}{4} + \frac{1}{2}\right) \log{\left (\sin{\left (x \right )} - 1 + \sqrt{2} \right )} - 2 \left(\frac{\sqrt{2}}{4} + \frac{1}{2}\right) \log{\left (\sin{\left (x \right )} - \sqrt{2} - 1 \right )}
#Exercise 6-5-6
x, t = symbols('x t')
expr = integrate(6 * t ** 4 / (t ** 5 + 1), t)
expr.subs(t, x ** (1 / 6))
\frac{6}{5} \log{\left (x^{0.833333333333333} + 1 \right )}
#Exercise 6-5-7
x, t = symbols('x t')
expr = integrate(t * sqrt(t + 2), t)
expr
\frac{6 t^{\frac{9}{2}} \sqrt{1 + \frac{2}{t}}}{15 t^{2} + 30 t} + \frac{16 t^{\frac{7}{2}} \sqrt{1 + \frac{2}{t}}}{15 t^{2} + 30 t} - \frac{8 t^{\frac{5}{2}} \sqrt{1 + \frac{2}{t}}}{15 t^{2} + 30 t} - \frac{32 t^{\frac{3}{2}} \sqrt{1 + \frac{2}{t}}}{15 t^{2} + 30 t} + \frac{16 \sqrt{2} t^{2}}{15 t^{2} + 30 t} + \frac{32 \sqrt{2} t}{15 t^{2} + 30 t}
#Exercise 6-5-7b
x, t = symbols('x t')
expr = integrate((t ** 2 -2) * t * 2 * t, t)
expr, expr.subs(t, sqrt(x - 2))
\left ( \frac{2 t^{5}}{5} - \frac{4 t^{3}}{3}, \quad \frac{2}{5} \left(x - 2\right)^{\frac{5}{2}} - \frac{4}{3} \left(x - 2\right)^{\frac{3}{2}}\right )
#Exercise 6-5-8
x = symbols('x')
expr = integrate(sqrt(x ** 2 -2 * x + 1) / (x -1), x)
expr
\sqrt{x^{2} - 2 x + 1}
#Exercise 6-5-9
x = symbols('x')
expr = integrate(sqrt(E ** x + 1), x)
expr
\int \sqrt{e^{x} + 1}\, dx
很明显,这个直接积分积不出来。先“有理化”换元,再积分:
#Exercise 6-5-9b
x, t = symbols('x t')
expr = integrate(2 * t ** 2 / (t ** 2 - 1), t)
expr.subs(t, sqrt(E ** x + 1))
2 \sqrt{e^{x} + 1} + \log{\left (\sqrt{e^{x} + 1} - 1 \right )} - \log{\left (\sqrt{e^{x} + 1} + 1 \right )}
#Exercise 6-5-10
x = symbols('x')
expr = integrate(((x - 1) * (x + 1) ** 2) ** (1 / 3), x)
expr
\int \left(\left(x - 1\right) \left(x + 1\right)^{2}\right)^{0.333333333333333}\, dx
这一题不能直接换元,需要先变换。如下:
\int \frac{dx}{\sqrt[3]{(x-1)(x+1)^{2}}}=\int \frac{dx}{(x+1)*\sqrt[3]{\frac{x-1}{x+1}}}
#Exercise 6-5-10b
x, t = symbols('x t')
g = ((x - 1) / (x + 1)) ** (1 / 3)
eq = Eq(g, t)
solve(eq, x)
\left [ - \frac{t^{3} + 1.0}{t^{3} - 1.0}\right ]
diff(-(t ** 3 + 1) / (t ** 3 - 1), t)
- \frac{3 t^{2} \left(- t^{3} - 1\right)}{\left(t^{3} - 1\right)^{2}} - \frac{3 t^{2}}{t^{3} - 1}
x, t = symbols('x t')
h = diff(-(t ** 3 + 1) / (t ** 3 - 1), t)
expr = - (t ** 3 - 1) / (2 * t) * h
inte = integrate(expr, t)
inte.subs(t, ((x - 1) / (x + 1)) ** (1 / 3))
- \log{\left (\left(\frac{x - 1}{x + 1}\right)^{0.333333333333333} - 1 \right )} \\+ \frac{1}{2} \log{\left (\left(\frac{x - 1}{x + 1}\right)^{0.333333333333333} + \left(\frac{x - 1}{x + 1}\right)^{0.666666666666667} + 1 \right )} \\- \sqrt{3} \operatorname{atan}{\left (\frac{2 \sqrt{3}}{3} \left(\frac{x - 1}{x + 1}\right)^{0.333333333333333} + \frac{\sqrt{3}}{3} \right )}
用Python学《微积分B》(有理式与简单无理式积分套路)相关推荐
- python 微积分_《用 Python 学微积分》笔记 2
<用 Python 学微积分>原文见参考资料 1. 13.大 O 记法 比较两个函数时,我们会想知道,随着输入值 x 的增长或减小,两个函数的输出值增长或减小的速度究竟谁快谁慢.通过绘制函 ...
- 《用 Python 学微积分》笔记 3
<用 Python 学微积分>原文见参考资料 1. 16.优化 用一个给定边长 4 的正方形来折一个没有盖的纸盒,设纸盒的底部边长为 l,则纸盒的高为 (4-l)/2,那么纸盒的体积为: ...
- python 微积分 函数_用Python学微积分(2)---复合函数
函数的复合(Composition) 定义:设函数y=f(u)和u=g(x)u=g(x),则函数y=f[g(x)]称为由y=f(u)和u=g(x)复合而成的复合函数,其中函数y=f(u)常常称为外函数 ...
- python用泰勒级数计算圆周率_用Python学微积分(4)---泰勒级数
泰勒级数(Taylor Sries) 现在是时候说明指数函数和三角函数那些奇妙的多项式形式了. 这些多项式实际为这些函数在x=0处展开的泰勒级数. 下面我先不加预告地列出函数f(x)在x=0处展开地泰 ...
- python计算微积分_用Python学微积分---函数
一.什么是函数? 广义上说下面这个就叫函数,因为每当我们向机器提供豆子,这台机器便会输出豆浆. 所有输入的集合(集合的本质特点:无序重合)称为定义域(domain),其所有可能输出的集合称为值域(ra ...
- 第四单元 用python学习微积分(二十六)积分-部分分式-掩盖法及它的组合应用
本文内容来自于学习麻省理工学院公开课:单变量微积分-部分分式-网易公开课 开发环境准备:CSDN 部分分式方法(Partial Fractions) = 有理函数(rational function) ...
- 使用python学线性代数_最简单的神经网络简介| 使用Python的线性代数
使用python学线性代数 A neural network is a powerful tool often utilized in Machine Learning because neural ...
- 《从问题到程序:用Python学编程和计算》——2.6 简单脚本程序
本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.6节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2. ...
- python怎么编写在线excel_超简单:用Python让Excel飞起来(零基础学python,用python实现办公自动化)...
王秀文,有超过6年的后端开发.运维开发经验,擅长Python.Node.js.Java.Go等主流编程语言.曾参与翻译Elasticsearch官方技术文档.有IoT系统开发经验和CRM系统设计开发经 ...
最新文章
- Go 语言基础(一)
- OpenCV人脸识别类FaceRecognizer
- python模块request怎么安装_安装 request模块
- Rocketmq介绍和安装
- windows 10
- win10固态硬盘分区 整数_固态硬盘怎么重装win10系统?Win10固态硬盘重装系统教程...
- 【建议收藏】三月份开始,二十二个爬虫项目,无套路,附上源码 全部拿走
- 树莓派连接USB摄像头问题
- 根据轨道根数解算位置速度
- js什么是闭包?简单理解
- Altium Designer怎样秒敷铜?
- 你给员工吃肉,你将迎来一群狼!
- 无公网IP,外网远程连接MySQL数据库
- Openvino Linux 2022新版本(2.0)安装与运行sample流程
- Exchange Server 2007+0ffice Communication Server 2007构建统一消息平台
- 基于51单片机SJA1000 CAN通讯实现(代码+原理图)
- php时间问候语,时间问候语大全
- 喜马拉雅xm格式转化mp3_如何做好音频,在喜马拉雅赚钱月入上万!
- java记事本查找_记事本的查找技术
- TypeError: object.__new__() takes exactly one argument (the type to instantiate)
热门文章
- iOS 7 跳过的一个坑又掉里了 - 图片渲染模式
- 【第二十篇】C#微信H5支付 非微信内浏览器H5支付 浏览器微信支付
- 免费CDN和网站速度测试工具
- M1 芯片 MacBook Pro/Air 软件兼容性如何?是否值得购买?
- css设置文本显示高度隐藏超出部分
- 接口测试面试题及参考答案,就等你来看~
- Linux驱动调试之修改系统时钟中断定位系统僵死问题
- (硅谷课堂项目)Java开发笔记2:项目概述,搭建项目环境和开发讲师管理接口
- php 大数相加,吉首大学第九届"新星杯"大学生程序设计大赛(示例代码)
- TI Z-stack3.0 BDB的理解