首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在蟒蛇中解x而不需要西西,

在蟒蛇中解x而不需要西西,
EN

Stack Overflow用户
提问于 2017-11-06 05:12:18
回答 2查看 783关注 0票数 0

在Python中,我试图使用任何特性来求解一个不需要的方程。C=5,方程为c=10-20(exp(-0.15*x)- exp(-0.5*x))。如何用.0001的公差来求解x。

原谅我的入门级编程,伙计们。这是我上过的第一节课。

从数学导入exp c=5 def x(c):C=10-20(exp*(-0.15*x)- exp*(-0.5*x))返回x(5)

EN

回答 2

Stack Overflow用户

发布于 2017-11-06 05:31:21

您可能想看看SymPy。它是一个具有BSD许可证的Python专用代数符号操作库。如果您正在寻找“库存”/standard库解决方案,那么正如其他人所提到的,您将不得不做一些作业,并可能实现您自己的解决方案。

最后的想法是,除非这是一个类分配,或者您的老板对第三方开源库有病态的厌恶,否则没有理由不使用其中一个SciPy包。IIRC在很大程度上是作为高度优化的C二进制文件实现的,这些二进制文件封装在Python模块中,因此您可以获得惊人的快速性能和Python API的易用性。

票数 1
EN

Stack Overflow用户

发布于 2017-11-06 06:43:02

似乎您想要实现这个“从头开始”。以下几点提示:

  • 我们可以用代数把这个简化一点。你真正想要的是找到x,使exp(-0.15*x) + exp(-0.5*x) - 0.2 =0
  • 对于给定的x值,您知道有多少错误。例如,如果x= 1,那么c(1) = 1.267,那么您的错误是1.267。您需要保持“猜测”值,直到错误小于0.0001。
  • 数学告诉我们,这个函数是单调递减的;所以,在1的左边没有点检查答案。

希望你能从这些提示中解决这个问题。但这应该是一个答案,下面是代码:

代码语言:javascript
复制
def theFunction(x): return exp(-0.15*x) + exp(-0.5*x) - 0.2
error = 1.267
x = 1
littleBit = 1
while (abs(error) > 0.0001):
  if error > 0: x += littleBit
  else: x -= littleBit
  oldError = error
  error = theFunction(x)
  if (error*oldError < 0): littleBit *= 0.5 
print x

注意,循环中的最后三行有点“聪明”--一个更简单的解决方案是设置littleBit = 0.00001,并在整个程序中保持它不变(这会慢得多,但仍然可以完成这项工作)。作为一项练习,我建议尝试以更简单的方式实现它,然后用两种方式花多长时间,看看您是否能够找到节省时间的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47130113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档