In [1]:
    
import numpy as np
from scipy.optimize import minimize, minimize_scalar, newton
    
In [2]:
    
# assuming currents 
I1 = 1000
I2 = 1000
# bars dimensions
b1 = 25.4e-3
a1 = 0.25*25.4e-3
b2 = 25e-3
a2 = 6e-3
# temperatures
T1 = 84.9
Ta = 50
# temperature resistance change coeff
alpha = 3.9e-3
def f(x):
    return np.sqrt((2*b1 + 2*a1)/(2*b2+2*a2)) * ((T1-Ta)/(x-Ta))**0.61 \
* np.sqrt((a1*b1*(1+alpha*(x-20)))/(a2*b2*(1+alpha*(T1-20)))) - I1/I2
    
In [3]:
    
result = minimize_scalar(f)
    
In [4]:
    
result.success
    
    Out[4]:
In [5]:
    
T2 = result.x
T2
    
    Out[5]:
In [6]:
    
f(T2)
    
    Out[6]:
The result above is a really strange result. Most probably some constaints are missing.
In [7]:
    
# Newton method used to find zero; x0 is a starting point
res = newton(f, x0=90)
    
In [8]:
    
res
    
    Out[8]:
In [9]:
    
f(res)
    
    Out[9]:
In [10]:
    
# Excel goal seek result
f(88.035)
    
    Out[10]:
In [11]:
    
def findTemperature(I1, I2, a1, b1, a2, b2, T1, Ta, T20):
    """Function used to calculate the temperature of a bar in the new conditions.
    
    Inputs
    ---------------
    I1: float
        Tested current in Amps
    I2: float
        New current value in Amps
    a1: float
        Tested bar thickness in meters
    b1: float
        Tested bar width in meters
    a2: float
        New bar thickness in meters
    b2: float
        New bar width in meters
    T1: float
        Absolute temperature of a tested bar in deg C
    Ta: float
        Ambient temperature in deg C
    T20: float
        initial value of the calculated temperature in deg C
        starting point for the Newton method
    
    Returns
    -----------------
    T2: float
        Absolute temperature of a bar in new conditions in deg C"""
    
    # temperature resistance change coeff
    alpha = 3.9e-3
    def f(x):
        return np.sqrt((2*b1 + 2*a1)/(2*b2+2*a2)) * ((T1-Ta)/(x-Ta))**0.61 \
    * np.sqrt((a1*b1*(1+alpha*(x-20)))/(a2*b2*(1+alpha*(T1-20)))) - I1/I2
    
    T2 = newton(f, x0=T20)
    return T2
    
In [12]:
    
T2 = findTemperature(I1=1000, I2=1000, b1 = 25.4e-3, a1 = 0.25*25.4e-3, b2 = 25e-3, a2 = 6e-3, T1=84.9, Ta=50, T20=90)
    
In [13]:
    
T2
    
    Out[13]:
In [14]:
    
T22 = findTemperature(I1=1000, I2=800, b1 = 25.4e-3, a1 = 0.25*25.4e-3, b2 = 25e-3, a2 = 6e-3, T1=84.9, Ta=50, T20=90)
T22
    
    Out[14]:
In [15]:
    
T23 = findTemperature(I1=1000, I2=1500, b1 = 25.4e-3, a1 = 0.25*25.4e-3, b2 = 25e-3, a2 = 6e-3, T1=84.9, Ta=50, T20=90)
T23
    
    Out[15]:
In [ ]: