
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();
}
}
}