laba2x - Кафедра ПО - Тверской государственный

advertisement
Министерство образования и науки РФ
Высшего профессионального учреждения
Тверской государственный технический университет
Кафедра : «Программное обеспечение»
Лабораторная работа № 2 по курсу «Методы вычислений»
Выполнил: Студент первого курса
Группа ПИН-1106
Коробейников С.
Проверил: Виноградов С.Ю.
Тверь 2012
Функция: y=x-sin(x)-0.25
Точное Решение y1=0,0838534, y2=0,083854, y3=0,083854
Метод
Правая Левая
Шаг Результат
граница граница
Левый
0
2
0.1
0,0304983538918338
0
2
0.01 0,0784114518302939
0
2
0.001 0,0841486327516235
Трапеции 0
2
0.1
0,130498353891834
0
2
0.01 0,0884114518302937
0
2
0.001 0,085149132751623
Симпсона 0
2
0.1
0,0838531142664544
0
2
0
2
Абсолютная
погрешность
-0,0533556461081662
-0,0054425481697061
0,000294632751623503
0,046644353891834
0,0045574518302937
0,001295132751623
-8,85733545591405E07
0.01 0,0838531634479415 -8,36552058500195E07
0.001 0,0846945742509222 0,000840574250922196
Теория
Метод трапеций — метод численного интегрирования функции одной переменной, заключающийся в замене на
каждом элементарном отрезке подынтегральной функции на многочлен первой степени, то есть линейную функцию.
Формула Симпсона (также Ньютона-Симпсона[1]) относится к приёмам численного интегрирования. Получила
название в честь британского математика Томаса Симпсона (1710—1761).Суть приёма заключается в приближении
подынтегральной функции на отрезке
интерполяционным многочленом второй степени
, то есть
приближение графика функции на отрезке параболой. Метод Симпсона имеет порядок погрешности 4 и алгебраический
порядок точности 3.
Метод прямоугольников — метод численного интегрирования функции одной переменной, заключающийся в замене
подынтегральной функции на многочлен нулевой степени, то есть константу, на каждом элементарном отрезке. Если
рассмотреть график подынтегральной функции, то метод будет заключаться в приближённом вычислении площади под
графиком суммированием площадей конечного числа прямоугольников, ширина которых будет определяться
расстоянием между соответствующими соседними узлами интегрирования, а высота — значением подынтегральной
функции в этих узлах. Алгебраический порядок точности равен 0.
Если отрезок
найти по
является элементарным и не подвергается дальнейшему разбиению, значение интеграла можно
Формуле левых прямоугольников:
Реализация
public static class Metody
{
/// <summary>
/// Функция
/// </summary>
/// <param name="arg">Функция y</param>
/// <returns></returns>
public static double getValue(double arg)
{
return arg - Math.Sin(arg) - 0.25;
}
/// <summary>
/// Левый прямоугольник
/// </summary>
/// <param name="h">Шаг</param>
/// <param name="a">Левый Граница</param>
/// <param name="b">Правая Граница</param>
/// <returns></returns>
public static double LRat(double h, double a, double b)
{
double res = 0;
for (double i = a; i < b; i += h)
res += getValue(i) * h;
return res;
}
/// <summary>
/// Метод Трапеции
/// </summary>
/// <param name="h">Шаг</param>
/// <param name="a">Левая Граница</param>
/// <param name="b">Правая Граница</param>
/// <returns></returns>
public static double TRap(double h, double a, double b)
{
double res = 0;
for(double i = a; i < b; i += h)
res += h * ((getValue(i) + (getValue(i) + h)) / 2);
return res;
}
/// <summary>
/// Метод Симпсона
/// </summary>
/// <param name="h">Шаг</param>
/// <param name="a">Левая Граница</param>
/// <param name="b">Правая Граница</param>
/// <returns></returns>
public static double Simpson(double h, double a, double b)
{
double res = 0;
for (double i = a; i < b; i += h)
res += (h / 6) * (getValue(i) + 4 * getValue((i + i + h) / 2)
+ getValue(i + h));
return res;
}
Download