private void Gauss_x_w() { int i, j, m, k; double hx, x_a, x_b, x_c, x_old, fx_a, fx_b, fx_c, pl; k = n / 2; m = n - k; if (m != k) { x[m] = 0.0; pl = n * MyF.PL(n - 1, x[m]); w[m] = 2.0 / pl / pl; } hx = 0.1 / k; x_b = hx; x_old = 0.0; for (i = 1; i <= k; i++) { x_a = x_b; fx_a = MyF.PL(n, x_a); do { x_b += hx; fx_b = MyF.PL(n, x_b); }while (fx_a * fx_b > 0); j = 0; x_a = x_b - hx; do { x_c = x_a + (x_b - x_a) * 0.5; j += 1; fx_c = MyF.PL(n, x_c); if ((fx_a * fx_c) < 0) { x_b = x_c; } else { x_a = x_c; } }while ((Math.Abs(fx_c) > 0.5E-15) && (j < 65)); x[m + i] = x_c; pl = n * MyF.PL(n - 1, x_c); w[m + i] = 2.0 * (1.0 - x_c * x_c) / pl / pl; x[k - i + 1] = -x_c; w[k - i + 1] = w[m + i]; hx = (x_c - x_old) / 3; x_old = x_c; } txt_xw = ""; for (i = 1; i <= n; i++) { txt_xw += $" x[{i,2}] = {x[i], 19:F14} w[{i,2}] = {w[i],19:F14}\r\n"; } }