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;