【问题标题】:Curve fitting with three unknowns Python三个未知数Python的曲线拟合
【发布时间】:2023-02-01 19:36:03
【问题描述】:

我有一个数据集X我可以获得在 Python 中定义的指数函数 f(x) = a*np.exp(-b*(x-c)) ,如下所示:

def func(x, a, b, c): 
    return a*np.exp(-b*(x-c))

f = func(x, a, b, c)

一种,b,C在这种情况下都是已知的。

然而,在代数解之后,我需要将这个函数划分为三个不同的成员,我需要获得这个函数的解:

g(x) = f1*a1*np.exp(-b1*(x-c)) + f2*a2*np.exp(-b2*(x-c)) + f3*a3*np.exp(-b3*(x-c))

a1,a2,a3,f1,f2,f3C都知道,我需要做的是适应g(x)f(x)以这样的方式获得b1,b2b3,使用 curve_fit 或任何一种适合此类问题的方法。

f1,f2,f3代表分数,它们的总和等于 1。

我的问题是:我如何定义g(x)函数以获得解决方案b1,b2b3

为了清晰和测试目的,我还附加了可能的值来解决这个问题:

x = np.arange(300., 701., 5.)

f1=0.3
f2=0.5
f3=0.2

c = 350.

a1=1.82
a2=7.32
a3=1.52

【问题讨论】:

    标签: python scipy curve-fitting


    【解决方案1】:

    从 scipy 曲线拟合示例 (https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html) 开始,然后简单地将 b1、b2、b3 作为曲线拟合的未知输入与外部定义的所有其他变量。在这里,我假设你的意思是让 g(x) 适合 f(x)...

    import numpy as np
    import matplotlib.pyplot as plt
    from scipy.optimize import curve_fit
    
    x = np.arange(300., 701., 5.)
    
    f1=0.3
    f2=0.5
    f3=0.2
    
    c = 350.
    
    a1=1.82
    a2=7.32
    a3=1.52
    
    def func(x, a, b, c): 
        return a*np.exp(-b*(x-c))
    
    f = func(x, a, b, c)
    
    def func2(x, b1, b2, b3):
        return f1*a1*np.exp(-b1*(x-c)) + f2*a2*np.exp(-b2*(x-c)) + f3*a3*np.exp(-b3*(x-c))
    
    popt, pcov = curve_fit(func2, x, f(x))
    

    【讨论】:

      猜你喜欢
      • 2012-12-16
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 2015-03-02
      • 2021-02-23
      • 2020-12-06
      • 2014-09-08
      相关资源
      最近更新 更多