Cosinus mit einem Gaußschen Umschlag, der in Python mit scipy.optimize.curve_fit versagt hatPython

Python-Programme
Anonymous
 Cosinus mit einem Gaußschen Umschlag, der in Python mit scipy.optimize.curve_fit versagt hat

Post by Anonymous »

Ich versuche, Daten anzupassen, die einer Cosinusfunktion mit einem verfallenen Gaußschen Umschlag mit Python und insbesondere scipy.optimize.curve_fit ähneln. Es scheint jedoch, dass mein Code die Parameter nicht genug variiert. Der horizontale Offset bleibt meiner ersten Vermutung sehr nahe, auch wenn es sich eindeutig um kein optimaler Punkt handelt. Ich habe das überprüft, indem der horizontale Offset manuell variiert und der Bestimmungskoeffizient berechnet wurde und die von curve_fit angebotenen Werte nicht die optimalste.

Code: Select all

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

id_ = '0'

filename = '250516_FF_01_coincidences_'+id_+'mm.txt'

def FF_function(x,l,s,A,xoff):
d = x - xoff
return A*np.cos(2*np.pi/l*d)*np.exp(-0.5*(d/s)**2)+A #

data = pd.read_csv(filename, sep=' ',header= None).to_numpy()

# data = data.astype(dtype=np.float32)

fig = plt.subplots(figsize=(10,5))
ax = plt.subplot(111)

ax.plot(data[:,0],data[:,1],alpha = 0.3)

guess = [4.40673558e-02,  2.63973377e-01,  1.63702697e+02, -0.2]

xx=np.linspace(min(data[:,0]),max(data[:,0]),1000)
# ax.plot(xx,FF_function(xx,*guess)

popt,cov = curve_fit(FF_function,data[:,0],data[:,1],p0 = guess)
ax.plot(xx,FF_function(xx,*popt), color ='C0',alpha = 0.5)

SSE = np.sum(np.square(data[:,1]-FF_function(data[:,0], *popt)))
SST = np.sum(np.square(data[:,1]-np.mean(data[:,1])))
r2 = 1 - SSE/SST
print(r2)

print(popt)

#
ax.set_xlabel('Displacement (mm)')
ax.set_ylabel('Coincidences')

Ich kann versuchen, eine manuelle Minimierung des Bestimmungskoeffizienten durchzuführen, aber ich bin neugierig, was in meiner Passform falsch ist.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post