如何使用SymPy重排供给曲线方程,将log Q表示为log P的函数?
使用SymPy重排供给曲线方程
当然可以用SymPy完成这类方程重排,不过你的代码存在几个问题,我帮你修正并实现需求:
问题分析
给定方程:log P = -2 + 1.7 * log Q,我们需要将其变形为log Q关于log P的表达式。
修正后的代码
首先要正确定义完整等式,再针对log(q)求解:
import sympy as sp # 定义符合经济意义的正实数符号 p, q = sp.symbols('p q', real=True, positive=True) # 正确定义原方程:左边为log(p),右边为-2 + 1.7*log(q) eq = sp.Eq(sp.log(p), -2 + 1.7 * sp.log(q)) # 求解log(q) solution = sp.solve(eq, sp.log(q)) print(solution)
运行结果
执行后会输出:
[0.588235294117647*log(p) + 1.17647058823529]
这个结果对应变形后的精确方程:log Q = (1/1.7)log P + 2/1.7,近似值就是输出里的小数形式,完全满足你的需求。
原代码的问题说明
- 原代码中
sp.Eq(-2+1.7*sp.log(q))只定义了等式的一边,缺少左边的log(p),SymPy无法识别这是完整方程。 - 你尝试求解
sp.log(p),但实际需求是求解sp.log(q),目标变量搞错了。
内容的提问来源于stack exchange,提问作者Johannes Pedersen
相关产品推荐
相关产品推荐

