Transcript lekcii

Теория и практика
программирования задач
на ЭВМ
1
Содержание курса












Введение в численные методы
Методы решения СЛАУ
Исчисление конечных разностей
Задача интерполяции
Интерполяционный многочлен Лагранжа
Интерполяционный многочлен Ньютона
Сплайн-интерполяция
Метод наименьших квадратов
Численное дифференцирование
Численное интегрирование:
Методы прямоугольника
Метод трапеции
Метод парабол (метод Симпсона)
Введение в Matlab
Примеры программной реализации
2
Список литературы
1.
2.
3.
4.
5.
Формалев В.Ф., Ревизников Д.Л. Численные
методы. – М.: ФИЗМАТЛИТ, 2004.
Руководство MATLAB
А.А.Самарский, А.В.Гулин. Численные методы
М.: Наука, 1989.
А.А.Самарский. Введение в численные
методы М.: Наука, 1982.
Петров И.Б., Лобанов А.И. Введение в
вычислительную математику.
3
Введение в численные методы
Первое применение вычислительных методов принадлежит древним
египтянам, которые умели вычислять диагональ квадрата за
конечное количество действий. Они также могли находить
квадратный корень из 2, скорее всего, с помощью алгоритма, в
дальнейшем получившего название формулы Герона, а еще позднее
— метода Ньютона: uk+1=1/2(uk+2/uk), u0=a
Пример.
Решается задача Коши для обыкновенного дифференциального уравнения
2-го порядка:
u''(t) = u(t), u(0) = 1, u'(0) = - 1.
Общее решение имеет вид
u(t) = 0,5[u(0) + u'(0)]et + 0,5[u(0) - u'(0)]e- t.
При заданных начальных данных точное решение задачи: u(x) = e-t,
однако малая погрешность δ в их задании приведет к появлению
члена δe-t, который при больших значениях аргумента может
существенно исказить решение.
4
Определение: Погрешность
измерения — оценка отклонения
измеренного значения величины от
её истинного значения. Погрешность
измерения является характеристикой
(мерой) точности измерения.
5
Определение: Абсолютная
погрешность измерения (англ.
absolute error of a measurement) –
погрешность измерения, выраженная
в единицах измеряемой величины.
6
Определение: Относительное
удлинение - это отношение
приращенной в результате растяжения
длины к первоначальной длине
образца, выраженное в процентах
7
Определение: Относительная
погрешность измерения (англ. relative
error) – погрешность измерения,
выраженная отношением абсолютной
погрешности измерения к
действительному или измеренному
значению измеряемой величины.
Примечание. Относительную погрешность
в долях или процентах находят из
отношений:
8
Численное решение систем
линейных алгебраических уравнений


Пусть дана система линейных алгебраических уравнений
(СЛАУ):
После (n-1)-го шага алгоритма Гаусса получаем следующую
расширенную матрицу с контрольными суммами, содержащую
верхнюю треугольную матрицу СЛАУ
9

