python - 是否有一种可编程的方法来计算幂和的指数值
问题描述
假设我有一个等式:
a^x + b^x + c^x = n
既然我知道a、b、c和n,有没有办法解决 x ?
我已经为这个问题苦苦挣扎了一段时间,我似乎无法在网上找到解决方案。
我目前的方法是遍历 X,直到左侧“足够接近”n。该方法非常缓慢,并且在计算上已经很困难的算法中。
例子:
3^x + 5^x + 7^x = 83
我该如何解决 x。(在这种情况下为 2)我尝试了 WolframAlpha 中的方程,它似乎知道如何解决它,但任何其他程序都无法解决。
我可能还应该提到 X 不是整数(在我的情况下主要在 0.01 到 0.05 范围内)。
解决方案
您可以使用 scipy 库。您可以使用命令安装它pip install scipy
然后,此代码将起作用:
from scipy.optimize import root
def eqn(x):
return 3**x + 5**x + 7**x - 83
myroot = root(eqn, 2)
print(myroot.x)
这里,root 有两个参数 root(fun, x0),其中 fun 是方程的函数,x0 是对根值的粗略估计。例如,如果您知道您的根将落在 (0,1) 的范围内,那么您可以输入 0 作为粗略估计。
还要确保在代码中输入的等式使得 RHS 等于 0。
在我们的例子3^x + 5^x + 7^x = 83
中变成3^x + 5^x + 7^x - 83 = 0
推荐阅读
- r - 两个连续事件之间的天数
- typescript - 打字稿:如何访问和默认不存在的对象属性?
- c++ - Qt中整个项目的共享对象?
- macos - Mac 应用程序反复请求访问权限
- azure - 从文件夹开始复制 Azure 数据工厂
- jspdf - 在 jspdf-autotable 标题阿拉伯文文本中断
- c++ - 如何使用“一对中的一对”模板制作优先级队列?
- html - 修改基于 google doc/spreed 表的 HTML 文件以嵌入 instagram
- iptables - SSH 隧道 <--> iptables NAT 端口转发 - 如何?
- logic - 如何在 Coq Proof Assistant 中解构假设?