- •Лабораторная работа №1 Интерполяция
- •1.1 Краткие теоретические сведения
- •1.1. Задача аппроксимации функций
- •1.2 Интерполяционный многочлен Лагранжа
- •1.2 Задание к работе
- •ЛабораторнаЯ рАбота № 2 АпПроксимацИя функцИй, заданНых таблицеЙ
- •2.1 Краткие теоретические сведения
- •2.2 Задание к работе
- •Лабораторная работа №3 интерполирование функции кубическими сплайнами
- •3.1 Краткие теоретические сведения.
- •3.2 Задание к работе
- •Лабораторная работа №4 Численное интегрирование
- •4.1 Краткие теоретические сведения.
- •4.1.1 Квадратурные формулы прямоугольников, трапеций и Симпсона
- •4.1.2 Алгоритм прямоугольников-трапеций
- •4.2 Задание к работе
- •Лабораторная работа №5 Численное дифференцирование
- •5.1 Краткие теоретические сведения
- •5.1.1 Вычисление производной по ее определению
- •5.2 Конечно- разностные аппроксимации производных
- •5.3 Использование интерполяционных многочленов Лагранжа для формул численного дифференцирования
- •5.2 Задание к работе
- •Лабораторная рАбота №6 Численное решение обыкновенных дифференциальных уравнений
- •6.1 Краткие теоретические сведения
- •6.1.1 Численное решение обыкновенных дифференциальных уравнений первого порядка. Численное решение задачи Коши.
- •6.1.2 Метод Эйлера
- •6.1.3 Метод Рунге-Кутты
- •6.2 Задание.
- •7 Література
- •Навчальне видання
3.2 Задание к работе
Построить кубический сплайн, интерполирующий функцию у = f(х) на отрезке [1,00; 1,20] для равномерного разбиения с шагом h=0,04 при краевых условиях I или II типа.
Найти значение сплайна в точках 1,05; 1,09; 1,13; 1,15; 1,17. Получить оценку точности с помощью неравенства (13).
//Программа построения кубического сплайна, интерполирующего заданную функцию
/*
****************************************************************************
* Интерполирование функции с помощью кубического сплайна * ******************************************************************************/
#include <stdio.h>
#include <conio.h>
#include <cmath>
#define F 15
void main ()
{
int i,n;
float а,b1,h,s,x,x0,x1,m[P+1],y[P+1],b[Pl+l];
clrscr();
printf ("Введите n - число разбиений отрезка [a,b]\n”); scanf ("%i",&n);
printf ("Введите координаты концов отрезка a, b\n");
scanf ("%f%f",&a, &b1);
printf ("Введите значения функции у(1) в узлах,");
printf (“ причем у(0) = f(a), y(n) =f(b)\n");
for (1 = 0; 1 <= n; scanf ("%f",&у[i]),i++);
printf ("Введите значение х\n");
scanf ("%f",&x);
/* Условия на концах отрезка: m(0)=f’(а)=1 и m(n)=f*(b)=0 */
for (m[0]=1,m[n]=l[0]=0,h=(b1-a)/n,i=1; i<=n-1; i++)
{
b[i] = 3*(y[i+1]-y[i–1])/h;
l[i] = -1/(l[i-1]+4);
m[i] = l[i]*(m[l-1]–b[i]);
};
for (i = n-1; i >= 1; i--)
m[i] = l[i]*m[i+1]+m[i];
if ((x >a) && (x < b1))
{
i = floor((x-a)/h)+1;
x0 = a+(i-1)*h;
x1 = x0+h;
s = y[i–1]*((x–x1)*(x–x1)*(2*(x-x0)+h))/(h*h*h)+y[i]*((x-x0)*(x-x0)*(2*(x1-x)+h))/(h*h*h)+m[i-1]*(x-x1)*(x-x1)* (x –x0)/(h*h)+m[i]*(x-x0)*(x-x0)*(x-x1)/(h*h);
printf ("x = %f s = %f",x,s);
};
printf("\nНажмите любую клавишу для продолжения...");
getch();
}
Лабораторная работа №4 Численное интегрирование
Цель работы - изучить основные квадратурные формулы и алгоритмы численного интегрирования.
4.1 Краткие теоретические сведения.
4.1.1 Квадратурные формулы прямоугольников, трапеций и Симпсона
Для приближенного вычисления определенного интеграла разобьем отрезок интегрирования на равных частей точками ( -шаг разбиения, Значения функции в точках разбиения обозначим через . Непрерывная подынтегральная фцнкция заменяется сплайном – кусочно полиномиальной функцией аппроксимирующей данную функцию. Интегрируя функцию на отрезке , придем к некоторой формуле численного интегрирования (квадратурной формуле).
В зависимости от функции , аппроксимирующей подынтегральную функцию, будем получать различные квадратурные формулы.
Если каждой части деления отрезка функцию заменить функцией, принимающей постоянное значение, равное, например, значению функции в серединной точке -й части то функция будет иметь ступенчатый вид:
В этом случае
и получаем квадратурную формулу прямоугольников:
(1)
Если функцию на каждом отрезке заменить ее линейной интерполяцией по точкам и то получим непрерывную кусочно-линейную функцию
Здесь . Графиком этой функции является ломаная линия.
В этом случае
и получаем квадратурную формулу трапеции:
(2)
Можно получить квадратурную формулу Симпсона, называемую также формулой парабол, если сплайн , аппроксимирующий подынтегральную функцию , представляет собой непрерывную функцию, составленную из примыкающих парабол. Потребуем, чтобы на отрезке парабола проходила через точки , , . Используя построение интерполяционного многочлена Лагранжа второго порядка на отрезке , получим
Для дальнейших преобразований введем переменную с помощью равенства Значениям , равным 0, 1/2 , 1, соответствуют значения , равные
Выразим сплайн через новую переменную :
Учитывая, что имеем
и в результате приходим к квадратурной формуле парабол:
(3)
Приближенное значение интеграла , вычисленное по квадратурной формуле парабол, можно выразить через значения и - результаты вычислений по квадратурным формулам прямоугольников и трапеций:
Погрешность каждой квадратурной формулы оценивается величиной остаточного члена , зависящего от шага разбиения (или от числа разбиений ):
Приведем оценки погрешностей квадратурных формул в том случае, когда подынтегральная функция имеет непрерывную производную второго порядка:
для формулы прямоугольников
для формулы трапеций
Если подынтегральная функция имеет непрерывную производную четвертого порядка, то справедлива такая оценка погрешности формулы Симпсона:
Заметим, что при интегрировании степенной функции, степень которой не выше трех, квадратурная формула Симпсона дает точный результат.
Пример. Найти приближенные значения интеграла с помощью квадратурных формул прямоугольников, трапеций и Симпсона, если отрезок интегрирования [0,1] разбит на n=2; 4; 10 равных частей. Оценить величину погрешности полученных результатов в каждом случае.
Решение. Обозначим через погрешность результата интегрирования по квадратурным формулам (здесь ).
Найдем производные подынтегральной функции до четвертого порядка включительно и максимальные абсолютные значения производных второго и четвертого порядков на отрезке [0,1]:
, , , ,
,
При n=4 получим следующие оценки величин погрешности результатов:
; ;
.
Результаты вычислений по квадратурным формулам прямоугольников, трапеций и Симпсона для различных чисел разбиений n и погрешности этих результатов сведены в таблицу.
Квадратурная формула |
n=2 |
n=4 |
n=10 |
|||
(2) |
|
(4) |
|
(10) |
|
|
прямоугольников |
1,40977 |
0,1699 |
1,44875 |
0,0425 |
1,46039 |
0,0068 |
трапеций |
1,57158 |
0,3398 |
1,49068 |
0,085 |
1,46717 |
0,0136 |
Симпсона |
1,46371 |
0,0045 |
1,46272 |
0,0003 |
1,46265 |
10-5 |
Практически важно вести вычисления до достижения заданной точности по той или иной квадратурной формуле. Этой цели удовлетворяет метод двойного пересчета, который заключается в следующем. По квадратурной формуле проводят вычисление интеграла с шагом h и получают значение (h). Затем уменьшают шаг вдвое и получают новое приближенное значение интеграла (h/2). Чтобы определить, как сильно уклоняется значение (h/2) от точного значения интеграла , используется правило Рунге:
где k=2 для формул прямоугольников и трапеций и k=4 для формулы Симпсона.
При заданной точности вычисления с уменьшающимся шагом проводят до окончания при выполнении условия
При этом полагают с точностью