末尾有原文PDF下载链接
介绍
目的
数学推导是需要细心的,不过遇到比较的难解的式子的时候,就很考验我们的“耐心”了!比如下面的这个式子
θ
x
+
(
1
−
θ
)
y
θ
a
+
(
1
−
θ
)
b
=
γ
x
a
+
(
1
−
γ
)
y
b
\dfrac{\theta x + (1-\theta)y}{\theta a + (1-\theta)b} = \gamma \dfrac{x}a + (1-\gamma)\dfrac{y}b
θa+(1−θ)bθx+(1−θ)y=γax+(1−γ)by
利用其他变量表示出
γ
\gamma
γ.
想偷懒,不想手算!!于是,利用Python帮我算。
怎么做?
操作流程
- 准备工作:导包:sympy(没有就pip安装一下即可)
- 定义变量:简单来说就是告诉计算机哪些字符是变量(可以理解为带有“参数”的方程,和数值计算有些许的区别)
- 编写求解的方程:左边+右边
- 求解
举个小例子
求解
γ
\gamma
γ:
a
=
b
γ
a = b\gamma
a=bγ
显然,结果是:
γ
=
a
b
\gamma = \dfrac{a}{b}
γ=ba. 下面我们利用python来实现这个求解过程.
import sympy as sp # 导包
sp.init_printing() # 启用 LaTeX 打印
a, b, gamma = sp.symbols('a b gamma')
equation = sp.Eq(a, b / gamma) # 使用 Eq 函数定义方程
# 求解方程与求解变量
var = gamma
solution = sp.solve(equation, var)
# 输出方程
print('求解的方程为:\n')
display(equation)
# 输出解
print('结果:')
# 使用 Eq 函数表示变量和解的等式
solution_eq = sp.Eq(var, solution[0])
display(solution_eq)
求解的方程为:
a = b γ \displaystyle a = \frac{b}{\gamma} a=γb
结果:
γ = b a \displaystyle \gamma = \frac{b}{a} γ=ab
再来一个
求解
γ
\gamma
γ:
θ
x
+
(
1
−
θ
)
y
=
γ
a
x
+
(
1
−
γ
)
b
y
\theta x + (1-\theta)y = \gamma ax + (1-\gamma)by
θx+(1−θ)y=γax+(1−γ)by
Proof: Since
θ
x
+
(
1
−
θ
)
y
=
γ
a
x
+
b
y
−
γ
b
y
=
γ
(
a
x
−
b
y
)
+
b
y
\theta x + (1-\theta)y = \gamma ax + by - \gamma by = \gamma (ax-by) + by
θx+(1−θ)y=γax+by−γby=γ(ax−by)+by, So
γ
=
θ
x
+
(
1
−
θ
)
y
−
b
y
a
x
−
b
y
\gamma = \dfrac{\theta x + (1-\theta)y - by}{ax-by}
γ=ax−byθx+(1−θ)y−by
import sympy as sp # 导包
sp.init_printing() # 启用 LaTeX 打印
a, b, gamma, theta, x, y= sp.symbols('a b gamma theta x y')
le = theta * x + (1-theta) * y
re = gamma * a * x + (1-gamma) * b * y
equation = sp.Eq(le, re) # 使用 Eq 函数定义方程
# 求解方程与求解变量
var = gamma
solution = sp.solve(equation, var)
# 输出方程
print('求解的方程为:\n')
display(equation)
# 输出解
print('结果:')
# 使用 Eq 函数表示变量和解的等式
solution_eq = sp.Eq(var, solution[0])
display(solution_eq)
求解的方程为:
θ x + y ( 1 − θ ) = a γ x + b y ( 1 − γ ) \displaystyle \theta x + y \left(1 - \theta\right) = a \gamma x + b y \left(1 - \gamma\right) θx+y(1−θ)=aγx+by(1−γ)
结果:
γ = − b y + θ x − θ y + y a x − b y \displaystyle \gamma = \frac{- b y + \theta x - \theta y + y}{a x - b y} γ=ax−by−by+θx−θy+y
NOTE:这里可以看出利用Python求解出的答案与手推式一样的
又来一个
求解
γ
\gamma
γ:
θ
x
+
(
1
−
θ
)
y
=
γ
a
x
+
(
1
−
γ
)
b
y
γ
a
+
(
1
−
γ
)
b
\theta x + (1-\theta)y = \dfrac{\gamma ax + (1-\gamma)by}{\gamma a +(1-\gamma)b}
θx+(1−θ)y=γa+(1−γ)bγax+(1−γ)by
γ
=
b
1
θ
a
−
a
+
b
\gamma = \dfrac{b}{\frac{1}{\theta}a - a + b}
γ=θ1a−a+bb
import sympy as sp # 导包
sp.init_printing() # 启用 LaTeX 打印
a, b, gamma, theta, x, y= sp.symbols('a b gamma theta x y')
le = theta * x + (1 - theta) * y
re = (gamma * a * x + (1 - gamma) * b * y) / (gamma * a + (1 - gamma) * b)
equation = sp.Eq(le, re) # 使用 Eq 函数定义方程
# 求解方程与求解变量
var = gamma
solution = sp.solve(equation, var)
# 输出方程
print('求解的方程为:\n')
display(equation)
# 输出解
print('结果:')
# 使用 Eq 函数表示变量和解的等式
solution_eq = sp.Eq(var, solution[0])
display(solution_eq)
求解的方程为:
θ x + y ( 1 − θ ) = a γ x + b y ( 1 − γ ) a γ + b ( 1 − γ ) \displaystyle \theta x + y \left(1 - \theta\right) = \frac{a \gamma x + b y \left(1 - \gamma\right)}{a \gamma + b \left(1 - \gamma\right)} θx+y(1−θ)=aγ+b(1−γ)aγx+by(1−γ)
结果:
γ = b θ − a θ + a + b θ \displaystyle \gamma = \frac{b \theta}{- a \theta + a + b \theta} γ=−aθ+a+bθbθ
NOTE:得到的结果上下同除以 θ \theta θ,即可.
最后一个:开头说到的那个式子
求解
γ
\gamma
γ
θ
x
+
(
1
−
θ
)
y
θ
a
+
(
1
−
θ
)
b
=
γ
x
a
+
(
1
−
γ
)
y
b
\dfrac{\theta x + (1-\theta)y}{\theta a + (1-\theta)b} = \gamma \dfrac{x}a + (1-\gamma)\dfrac{y}b
θa+(1−θ)bθx+(1−θ)y=γax+(1−γ)by
结果:
γ
=
a
θ
a
θ
+
(
1
−
θ
)
b
\gamma = \dfrac{a\theta}{a\theta + (1-\theta)b}
γ=aθ+(1−θ)baθ. 感性兴趣可以自己算(我算过了哈哈哈)
import sympy as sp # 导包
sp.init_printing() # 启用 LaTeX 打印
a, b, gamma, theta, x, y= sp.symbols('a b gamma theta x y')
le = (theta * x + (1 - theta) * y)/(theta * a + (1-theta)*b)
re = gamma * (x/a) + (1-gamma)*(y/b)
equation = sp.Eq(le, re) # 使用 Eq 函数定义方程
# 求解方程与求解变量
var = gamma
solution = sp.solve(equation, var)
# 输出方程
print('求解的方程为:\n')
display(equation)
# 输出解
print('结果:')
# 使用 Eq 函数表示变量和解的等式
solution_eq = sp.Eq(var, solution[0])
display(solution_eq)
求解的方程为:
θ x + y ( 1 − θ ) a θ + b ( 1 − θ ) = y ( 1 − γ ) b + γ x a \displaystyle \frac{\theta x + y \left(1 - \theta\right)}{a \theta + b \left(1 - \theta\right)} = \frac{y \left(1 - \gamma\right)}{b} + \frac{\gamma x}{a} aθ+b(1−θ)θx+y(1−θ)=by(1−γ)+aγx
结果:
γ = a θ a θ − b θ + b \displaystyle \gamma = \frac{a \theta}{a \theta - b \theta + b} γ=aθ−bθ+baθ