Как оценить параметр при численном интегрировании
Я хотел бы оценить правильный параметр k для моих экспериментальных данных, но я не знаю, как это кодировать. Я использую ноутбук Colab.
Исходный файл - экспериментальные данные - petroleo.csv
time conc_pretoleo
0 1375
7 802
14 695
21 588
28 417
35 356
42 275
Вот код
# importando os pacotes do python
import numpy as np;
from scipy.optimize import curve_fit
import io
from google.colab import files
import pandas as pd
import matplotlib.pyplot as plt
from scipy.integrate import odeint
#carregar o arquivo em csv
uploaded = files.upload()
for fn in uploaded.keys():
print('O arquivo "{name}" com tamanho de {length} bytes'.format(
name=fn, length=len(uploaded[fn])))
calibracao_df = pd.read_csv(io.StringIO(uploaded['petroleo.csv'].decode('utf-8')))
calibracao_df
calibracao_np = calibracao_df.values
calibracao_np
x = calibracao_np[:,0]
y = calibracao_np[:,1]
#plotting the data
plt.plot(x, y, "o", label = "pontos experimentais")
plt.xlabel("x")
plt.ylabel("y")
plt.rcParams['figure.figsize'] = (11,7)
plt.legend()
plt.show()
#Numeric integration
def firstorder(Ca,t):
k = 1 # how to adjust this parameter?
dydt = -k*Ca
return dydt
t = x
Ca0 = y[0]
yfit = odeint(firstorder, Ca0, t)
print(yfit)
# plotting the data and model
plt.plot(x, y, "o", label = "pontos experimentais")
plt.plot(x, yfit, "-r", label = "modelo")
plt.xlabel("x")
plt.ylabel("y")
plt.rcParams['figure.figsize'] = (11,7)
plt.legend()
plt.show()
В последней части я не знаю, как создать цикл для интеграции и настройки параметра k. Спасибо.