第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 lmfit 的優(yōu)化參數(shù)找到函數(shù)的面積(偽 Voigt)?

如何使用 lmfit 的優(yōu)化參數(shù)找到函數(shù)的面積(偽 Voigt)?

ibeautiful 2022-06-28 17:14:02
我正在嘗試確定曲線的面積(峰值)。我能夠使用 Pseudo Voigt 輪廓和指數(shù)背景成功擬合峰值(數(shù)據(jù)),并獲得與使用商業(yè)軟件獲得的參數(shù)一致的擬合參數(shù)?,F(xiàn)在的問(wèn)題是試圖將這些擬合峰參數(shù)與峰面積聯(lián)系起來(lái)。與高斯線形的情況不同,我找不到使用擬合參數(shù)計(jì)算峰面積的簡(jiǎn)單方法。所以我正在嘗試使用 scipy quad 函數(shù)來(lái)整合我的擬合函數(shù)。我知道商業(yè)軟件確定的區(qū)域應(yīng)該在 19,000 左右,但我得到的值非常大。擬合效果很好(通過(guò)繪圖確認(rèn)......)但計(jì)算區(qū)域并不接近。在嘗試使用傳遞給它的最佳擬合值繪制我的 psuedo_voigt_func 函數(shù)后,我發(fā)現(xiàn)它是一個(gè)過(guò)于強(qiáng)烈的峰值。這樣,集成可能是正確的,那么錯(cuò)誤將在于我如何創(chuàng)建峰值,即通過(guò)將擬合參數(shù)傳遞給我的 psuedo_voigt_func 函數(shù),其中該函數(shù)是從 lmfit 模型網(wǎng)站(https://lmfit. github.io/lmfit-py/builtin_models.html)。我相信我正確編寫(xiě)了偽 voigt 函數(shù)的腳本,但它不起作用。#modulesimport osimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltfrom lmfit.models import GaussianModel, LinearModel, VoigtModel, Pearson7Model, ExponentialModel, PseudoVoigtModelfrom scipy.integrate import quad#datax = np.array([33.05, 33.1 , 33.15, 33.2 , 33.25, 33.3 , 33.35, 33.4 , 33.45, 33.5 , 33.55, 33.6 , 33.65, 33.7 , 33.75, 33.8 , 33.85, 33.9 , 33.95, 34.  , 34.05, 34.1 , 34.15, 34.2 , 34.25, 34.3 , 34.35, 34.4 , 34.45, 34.5 , 34.55, 34.6 , 34.65, 34.7 , 34.75, 34.8 , 34.85, 34.9 , 34.95, 35.  , 35.05, 35.1 , 35.15, 35.2 , 35.25, 35.3 , 35.35, 35.4 , 35.45, 35.5 , 35.55, 35.6 , 35.65, 35.7 , 35.75, 35.8 , 35.85, 35.9 , 35.95, 36.  , 36.05, 36.1 , 36.15, 36.2 , 36.25, 36.3 , 36.35, 36.4 , 36.45])y = np.array([4569,  4736,  4610,  4563,  4639,  4574,  4619,  4473,  4488, 4512,  4474,  4640,  4691,  4621,  4671,  4749,  4657,  4751, 4921,  5003,  5071,  5041,  5121,  5165,  5352,  5304,  5408, 5393, 5544, 5625,  5859,  5851,  6155,  6647,  7150,  7809, 9017, 10967, 14122, 19529, 28029, 39535, 50684, 55730, 52525, 41356, 30015, 20345, 14368, 10736,  9012,  7765,  7064,  6336, 6011,  5806,  5461,  5283,  5224,  5221,  4895,  4980,  4895, 4852,  4889,  4821,  4872,  4802,  4928])
查看完整描述

2 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

OP 的pseudo_voigt格式不正確,但似乎也沒(méi)有錯(cuò),但是 有不同的定義pseudo_voigt。下面我從 Wikipedia 實(shí)現(xiàn)了一個(gè)(代碼中的鏈接),通常會(huì)產(chǎn)生很好的結(jié)果。然而,從對(duì)數(shù)尺度來(lái)看,這個(gè)數(shù)據(jù)并不是那么好。我還使用復(fù)雜的定義來(lái)獲得真正的 VoigtusingFedeeva函數(shù),例如lmfit.


代碼如下所示:


import matplotlib.pyplot as plt

import numpy as np

from scipy.optimize import curve_fit

from scipy.special import wofz

from scipy.integrate import quad


def cauchy(x, x0, g):

    return 1. / ( np.pi * g * ( 1 + ( ( x - x0 ) / g )**2 ) )


def gauss( x, x0, s):

    return 1./ np.sqrt(2 * np.pi * s**2 ) * np.exp( - (x-x0)**2 / ( 2 * s**2 ) )


# https://en.wikipedia.org/wiki/Voigt_profile#Numeric_approximations

def pseudo_voigt( x, x0, s, g, a, y0 ):

    fg = 2 * s * np.sqrt( 2 * np.log(2) )

    fl = 2 * g

    f = ( fg**5 +  2.69269 * fg**4 * fl + 2.42843 * fg**3 * fl**2 + 4.47163 * fg**2 * fl**3 + 0.07842 * fg * fl**4+ fl**5)**(1./5.)

    eta = 1.36603 * ( fl / f ) - 0.47719 * ( fl / f )**2 + 0.11116 * ( f / fl )**3

    return y0 + a * ( eta * cauchy( x, x0, f) + ( 1 - eta ) * gauss( x, x0, f ) )


def voigt( x, s, g):

    z = ( x + 1j * g ) / ( s * np.sqrt( 2. ) )

    v = wofz( z ) #Feddeeva

    out = np.real( v ) / s / np.sqrt( 2 * np.pi )

    return out



def fitfun(  x, x0, s, g, a, y0 ):

    return y0 + a * voigt( x - x0, s, g )


if __name__ == '__main__':

    xlist = np.array( [ 33.05, 33.1 , 33.15, 33.2 , 33.25, 33.3 , 33.35, 33.4 , 33.45, 33.5 , 33.55, 33.6 , 33.65, 33.7 , 33.75, 33.8 , 33.85, 33.9 , 33.95, 34.  , 34.05, 34.1 , 34.15, 34.2 , 34.25, 34.3 , 34.35, 34.4 , 34.45, 34.5 , 34.55, 34.6 , 34.65, 34.7 , 34.75, 34.8 , 34.85, 34.9 , 34.95, 35.  , 35.05, 35.1 , 35.15, 35.2 , 35.25, 35.3 , 35.35, 35.4 , 35.45, 35.5 , 35.55, 35.6 , 35.65, 35.7 , 35.75, 35.8 , 35.85, 35.9 , 35.95, 36.  , 36.05, 36.1 , 36.15, 36.2 , 36.25, 36.3 , 36.35, 36.4 , 36.45])

    ylist = np.array( [ 4569,  4736,  4610,  4563,  4639,  4574,  4619,  4473,  4488, 4512,  4474,  4640,  4691,  4621,  4671,  4749,  4657,  4751, 4921,  5003,  5071,  5041,  5121,  5165,  5352,  5304,  5408, 5393, 5544, 5625,  5859,  5851,  6155,  6647,  7150,  7809, 9017, 10967, 14122, 19529, 28029, 39535, 50684, 55730, 52525, 41356, 30015, 20345, 14368, 10736,  9012,  7765,  7064,  6336, 6011,  5806,  5461,  5283,  5224,  5221,  4895,  4980,  4895, 4852,  4889,  4821,  4872,  4802,  4928])


    sol, err = curve_fit( pseudo_voigt, xlist, ylist, p0=[ 35.25,.05,.05, 30000., 3000] )

    solv, errv = curve_fit( fitfun, xlist, ylist, p0=[ 35.25,.05,.05, 20000., 3000] )

    print solv

    xth = np.linspace( xlist[0], xlist[-1], 500)

    yth = np.fromiter( ( pseudo_voigt(x ,*sol) for x in xth ), np.float )

    yv = np.fromiter( ( fitfun(x ,*solv) for x in xth ), np.float )


    print( quad(pseudo_voigt, xlist[0], xlist[-1], args=tuple( sol ) ) )

    print( quad(fitfun, xlist[0], xlist[-1], args=tuple( solv ) ) )

    solvNoBack = solv

    solvNoBack[-1]  =0

    print( quad(fitfun, xlist[0], xlist[-1], args=tuple( solvNoBack ) ) )


    fig = plt.figure()

    ax = fig.add_subplot( 1, 1, 1 )


    ax.plot( xlist, ylist, marker='o', linestyle='', label='data' )

    ax.plot( xth, yth, label='pseudo' )

    ax.plot( xth, yv, label='voigt with hack' )

    ax.set_yscale('log')

    plt.legend( loc=0 )

    plt.show()

提供:

http://img1.sycdn.imooc.com//62bac6870001952f05780449.jpg

[3.52039054e+01 8.13244777e-02 7.80206967e-02 1.96178358e+04 4.48314849e+03]

(34264.98814344757, 0.00017531957481189617)

(34241.971907301166, 0.0002019796740206914)

(18999.266974139795, 0.0002019796990069267)

從圖中可以看出,pseudo_voigt效果不是很好。然而,積分并沒(méi)有太大的不同。不過(guò),考慮到擬合優(yōu)化chi**2這一事實(shí)并不是一個(gè)大驚喜。


查看完整回答
反對(duì) 回復(fù) 2022-06-28
?
慕容708150

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊

與 中的其他類似峰的線形和模型一樣lmfit,該amplitude參數(shù)應(yīng)給出該組件的面積。

對(duì)于它的價(jià)值,使用真正的 Voigt 函數(shù)而不是偽 Voigt 函數(shù)可能會(huì)更好。


查看完整回答
反對(duì) 回復(fù) 2022-06-28
  • 2 回答
  • 0 關(guān)注
  • 369 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)