在python中使用最小二乘法画出拟合曲线_如何在Python中使用最小二乘法

我需要确定方程中ceo系数的值。为此,我决定用最小二乘法。公式如下:

该方程给出了在不同温度水平下受试产品的应力与失效时间之间的关系。我所使用的数据是虚构的,但给出了实际数据的结构,稍后我将使用这些数据。

为了更好地理解,我还提供了一个图形关联:

我对python相当陌生,所以我不知道有这么多方法/函数可用,所以我决定尝试几种:

输入数据%matplotlib inline

import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

from lmfit import minimize, Parameters, fit_report

# data

temp =np.array([650, 700, 750, 720, 680]) # temperature

xdata = np.array([500, 525, 540, 534, 490]) # time

ydata = np.array([330, 332, 315, 325, 335]) # stress

T = temp[0]

plt.plot(xdata,ydata,'*')

plt.xlabel('xdata')

plt.ylabel('ydata')

1。使用曲线拟合函数

^{pr2}$

2。使用leatsq函数from scipy.optimize import leastsq

def function(parameters, logS):

a_0, a_1, a_2, T_a, logt_a = parameters

model = logt_a + (T - T_a) * (a_0 + a_1 * logS + a_2 * logS**2)

return model

def objective(pars, t_r, logS):

err = t_r - function(pars, logS)

return err

x0 = [ 1.0, 1.0, 1.0, 1.0, 1.0 ] #initial guess of parameters

plsq = leastsq(objective, x0, args=(ydata, xdata))

print('Fitted parameters = {0}'.format(plsq[0]))

plt.plot(xdata, ydata, 'ro')

#plot the fitted curve on top

x = np.linspace(min(xdata), max(xdata), 50)

y = function(plsq[0], x)

plt.plot(x, y, 'k-')

plt.xlabel('x')

plt.ylabel('y')

在这两种情况下,我都得到了以下结果:a_0: -5.95683e+02

a_1: 2.65405e-02

a_2: -2.63017e-05

T_a: 1.21502e+02

logt_a: 3.11614e+05

问题1:确定搜索系数初始值的最佳方法是什么?在

问题2:在python中,哪种基于最小二乘法的方法对于像我这样的方程组是最好的?在

问题3:是否有办法使确定系数作为参数的过程更加自动化?因为我还要尝试高阶多项式,这将导致更多的系数(a_3,a_4,a_5,…)。我们的想法是写出多项式的阶数,然后其他的一切都会自己计算和形成。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值