簡単に線形補間する方法
reduceを使えば、ある数値が昇順に並んだ配列の何番目と何番目の間かがすぐわかります。
const index= x.reduce((pre,current,i)=>current <= x0 ? i : pre, 0)
これにより、線形補間を簡単に計算できます。
const linear = (x, y)=>{
return (x0)=>{
const index= x.reduce((pre,current,i)=>current <= x0 ? i : pre, 0) //数値が何番目の配列の間かを探す
const i = index === x.length-1 ? x.length-2 : index //配列の最後の値より大きい場合は、外挿のために、最後から2番目をindexにする
return (y[i+1]-y[i])/(x[i+1]-x[i])*(x0-x[i])+y[i] //線形補間の関数を返す
}
}
const x = [0,1,2,3,4,5]
const y = [0,2,4,6,8,10]
const linear0 = linear(x,y) //線形補間関数を作成
const x0 = 2.5
const y0 = linear0(x0)
console.log(y0) // -> 5
jsnoteにコードを張り付けてで試してみてください。