Подгонка кривой по смоделированным данным не работает - PullRequest
1 голос
/ 16 октября 2019

Я пытаюсь найти параметры уравнения Рамберга-Осгуда, используя curve_fit. Так как я новичок в pyhton, я создал свои собственные данные из этого уравнения, чтобы упростить мою проблему.

Возможно, метод подбора кривой имеет проблемы с размером параметров. Но ни с границами, ни с начальными значениями curve_fit не получил разумного результата.

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit 

# --- Ramberg-Osgood-Function
def RamOsg(sigm, E, sigm0, a, m):
    return sigm/E + a*sigm0/E*(sigm/sigm0)**m

# --- Data simulated with given parameters
E = 70000
sigm0 = 260
a = 0.43
m = 10

sigm = np.linspace(1, 350, 15)      #Y-Data
eta = RamOsg(sigm, E, sigm0, a, m)  #X-Data
plt.figure(0)
plt.plot(eta, sigm, 'x')

# --- Curve_Fit
#bounds=[[69990, 255, 0.1, 5],[70010, 265, 1, 15]]
init_values = np.array([70011, 260, 0.1, 10])
popt, pcov = curve_fit(RamOsg, eta, sigm, p0=init_values)

print popt, pcov

Вывод popt - это точно мои начальные значения, независимо от того, какие начальные значения я выбрал, и pcov не сходится:

[7.00000000e + 04 2.60000000e + 02 1.00000000e-01 1.00000000e + 01]

[[inf inf inf inf] [inf inf inf inf] [inf inf inf inf inf] [inf inf inf inf inf]]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...