You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
905 B
42 lines
905 B
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
from scipy.optimize import curve_fit
|
|
|
|
# %% AJUSTE
|
|
|
|
kb = 1.380649e-23 # Constante de Boltzmann
|
|
T = 300 # Temperatura en Kelvin
|
|
kbT = kb * T # Factor kb * T
|
|
|
|
def helfrich_model(x, kappa, b):
|
|
|
|
# b = abs(b)
|
|
kappa = abs(kappa)
|
|
b = abs(b)
|
|
|
|
result = kbT / (8*b + kappa*x)
|
|
return result
|
|
|
|
def aproxHelfrich(x, y):
|
|
x = np.array(x)
|
|
y = np.array(y)
|
|
|
|
try:
|
|
|
|
popt, _ = curve_fit(helfrich_model, x, y, p0=[1.4e-19, 1e-7]) # valores referencia
|
|
kappa, b = popt
|
|
|
|
# Aseguramos que bend y stretch sean siempre positivos
|
|
b = abs(b)
|
|
kappa = abs(kappa)
|
|
|
|
# # Establecemos un límite inferior para el valor de 'bend'
|
|
# bend = max(bend, 1e-20)
|
|
return kappa, b
|
|
except RuntimeError:
|
|
print("Error: La optimización no convergió")
|
|
return None, None
|
|
|
|
|
|
|
|
|