Можно ли получить массив значений x из неявной функции x в python? - PullRequest
1 голос
/ 07 января 2020

Я пытаюсь получить функцию от x (y) вместо y (x), но сама функция в терминах x является неявной функцией. Есть ли способ, которым я могу вернуть базу значений x в диапазоне y? Или же можно экстраполировать набор значений x, y при x, значительно превышающем 10 ^ 7?

edit1: изменил x и y, чтобы сделать его более разумным

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate


df = .1
a = 300


y = np.arange(1, a,df)          
def x (y):
    try:
        x = y*(a-1)**(3/2)/(a-y)**(3/2)
        return x                
    except ZeroDivisionError:
        return 0
plt.loglog(x(y),y,'b')

Loglog plot of the function

Последующие действия: получается, что interp1d также может использоваться для экстраполяции

from scipy import interpolate
inte = interpolate.interp1d(x(y),y, fill_value='extrapolate')
ynew = np.arange(299,300,1e-5)
xnew = f(ynew)
plt.loglog(x(y),y,xnew,ynew)

extrapolation result

...