【发布时间】:2021-03-17 21:14:04
【问题描述】:
例如,我想扩展以下关于 x、y 和 z1 的一阶差分的联立方程:
$$x^\alpha y^(1-\alpha) = z_1$$
$$x^\beta y^(1-\beta) = z_2$$
很明显
$$\alpha \hat{x} + (1-\alpha) \hat{y} = \hat{z_1}$$
$$\beta \hat{x} + (1-\beta) \hat{y} = 0$$
其中$\hat{variable}$表示变量的弹性,即$\frac{d varibale}{variable}$。 我们有:
$$\hat{x} = \frac{1-\beta}{\alpha - \beta} \hat{z_1}$$
$$\hat{y} = -\frac{\beta}{\alpha - \beta} \hat{z_1}$$
使用 SymPy 的 python 对应的代码是:
import sympy as sp
x,y,z1,z2,alpha,beta = sp.symbols('x,y,z_1,z_2,alpha,beta',positive=True)
eq1 = x**alpha*y**(1-alpha) - z1
eq2 = x**beta*y**(1-beta) - z2
hat_x,hat_y,hat_z1 = sp.symbols('\hat{x},\hat{y},\hat{z_1})
diff_eq1 = eq1.diff(x)*hat_x*x + eq1.diff(y)*hat_y*y + eq1.diff(z1)*hat_z1*z1
diff_eq2 = eq2.diff(x)*hat_x*x + eq2.diff(y)*hat_y*y + eq2.diff(z1)*hat_z1*z1
root = sp.solve([diff_eq1,diff_eq2],[hat_x,hat_y])
给出结果
如您所见,表达式是正确的,但没有进一步简化。原因是它没有利用 eq1 = 0 和 eq2 = 0。我的问题是,如何利用原始方程给出的信息进行进一步的简化?谢谢!!
顺便说一句,我怎样才能用范围声明变量?例如,我想声明 $\alpha \in (0,1)$ 并且 $1-\alpha$ 也将是正数并便于以下操作。
【问题讨论】:
标签: python url-rewriting sympy simplification