алг яблоко
поднять перо
опустит перо
сместиться в точку (4,5)
опуститься перо
сместиться в точку (4.5,7)
сместиться в точку (4,7)
смеситься в точку (4,5)
сместиться в точку (3,5.5)
сместиться в точку (2,5.5)
сместиться в точку (1,5)
сместиться в точку (2,1)
сместиться в точку (6,1)
сместиься в точку (7,2)
сместиться в точку(7,5)
сместиться в точку (6,5.5)
сместиться в точку (5,5.5)
сместиться в точку (4,5)
namespace Test{ class Program { static double F(double x) { return Math.Sin(x); }
static double NewtonCotesOpen4(double a, double b) { const int n = 4; double[] c = {2.0, -1.0, 2.0 }; const double K = 3.0;
double h = (b - a) / n; double res = 0;
double x; for(int i = 1; i <= n - 1; i++) { x = a + i * h; res += c[i - 1] * F(x); }
return res * (b - a) / K; }
static double SumSubIntervals(double a, double b, int n) { double res = 0; double h = (b - a) / n; for(int i = 1; i <= n; i++) { res += NewtonCotesOpen4(a + (i - 1) * h, a + i * h); }
return res; }
static void Main(string[] args) { double a = 0; double b = Math.PI; double EPS = 0.00001;
int n = 1; double lcur = SumSubIntervals(a, b, n); double lpre; do { lpre = lcur; n *= 2; lcur = SumSubIntervals(a, b, n); Console.WriteLine("l={0} при n={1} e={2}", Math.Round(lcur, 8), n, Math.Round(Math.Abs(lcur - lpre), 8)); } while (Math.Abs(lcur - lpre) < EPS);
Console.WriteLine("");
Console.WriteLine("l={0} при n={1} e={2}", Math.Round(lcur, 8), n, Math.Round(Math.Abs(lcur - lpre), 8)); } }}