}
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 ;
}
Только одну вешь уточнить.. Вот есть кэш TLB, не понимаю, кто отвечает(сам блок управления памяти или ОС) за замещения при заполнении.
При заполнении, нужно найти кандидата на удаление. Вот мне допустим нравиться Алгоритм Подсчета, "замещение наименее использованного", найти наименее использованный адрес. То есть tlb->Min();
Просто хочу уточнить. Это же сам блок памяти MMU должен делать., внутри коробки? К примеру это за O( log(n) ) параллельно можно реализовать аппаратно, найти наименьшее. Если места на N компараторов хватит(не разбираюсь в масштабах). Или что-то другое там