Home > front end >  Solve equations for exponent in python
Solve equations for exponent in python

Time:07-13

This code solves for the exponent in x^n y^n - z^n = 0 by brute force. Would there be a faster and cleaner way to do this?

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

CodePudding user response:

You can define your function that should be minimized (in your case equal to zero):

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

and then import minimize_scalar from scipy.optimize and solve your equation for 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
-------------------------------

Check:

f(-518.3839114719358) # -> 0.0

Checkout the documentation for more. There are additional options you can give the function (like bounds). You also can access each output value (like x, niter, and so on). Besides, the computation really is a no-timer.

  • Related