public static double d5(_function f, double a, double b) { double z = diff_4(f, a) + diff_4(f, b) + 3 * (f(a) - f(b)) / (b - a); double w = Math.Sqrt(z * z - diff_4(f, a) * diff_4(f, b)); double g = (z + w - diff_4(f, a)) / (diff_4(f, b) - diff_4(f, a) + 2 * w); if (g > 1) { return(b); } else { if (g < 0) { return(a); } else { return(a + g * (b - a)); } } }
public static double d3(_function f, double a, double b, double c) { return(b + 0.5 * ((b - a) * (b - a) * (f(b) - f(c)) - (b - c) * (b - c) * (f(b) - f(a))) / ((b - a) * (f(b) - f(c)) - (b - c) * (f(b) - f(a)))); }
public static double d4(_function f, double a, double b, double c) { return(b + 0.5 * ((b - a) * (f(a) - f(c)) / (f(a) - 2 * f(b) + f(c)))); }
public static double d1(_function f, double a, double b, double c) { return(0.5 * (f(a) * (b * b - c * c) + f(b) * (c * c - a * a) + f(c) * (a * a - b * b)) / (f(a) * (b - c) + f(b) * (c - a) + f(c) * (a - b))); }
public static double d2(_function f, double a, double b, double c) { return(0.5 * (a + b) + 0.5 * ((f(a) - f(b)) * (f(a) - f(b)) * (b - c) * (c - a)) / (f(a) * (b - c) + f(b) * (c - a) + f(c) * (a - b))); }
public static double second_diff_2(_function f, double x) { double dx = 1e-7; return((f(x + 2 * dx) - 2 * f(x) + f(x - 2 * dx)) / (4 * dx * dx)); }
public static double diff_4(_function f, double x) { double dx = 1e-7; return((-f(x + 2 * dx) + 8 * f(x + dx) - 8 * f(x - dx) + f(x - 2 * dx)) / (12 * dx)); }
public static double diff_3(_function f, double x) { double dx = 1e-7; return((f(x - dx) - 4 * f(x) + 3 * f(x + dx)) / (2 * dx)); }
//Производные для одномерных функций public static double diff_1(_function f, double x) { double dx = 1e-7; return((f(x + dx) - f(x)) / dx); }
set => SetProperty(ref _function, value);