private void _Integrate(int part) { Result = (-func(a) + func(b)) / 2; int partsSize = (int)quantity / parts; int ost = quantity - partsSize * parts; int st = part * partsSize + ((part < ost) ? part : ost); int fn = (part + 1) * partsSize + ((part + 1 < ost) ? part : (ost - 1)); double s = 0; for (int i = st; i <= fn; i++) { var f = func(a + h * (i + (1 / (double)2))); s += f; donePercent += 1; EventProgress?.Invoke(donePercent); EventColumn?.Invoke((a + h * (i + (1 / (double)2))), f); } Monitor.Enter(res); try { Result += s; } finally { Monitor.Exit(res); } }
private void _Integrate(int part) { Result = (-func(a) + func(b)) / 2; int partsSize = (int)q / parts; int ost = q - partsSize * parts; int st = part * partsSize; if (part < ost) { st += part; } else { st += ost; } int fn = (part + 1) * partsSize; if (part + 1 < ost) { fn += part; } else { fn += ost - 1; } double s = 0; for (int i = st; i <= fn; i++) { var f = func(a + h * (i + (1 / (double)2))); s += f; dP += 1; EventProgress?.Invoke(dP); EventColumn?.Invoke((a + h * (i + (1 / (double)2))), f); } Monitor.Enter(res); try { Result += s; } finally { Monitor.Exit(res); } }