繁体   English   中英

在python中求解指数方程

[英]Solve equations for exponent in python

此代码通过蛮力求解 x^n + y^n - z^n = 0 中的指数。 会有更快更清洁的方法来做到这一点吗?

import math
for n in range(-10, 100000000):
    n /= 1000000.0   
    x =  16**(n)+20**(n)-25**(n)  #formula to solve must equal zero
    if round(x,2) == 0:
        print('exponent is: ',n, ', error is: ',x); break

您可以定义应该最小化的函数(在您的情况下等于零):

def f(n):
    return 16**(n) + 20**(n) - 25**(n)

然后从scipy.optimize导入minimize_scalar并求解n的方程。

from scipy.optimize import minimize_scalar

minimize_scalar(f)

-------------------------------
fun: 0.0
nfev: 55
nit: 35
success: True
x: -518.3839114719358 # x is your n that solves your equation
-------------------------------

查看:

f(-518.3839114719358) # -> 0.0

查看文档以获取更多信息。 您可以为函数提供其他选项(如边界)。 您还可以访问每个输出值(如xniter等)。 此外,计算确实是无计时器的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM