Материал: cm5

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

6

3Заключение

Врезультате выполнения данной лабораторной работы были полученны навыки разработки программ, использующих в своей работе методы левых, правых прямоугольников, а также метод трапеций и метод Симпсона.

7

Приложение A

(обязательное)

using System;

namespace laba5_cm

{

class Program

{

private const double a = 4; private const double b = 6; private const int n1 = 4; private const int n2 = 20; private const int n3 = 100; private const int n4 = 400;

private const double h1 = (b - a) / n1; private const double h2 = (b - a) / n2; private const double h3 = (b - a) / n3; private const double h4 = (b - a) / n4; static void Main(string[] args)

{

LTree();

RTree();

Trapeze();

Simpson();

}

static double Fn(double x)

{

return ((Math.Sin(0.94 * x) * Math.Log((0.02 * x) , Math.Exp(1))));

}

static void LTree()

8

{

Console.WriteLine("Метод левого прямоугольника"); double S = 0;

for (double x = a; x < b; x += h1) { S += Fn(x); }

S *= h1;

Console.WriteLine($"n = 4 ответ { Math.Round(S, 4)}"); S = 0;

for (double x = a; x < b; x += h2) S += Fn(x);

S *= h2;

Console.WriteLine($"n = 20 ответ { Math.Round(S, 4)}"); S = 0;

for (double x = a; x < b; x += h3) S += Fn(x);

S *= h3;

Console.WriteLine($"n = 100 ответ { Math.Round(S, 4)}"); S = 0;

for (double x = a; x < b; x += h4) S += Fn(x);

S *= h4;

Console.WriteLine($"n = 400 ответ { Math.Round(S, 4)}");

}

static void RTree()

{

Console.WriteLine();

Console.WriteLine("Метод правого прямоугольника"); double S = 0;

for (double x = a + h1; x <= b; x += h1) S += Fn(x);

S *= h1;

Console.WriteLine($"n = 4 ответ { Math.Round(S, 4)}");

9

S = 0;

for (double x = a + h2; x <= b; x += h2) S += Fn(x);

S *= h2;

Console.WriteLine($"n = 20 ответ { Math.Round(S, 4)}"); S = 0;

for (double x = a + h3; x <= b; x += h3) S += Fn(x);

S *= h3;

Console.WriteLine($"n = 100 ответ { Math.Round(S, 4)}"); S = 0;

for (double x = a + h4; x <= b; x += h4) S += Fn(x);

S *= h4;

Console.WriteLine($"n = 400 ответ { Math.Round(S, 4)}");

}

static void Trapeze()

{

Console.WriteLine(); Console.WriteLine("Метод трапеций"); double SF = 0;

double C;

for (double x = a + h1; x < b; x += h1) SF += Fn(x);

C = h1 / 2 * (Fn(a) + Fn(b)) + h1 * SF; Console.WriteLine($"n = 4 ответ { Math.Round(C, 4)}"); SF = 0;

for (double x = a + h2; x < b; x += h2) SF += Fn(x);

C = h2 / 2 * (Fn(a) + Fn(b)) + h2 * SF; Console.WriteLine($"n = 20 ответ { Math.Round(C, 4)}"); SF = 0;

10

for (double x = a + h3; x < b; x += h3) SF += Fn(x);

C = h3 / 2 * (Fn(a) + Fn(b)) + h3 * SF; Console.WriteLine($"n = 100 ответ { Math.Round(C, 4)}"); SF = 0;

for (double x = a + h4; x < b; x += h4) SF += Fn(x);

C = h4 / 2 * (Fn(a) + Fn(b)) + h4 * SF; Console.WriteLine($"n = 400 ответ { Math.Round(C, 4)}");

}

static void Simpson()

{

Console.WriteLine(); Console.WriteLine("Метод Симпсона"); double x;

double SF1 = 0; double SF2 = 0; double C;

for (int i = 0; i <= (n1 - 1) / 2; i++)

{

x = a + (2 * i + 1) * h1; SF1 += Fn(x);

}

for (int i = 0; i <= (n1 - 2) / 2; i++)

{

x = a + 2 * i * h1; SF2 += Fn(x);

}

C = h1 / 3 * (Fn(a) + 4 * SF1 + 2 * SF2 + Fn(b)); Console.WriteLine($"n = 4 ответ {Math.Round(C, 4)}"); SF1 = 0;

SF2 = 0;