2024-05-13 20:27:48 发布
网友
我试图用Python来求解一个方程,而不使用任何scipy特性。c=5,方程为c=10-20(exp(-0.15*x)-exp(-0.5*x))。 如何求解公差为0.0001的x。在
请原谅我的入门级编程伙计们。这是我上的第一堂课。在
从数学导入经验 c=5 定义x(c): c=10-20(膨胀系数*(-0.15*x)-膨胀系数*(-0.5*x)) 返回x(5)
您似乎希望“从头开始”实现此功能。以下提示:
希望你能从这些提示中解决它。但这应该是一个答案,所以代码如下:
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,并在整个程序中保持恒定(这将慢得多,但仍能完成任务)。作为一个练习,我建议尝试用这种更简单的方法来实现它,然后计算两种方法所需的时间,看看你是否能找出节省时间的地方。在
您可能想看看SymPy。它是Python的专用代数符号操作库,具有BSD许可证。如果你正在寻找一个“库存”的/标准的库解决方案,那么正如其他人提到的那样,你将不得不做一些功课,并可能实现你自己的解算器。在
作为结束语,除非这是一个类作业,或者你的老板对第三方开放源码库有病态的憎恨,否则没有什么理由不使用SciPy包。在IIRC中,它们基本上被实现为封装在Python模块中的高度优化的C二进制文件,因此您可以获得非常快的性能和Python API的易用性。在
您似乎希望“从头开始”实现此功能。以下提示:
希望你能从这些提示中解决它。但这应该是一个答案,所以代码如下:
注意,循环中的最后三行有点“聪明”,一个更简单的解决方案是只设置littleBit=0.00001,并在整个程序中保持恒定(这将慢得多,但仍能完成任务)。作为一个练习,我建议尝试用这种更简单的方法来实现它,然后计算两种方法所需的时间,看看你是否能找出节省时间的地方。在
您可能想看看SymPy。它是Python的专用代数符号操作库,具有BSD许可证。如果你正在寻找一个“库存”的/标准的库解决方案,那么正如其他人提到的那样,你将不得不做一些功课,并可能实现你自己的解算器。在
作为结束语,除非这是一个类作业,或者你的老板对第三方开放源码库有病态的憎恨,否则没有什么理由不使用SciPy包。在IIRC中,它们基本上被实现为封装在Python模块中的高度优化的C二进制文件,因此您可以获得非常快的性能和Python API的易用性。在
相关问题 更多 >
编程相关推荐