I tried estimating parameters a and b through the levenberg optimization plugin in Runkit. Comparing the results with what Excel gave me, there’s much difference: Excel values are 11469 and -29.714 respectively. Any assistance will be appreciated.
const LM = require(‘ml-levenberg-marquardt’);
// Using Levenberg-Marquardt Optimization Method for Linearfit
function LinearFunction ([a,b]) {
return (t) => (a-b*t);
}
// Loading Raw Interval Transit-Time/Sonic Velocity Data
const DELTBL = [];
const TVDL = [];
const VP = [8333.33,8196,8264,8547,7874,7633,7462];
const DELTB = [117,116,115,114,113,112,111];
const TVD = [8000,8020,8040,8080,8120,8140,8160];
let k=0;
while (VP[k]!=undefined || DELTB[k]!=undefined){
if (DELTB[k]==undefined && (VP[k+1]>VP[k])){
DELTBL[k] = Math.pow(10,6)/VP[k];
TVDL[k] = TVD[k];
} else if (TVD[k]!=undefined && DELTB[k+1]< DELTB[k]) {
//Normal Trendline
DELTBL[k]=DELTB[k];
TVDL[k] =TVD[k];
}
k+=1;
}
let datapointsLin = {
x: DELTBL,
y: TVDL
};
// array of initial parameter values
let initialValuesLin = [4.4567,10.8168];
const optionsLin = {
damping: 1.5,
initialValues: initialValuesLin,
gradientDifference: 10e-2,
maxIterations: 100,
errorTolerance: 10e-6
};
let fittedParamsLin = LM(datapointsLin, LinearFunction, optionsLin);
// Extracting the Interval Transit time gradient
const DELTNG = fittedParamsLin.parameterValues[1];