}
public virtual void Solve(int M)
{
Coefs=new List<Complex>((int)MaxM);
this.M = M;
for (int i = 0; i < MaxM*2; i++)
{
Coefs.Add( solveCoefs(i));
}
isSolved = true;
}
protected virtual Complex solveCoefs(double j)
{
double sumA = 0;
double sumB = 0;
double i = 0;
foreach (var point in Points) // points входные данные.
{
//double _x = -Math.PI + 2.0 * Math.PI * (double)x / (double)N;
double phi = normalizeX(point.Real) * j;
phi = phi * W;
sumA += Math.Cos(phi) * point.Imaginary;
sumB += Math.Sin(phi) * point.Imaginary;
// i++;
}
return new Complex (sumA / MaxM, sumB / MaxM); // MaxM=N/2
}
// получаю обратно по коффициентам значения
public virtual double FuncCalc(double x,List<Complex> coefs)
{
x = W * normalizeX(x); // (x-MinX)/(MaxX-MinX)* N;
double sum = 0;
for (int i = 0; i < M; i++)
// M число кэфоф которые беру. По идеи чем больше тем точнее. Но чет не выходит.
{
sum += coefs[i].Real * Math.Cos(x * i) + coefs[i].Imaginary * Math.Sin(x * i);
}
return sum - coefs[0].Real/2 ;
}
Допустим там 1 управляющий бит в команде, который сразу извлекает из памяти след 4 байта dword и переключает счетчик инструкций на +1? Так же надо реализовывать?