首页 > 其他分享 >习题7.7

习题7.7

时间:2024-11-17 15:47:22浏览次数:1  
标签:10 plt fit curve lstsq 7.7 np 习题

1.代码实现

点击查看代码
import numpy as np
from scipy.optimize import curve_fit, least_squares
from scipy.linalg import lstsq
import matplotlib.pyplot as plt
def g(x, a, b):
    return (10 * a) / (10 * b + (a - 10 * b) * np.exp(-a * np.sin(x)))
# 给定参数
a = 1.1
b = 0.01
x = np.arange(1, 21)
y = g(x, a, b)
# (1) 使用curve_fit拟合函数
def func(x, a, b):
    return (10 * a) / (10 * b + (a - 10 * b) * np.exp(-a * np.sin(x)))
popt_curve_fit, pcov_curve_fit = curve_fit(func, x, y)
y_curve_fit = func(x, *popt_curve_fit)
# (2) 使用lstsq拟合函数
A = np.vstack([np.ones_like(x), np.sin(x)]).T
y_lstsq = lstsq(A, y)[0]
y_lstsq_fit = (10 * y_lstsq[0]) / (10 * y_lstsq[1] + (y_lstsq[0] - 10 * y_lstsq[1]) * np.exp(-y_lstsq[0] * np.sin(x)))
# (3) 使用least_squares拟合函数
def residuals(p, x, y):
    a, b = p
    return g(x, a, b) - y
p0 = [1, 1]
result = least_squares(residuals, p0, args=(x, y))
y_least_squares = g(x, result.x[0], result.x[1])
# 绘图
plt.scatter(x, y, label='Original Data')
plt.plot(x, y_curve_fit, label='curve_fit')
plt.plot(x, y_lstsq_fit, label='lstsq')
plt.plot(x, y_least_squares, label='least_squares')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Fitting Results')
plt.legend()
plt.show()

2.运行结果

标签:10,plt,fit,curve,lstsq,7.7,np,习题
From: https://www.cnblogs.com/qishanhsa/p/18550627

相关文章

  • 习题7.4
    1.代码实现点击查看代码importnumpyasnpfromscipy.interpolateimportgriddataimportmatplotlib.pyplotasplt#定义函数deff(x,y):return(x**2-2*x)*np.exp(-x**2-y**2-x*y)#生成随机点np.random.seed(0)x_random=np.random.uni......
  • 习题7.3
    1.代码实现点击查看代码importnumpyasnpfromscipy.interpolateimportinterp1d,CubicSplineimportmatplotlib.pyplotasplt#给定数据T=np.array([700,720,740,760,780])V=np.array([0.0997,0.1218,0.1406,0.1551,0.1664])#要插值的温度点T_interp......
  • 数学建模习题8.5
    `importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.integrateimportsolve_ivp定义微分方程模型defmodel(t,y):f,df_dm,d2f_dm2,T,dT_dm=yd3f_dm3=-3*f*d2f_dm2+2*(df_dm)**2-Td2T_dm2=-2*f*dT_dmreturn[df_dm,d2f_dm2,d3f_dm......
  • 习题7.10(3)
    1.代码实现点击查看代码importnumpyasnpimportpylabaspltfromscipy.optimizeimportcurve_fit#原始数据点x0=np.array([-2,-1.7,-1.4,-1.1,-0.8,-0.5,-0.2,0.1,0.4,0.7,1,1.3,1.6,1.9,2.2,2.5,2.8,3.1,3.4,3.7,4,4.3,4.6,4.9])y0=np.......
  • 习题8.5
    1.代码实现点击查看代码importnumpyasnpfromscipy.integrateimportodeintimportmatplotlib.pyplotasplt#定义微分方程组defsystem(state,eta):f,df,d2f,T,dT=stated3f=-3*d2f+2*df**2-Td2T=-2.1*df*dTreturn[df,......
  • 习题8.4
    1.代码实现点击查看代码importnumpyasnpfromscipy.integrateimportodeintimportmatplotlib.pyplotasplt#定义微分方程组defsystem(state,t):x,y=statedxdt=-x**3-ydydt=x-y**3return[dxdt,dydt]#初始条件x0=1y......
  • 数学建模习题7.10
    `importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltfromscipy.interpolateimportinterp1d,PchipInterpolator,CubicSplinefromscipy.optimizeimportcurve_fitfromscipy.statsimportnorm读取数据file_path='7.17.xISX'#确保文件......
  • 习题7.10(2)
    1.代码实现点击查看代码importnumpyasnpimportpylabasplt#原始数据点x0=np.array([-2,-1.7,-1.4,-1.1,-0.8,-0.5,-0.2,0.1,0.4,0.7,1,1.3,1.6,1.9,2.2,2.5,2.8,3.1,3.4,3.7,4,4.3,4.6,4.9])y0=np.array([0.1029,0.1174,0.1316,0.144......
  • 数学建模习题8.4
    `importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.integrateimportsolve_ivp定义微分方程系统defsystem(t,state):x,y=statedxdt=-x-ydydt=x-y**3return[dxdt,dydt]定义时间跨度和初始条件t_span=(0,30)y0=[1,0.5]解微分方程so......
  • 数学建模习题7.7
    `importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.optimizeimportcurve_fit,leastsq,least_squares定义函数g(x,a,b)defg(x,a,b):return(10*a)/(10*b+(a-10*b)*np.exp(a*np.sin(x)))初始参数a=1.1b=0.01生成数据x_values......