Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ5.pdf
Скачиваний:
6
Добавлен:
29.06.2023
Размер:
233.86 Кб
Скачать

5

3Заключение

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

Отчет написан согласно ОС ТУСУР 2013.

6

Приложение А

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

Исходный код программы

using System;

namespace ConsoleApplication

{

class Program

{

public delegate double Function(double x); static double f(double x)

{

return (2 * x * Math.Exp(x * x));

}

static double df(double x)

{

return Math.Exp(-x * -x *-1);

}

public static double Left_Method(Function f, double a, double b, int n) { double sum = 0.0 public static double Right_Method(Function f, double a, double b, int n) { double sum = 0. static void Main(string[] args)

{

int n1 = 6;

int n2 = 40; int n3 = 120; int n4 = 400; double result; double a = -2; double b = 0; Console.WriteLine("Метод правых и левых прямоугольников: "); Console.WriteLine("________________________________________");

result = f(b) - f(a); Console.WriteLine("Аналитический расчет = " + result.ToString()) Console.WriteLine("________________________________________"); Console.WriteLine("Метод левых прямоугольников: "); result = Left_Method(df, a, b, n1) Console.WriteLine("Метод левых прямоугольников при n = 6: " + result.ToString()); result = Left_Method(df, a, b, n2);

Console.WriteLine("Метод левых прямоугольников при n = 40: " + result.ToString()); result = Left_Method(df, a, b, n3);

Console.WriteLine("Метод левых прямоугольников при n = 120: " + result.ToString()); result = Left_Method(df, a, b, n4);

Console.WriteLine("Метод левых прямоугольников при n = 400: " + result.ToString()); Console.WriteLine("________________________________________");

7

Console.WriteLine("Метод правых прямоугольников: "); result = Right_Method(df, a, b, n Console.WriteLine("Метод правых прямоугольников при n = 6: " + result.ToString()); res Console.WriteLine("Метод правых прямоугольников при n = 40: " + result.ToString()); re Console.WriteLine("Метод правых прямоугольников при n = 120: " + result.ToString()); r Console.WriteLine("Метод правых прямоугольников при n = 400: " + result.ToString()); C

}

}

}

8

Приложение Б

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

Исходный код программы

using System;

namespace Метод_Трапеций_и_Метод_Симпсона

{

class Program

{

static double f(double x)

{

return Math.Exp(-x * -x * -1);

}

public static double Trapez(double a, double b, int n)

{

double sum = 0.0; double h = (b - a) / n;

for (int i = 0; i < n; i++)

sum += 0.5 * h * (f(a + i * h) + f(a + (i + 1) * h)); return sum;

}

public static double Simpson(double a, double b, int n)

{

double sum = 0.0; double h = (b - a) / n; if (n % 2 != 0)

{

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

sum += h * (f(a + i * h) + 4 * f(a + (i + 1) * h) + f(a + (i + 2) * h)) / 3;

}

else

{

sum = 3 * h * (f(a) + 3 * f(a + h) + 3 * f(a + 2 * h) + f(a + 3 * h)) / 8; for (int i = 3; i < n - 1; i += 2)

sum += h * (f(a + i * h) + 4 * f(a + (i + 1) * h) + f(a + (i + 2) * h)) / 3;

}

9

return sum;

}

static void Main(string[] args)

{

int n1 = 6;

int n2 = 40; int n3 = 120; int n4 = 400; double a = -2; double b = 0;

Console.WriteLine("Метод трапеций и метод Симпсона: "); Console.WriteLine("________________________________________"); Console.WriteLine("Метод трапеций: ");

double trapez = Trapez(a, b, n1);

Console.WriteLine($"Метод трапеций при n = 6: {trapez}"); trapez = Trapez(a, b, n2);

Console.WriteLine($"Метод трапеций при n = 40: {trapez}"); trapez = Trapez(a, b, n3);

Console.WriteLine($"Метод трапеций при n = 120: {trapez}"); trapez = Trapez(a, b, n4);

Console.WriteLine($"Метод трапеций при n = 400: {trapez}"); Console.WriteLine("________________________________________"); Console.WriteLine("Метод Симпсона: ");

double simpson = Simpson(a, b, n1);

Console.WriteLine($"Метод Симпсона при n = 6: {simpson}"); simpson = Simpson(a, b, n2);

Console.WriteLine($"Метод Симпсона при n = 40: {simpson}"); simpson = Simpson(a, b, n3);

Console.WriteLine($"Метод Симпсона при n = 120: {simpson}"); simpson = Simpson(a, b, n4);

Console.WriteLine($"Метод Симпсона при n = 400: {simpson}"); Console.ReadKey();

}

}

}

Соседние файлы в предмете Численные методы