Пример. Методом Гаусса решить
СЛАУ:
10
Теория приближений
(1)
11
Исчисление конечных разностей
12
Задача интерполяции
13
Интерполяционный многочлен
Лагранжа
14
Интерполяционный многочлен
Ньютона
В случае равноудаленных центров интерполяции,
находящихся на единичном расстоянии друг от друга,
справедлива формула:
15
Сплайн-интерполяция
16
Кубический сплайн
17
Метод наименьших квадратов
18
Численное дифференцирование
19
20
Численное
интегрирование
Впервые разработал И. Ньютон. Численное
интегрирование основано на том, что
функция заменяется интерполяционным
многочленом:
F(x)=Р(х)
Р(х)=a0+a1x1+a2x2+…+anxn
(строится по точкам, то есть P(xi)=F(xi)
21
Применение численных
методов
Т.к.
не
все
функции
интегрируются
аналитическими способами, то приходится
применять численные методы.
Функция
y=F(x)
заменяется
интерполяционным
многочленом
P(x),
который в точках xi равен значению
функции
P(xi)=F(xi)
22
Геометрическая
интерпретация
у
a
b x
Интеграл – площадь криволинейной
(подинтегральной) трапеции, одной из боковых
сторон которой является кривая У= F(x)
23
Методы интегрирования
В
зависимости
от
степени
интерполяционного многочлена выбираются
различные
методы
интегрирования,
в
частности
Методы прямоугольника
1. Слева
2. Справа
Метод трапеции
Метод парабол (метод Симпсона)

24
Метод прямоугольника
Для
методов
прямоугольника
выбирается
интерполяционный
многочлен 0-порядка
Р(х)=a0
25
Метод прямоугольника слева Р(х0)=у0
у2 y
у0
у1
x
x0
a
x1
x2
xn
b
Для метода прямоугольника слева
интерполяционный многочлен Р(хi)=уi
26
Метод прямоугольника
слева
x1

xo
x1
f ( x)dx   yodx  yoh
у2 y
xo
у0
у1
x
a
x0
x1
x2
xn
b27
Метод прямоугольника
слева
На отрезке [a, b] интеграл будет равен
площади n-прямоугольников
Интеграл слева вычисляется по формуле:
ba
( y  y  ...  y )  Rn
 f ( x)dx 
n
a
b
0
1
n 1
28
Rn - погрешность
где Rn - погрешность, которая
вычисляется по формуле:
(b  a) M 1
Rn 
2n
2
M 1  max f ( x)
[a,b]
29
Метод прямоугольника справа Р(х0)=у1
y2 y
y1
yn
x
x0
a
x1
x2
xn
b
Для метода прямоугольника справа
интерполяционный многочлен Р(хi)=уi+1
30
Метод прямоугольника
слева
x1

xo
x1
f ( x)dx   y1dx  y1h
y2 y
xo
y1
yn
x
x0
a
x1
x2
xn
31
b
Метод прямоугольника
справа
На отрезке [a, b] интеграл будет равен
площади n-прямоугольников:
Интеграл справа вычисляется по
формуле:
ba
( y  y2  ...  y )  Rn
 f ( x)dx 
n
a
b
1
n
32
Rn - погрешность
где Rn - погрешность, которая
вычисляется по формуле:
(b  a) M 1
Rn 
2n
2
M 1  max f ( x)
[a,b]
33
Метод трапеций
y
x
x0
a
x1
x2
xn
b
34
Метод трапеций
Для метода трапеций выбирается
интерполяционный многочлен 1-порядка
F(x)=P(x) =a0+а1х
и нам известно, что F(x0)=y0 , F(x1)=y1
Построим интерполяционный многочлен
y1 y0
P( x)  y0 
( x  x0)
n
35
y y
( x  x ))dx  y ( x  h)
 f ( x)dx   ( y 
n
x
x
x0  h
x0  h
1
0
0
0
0
0
0
0
y  y ( x  h)( x  h)  2 x ( x  h)
y  y x 2x
(
)(
) y x (
)(
)
n
2
n
2
2
2
2
2
y  y x  h  2x h2x 2x h
( y  y )x
y x  y h(
)(
) y x 

n
2
2h
2
2
2
2
2 y h ( y1 y )( x  h )( y  y ) x

2h
2
2
2
2
2
2
2
2y h  y x  y x  y h  y h  y x  y x
y y
(
)h
2h
2
2
1
0
0
0
0
0
1
0
1
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
1
0
1
0
1
0
0
0
0
0
0
2
1
0
0
0
0
0
0
0
0
1
36
Интеграл по методу
трапеции
Таким образом, интеграл,
вычисляемый по методу трапеции на
отрезке [a, b] равен:
y
b
b
 f(x)dx   P(x)dx 
x
a
b
a
b  a y0  yn
(
 y1  ... yn  1)  Rn
n
2
37
Rn – погрешность

где Rn – погрешность для метода трапеций,
вычисляемая по формуле:
(b  a)
Rn 
M2
12n
3
M 2  max f ( x)
[a,b]
38
Метод Симпсона
(парабол).
у2
y
у0
у1
x
x0
a
x1
x2
xn
b
39
Метод Симпсона
(парабол)
Для этого метода промежуток разбиваем на чётное
количество частей и считаем, что нам известны 3
y
точки:
у
2
y0=F(x0)
у0
y1=F(x1)
у1
y2=F(x2)
x
x0
a
x1
x2
xn
b
40
Метод Симпсона
(парабол)
y y
P( x)  y 
(x  x ) 
h
y 2 y  y

( x  x )( x  ( x  h))
2
2h
1
0
0
2
1
0
0
0
0
41
Метод Симпсона
(парабол)
Убедимся в том, что P(x2)=F(x2):
y y
P( x)  y 
( x2  x ) 
h
y 2 y  y

(
x

x
)(
x

(
x

h
))
2
2
2
2h
1
0
0
2
1
0
0
0
0
Заметим, что x2=x0+2h
P(x)=y0+2y1-2y0+y2-2y1+y0=y2
42
Метод Симпсона
(парабол)
На отрезке [x0, x0+2h] интеграл
вычисляется по формуле:
x0  2  h
x 0  2h
1
 f ( x)dx   P( x)dx  ( y  4 y  y )h
3
x
x
0
0
1
2
0
43
Интеграл для метода Симпсона на
отрезке [a, b] вычисляется по
формуле:
b

a
b f ( x)dx 
( y0 y2n  4( y1 y3... y2n 1)
3n

a
2( y2 y4... y2n  2) Rn
44
Rn – погрешность

где Rn – погрешность, вычисляемая по
формуле:
(b  a) M 3
Rn 
180n
5
M 3  max f
a,b
IV
( x)
45
46
Работа с матрицами в среде MatLab
47
48
Оператор двоеточия
49
Автоматическое создание матриц




zeros – нулевая матрица
rand – двумерное равномерное распределение
randn – двумерное нормальное распределение
ones- матрица, состоящая из единиц
50
Удаление строк и
столбцов
51
Команда format
52
Выражения
Переменные



Числа
Операторы

функции
53
Несколько специальных функций
предоставляют значения часто
используемых констант.
54
Метод наименьших квадратов
55
Кубическая интерполяция
56
Метод Симпсона
#include <iostream>
#include <sstream>
using namespace std;
double FX(double x){
return x+exp(x); }
void main(){
double a,b;
cout<<"Vvedite granic integrirovaniya (a,b): ";
cin>>a>>b;
cout<<"Znachenie integrala Simpona: "<<(ba)/6*(FX(a)+FX(b)+4*FX((a+b)/2));
system("PAUSE"); }
quad('x+exp(x)', 0, 1)
Ответ: 2.21886
Ответ: 2.2183
57
Метод прямоугольников
double f(double x){ return sin(x); }
double rectangle_integrate(double a, double b, int n,
double (*f)(double) ){
double result, h; int i;
h = (b-a)/n;
result = 0.0;
for(i=1; i <= n; i++){ result += f( a + h * (i - 0.05) );
}
result *= h;
return result;}
int main(void){
double integral;
integral=rectangle_integrate(0,2,100,f);
printf("The value of the integral is: %lf \n", integral);
system("PAUSE");
return 0; }
a=0;
b=2;
h = 0.05;
f = inline('sin(x)')
x = a:h:b;
y = f(x);
I = sum(h*y)
Ответ:1.424297
Ответ: 1.4161
58
Метод трапеций
double INTEGR(double x){
return x*exp(x)+log(x)+1;}
double trapez(double left, double right, double h){
double sum = 0; double runner;
MATLAB
x=1:0.1:5;
y=x.*exp(x)+log(x)+1;
trapz(x,y)
ans = 602.4365
for(runner = left + h; runner < right; runner += h)
sum += INTEGR(runner);
sum = (sum + 0.5*(INTEGR(left) + INTEGR(right))) * h;
return sum;}
int main(int argc, char ** argv){
char c; double a, b; double h;
printf("vvedit nizniy mezu integr : ");
scanf("%lf",&a);
printf("vvedit verhniy mezu integr : ");
scanf("%lf",&b);
printf("Enter integration step : ");
scanf("%lf",&h);
double trap = trapez(a, b, h);
printf("vidpovid za metodom trapezii %10.10f.\n", trap);
scanf("%c",&c);scanf("%c",&c);
return 0; }
Ответ: 676.9040549041.
59