- •Рабочее задание
- •Варианты заданий к лабораторной работе 1
- •Отделение корней уравнения
- •Результат
- •Уточнение корней методом половинного деления
- •Текст программы
- •Текст программы
- •Текст программы
- •Результат
- •Определитель
- •Обратные матрицы
- •Текст процедуры обращения матриц
- •Метод Гаусса-Жордана
- •Текст процедуры
- •Текст процедуры
- •Метод Зейделя
- •Текст процедуры метода Зейделя
- •Расчет определенного интеграла методом Симпсона
- •Текст функции расчета определенного интеграла
- •Расчет определенного интеграла с эаданной точностью
- •Текст программы
- •Текст программы
- •Интерполяционный многочлен Лагранжа
- •Текст функции расчета многочлена Лагранжа
Расчет определенного интеграла с эаданной точностью
В изложенном порядке расчета оказывается неопределенным коли-чество расчетных участков. С увеличением количества n расчетных учас-тков или, что то же самое, с уменьшением шага h точность расчета уве-личивается, но одновременно возрастает объем вычислений. Для грубой оценки точности обычно используют двойной пересчет с шагами h и 2h и считают, что верными являются совпадающие десятичные цифры.
Если требуемая точность задана, то применяется схема расчета с автоматическим выбором количества расчетных участков или, иначе, с автоматическим выбором шага. В качестве исходных данных задаются: пределы интегрирования a и b, допустимая погрешность , а также подынтегральная функция f(x). Принимается начальное количество участков n=2 и вычисляется предыдущее значение интеграла S0, затем количество участков удваивается и вычисляется последующее значение интеграла S1. Условие окончания счета
|S1 - S0| < .
Если это условие не выполняется, то процесс удвоения числа участков продолжается. Блок-схема программы расчета интеграла с заданной точ-ностью показана на рис. 5.4.
нет
да
Вывод
Рис. 5.4 Блок-схема программы численного
интегрирования с заданной точностью
Пример расчета функции Лапласа
F(x)=
с точностью =0.0001.
Текст программы
program simavt;
uses crt;
type vec=array[0..30] of real;
var i,n:integer;a,b,h,x,s0,s1,eps:real;
y:vec;
{ - - - - - - - - - - - }
function f(x:real):real;
begin f:=exp(-x*x/2)
end;
{ - - - - - - - - - - - }
function sm(n:integer;h:real;r:vec):real;
var k:integer;st:real;
begin st:=r[0]-r[n];k:=4;
for i:=1 to n do
begin st:=st+k*r[i];k:=6-k
end; sm:=st*h/3
end;
{ - - - - - - - - - - -}
begin clrscr;
a:=0;b:=1.63;eps:=0.0001;
n:=1;s1:=1e20;
repeat s0:=s1;n:=2*n;
h:=(b-a)/n;
for i:=0 to n do
begin x:=a+i*h;y[i]:=f(x)
end; s1:=sm(n,h,y)/sqrt(2*pi)
until abs(s0-s1)<=eps;
writeln('eps=',eps:8:6, ' s=',s1:10:4,' n=',n:2);
repeat until keypressed
end.
Результат
eps=0.000100 s= 0.4484 n= 8
Расчет двойных интегралов
Графически расчет двойного интеграла
V= ,
нагляднее всего трактовать как вычисление объема фигуры ( рис. 5.5), ограниченной плоскостью xy, поверхностью z=f(x,y), цилиндрическими по-верхностями y=(x) и y=(x) и плоскостями x=a и x=b.
Вычисление двойного интеграла разбивают на два последовательных
z
y=1(x)
y
a
y=2(x)
x c Si
d
b
Рис. 5.5. Графическое представление
двойного интеграла
расчета двух одинарных интегралов S= и V= .
Задавая количество участков nx по оси x получают координаты узловых сечений
x=a + i*hx ,
где hx=(b-a)/nx - шаг интегрирования по оси x,
и значения пределов интегрирования c=1(x) и d=2(x). Разбивая диа-пазон [c, d] на ny участков, вычисляют абсциссы
y=c + j*hy ,
где hy=(d-c)/ny - шаг интегрирования по оси y,
и ординаты z=f(x, y) узловых точек промежуточных площадей S. Затем с помощью функции расчета определенного интеграла последовательно рассчитываются промежуточные площади S и искомый интеграл V. Блок-схема расчета двойного интеграла представлена на рис. 5.6.
Пример расчета двойного интеграла
V= Принять nx=8 и ny=4 .