【问题标题】:Solving Equation for a variable in Python在 Python 中求解变量的方程
【发布时间】:2018-09-15 13:54:43
【问题描述】:

我正在尝试求解未知变量 (y) 的方程,我正在使用以下内容。然而这需要很多时间,我已经阅读了一些关于使用 scipy.optimize 来加速它的文章,但不知道如何去做。任何帮助将不胜感激:

from sympy import Eq, var, solve
var('y')    
eq = Eq(((5/(1+((.0025+y)/2)))**2) + ((5/(1+((.0027+y)/2)))**4) + ((105/(1+((.003+y)/2)))**6),104.90)

solve(eq)

【问题讨论】:

  • 你描述的和代码不太匹配。 sympy 用于符号计算,而scipy.optimize 将为您找到根的值。您想要解的方程式还是数值本身?

标签: python variables optimization scipy


【解决方案1】:

如果您正在寻找数值解,可以使用brentq

from scipy.optimize import brentq

f = lambda y: ((5/(1+((.0025+y)/2)))**2) + ((5/(1+((.0027+y)/2)))**4) + ((105/(1+((.003+y)/2)))**6)-104.90

res = brentq(f, 0, 1E8)

【讨论】:

  • 感谢 Jacques,但它似乎没有给我正确的 y 值。我有兴趣为 y 的值求解以下表达式。 $104.90 = $5 / (1 +(2.5% + y) / 2) ^ (2 x 1) + $5 / (1 +(2.7% + y) / 2) ^ (2 x 2) + $105 / (1 +( 3% + y) / 2) ^ (2 x 3)
  • 你问题中的方程式是错误的,那么 2.5% = 0.025 != 0.0025
  • 我的错 :(,感谢您指出,这按预期工作。
  • 顺便说一句,我注意到您的个人资料上还没有接受的答案。你可以在这里阅读:stackoverflow.com/help/accepted-answer
猜你喜欢
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 2016-11-05
相关资源
最近更新 更多