// FittingTriPoly /* ------------------------------------------------------ 作者 : Black Ghost 日期 : 2018-12-23 版本 : 0.0.0 ------------------------------------------------------ 基于傅立叶(Fourier)级数的三角多项式拟合 理论: 若f(x)周期为2pi,则存在M(2M= float64(N)/2.0 { panic("Error in goNum.FittingTriPoly: M is wrong") } sol := ZeroMatrix(M+1, 2) //b0=0.0 var err bool = false //a0 var a0 float64 for k := 1; k < N; k++ { // a0 += XY.GetFromMatrix(k, 1) * math.Cos(0.0*XY.GetFromMatrix(k, 0)) a0 += XY.GetFromMatrix(k, 1) } sol.SetMatrix(0, 0, 2.0*a0/float64(N)) //aj, bj for j := 1; j < M+1; j++ { var aj, bj float64 for k := 1; k < N; k++ { aj += XY.GetFromMatrix(k, 1) * math.Cos(float64(j)*XY.GetFromMatrix(k, 0)) bj += XY.GetFromMatrix(k, 1) * math.Sin(float64(j)*XY.GetFromMatrix(k, 0)) } sol.SetMatrix(j, 0, 2.0*aj/float64(N)) sol.SetMatrix(j, 1, 2.0*bj/float64(N)) } err = true return sol, err }