Задание 1. Разработайте схемы алгоритмов интерполирования функций по методам Лагранжа, Ньютона, наименьших квадратов



 

Задание 2. Произведите интерполирование и аппроксимацию табличных функций, приведенных в таблице 3.1 (в соответствии со своим вариантом), на отрезке [a; b] с шагом h средствами MS Excel и MathCad. Средствами Delphi создайте приложение, решающее аналогичную задачу.

 

Произведите интерполирование и аппроксимацию табличных функций на отрезке [a; b] с шагом h средствами MS Excel. По результатам выполнения постройте графики функций.

 

Пример выполнения задания

 

Для функции, заданной таблицей, постройте интерполяционные многочлены Лагранжа и Ньютона. Используя полученные многочлены, вычислите приближенное значение функции на отрезке [–3,25; –1] с шагом 0,25 (табл. 3.2).

 

Таблица 3.2 – Данные для вычисления приближенного значения функции

 

x

–4

–3

–2

–1

y

–3

–1

0

7

2.1.1 Введите исходные данные и вычислите многочлен Лагранжа для значений указанного отрезка (рис. 3.1). Для этого:

а) введите в ячейку В16 формулу

 

=$B$4*((A16–$A$5)*(A16–$A$6)*(A16–$A$7))/(($A$4–$A$5)*($A$4–$A$6)*($A$4–$A$7))+$B$5*((A16–$A$4)*(A16–$A$6)*(A16–$A$7))/(($A$5–$A$4)*($A$5–$A$6)*($A$5–$A$7))+$B$6*((A16–$A$4)*(A16–$A$5)*(A16–$A$7))/(($A$6–$A$4)*($A$6–$A$5)*($A$6–$A$7))+$B$7*((A16–$A$4)*(A16–$A$5)*(A16–$A$6))/(($A$7–$A$4)*($A$7–$A$5)*($A$7–$A$6));

 

б) далее копируйте ее на блок В17: В25;

 

 

Рисунок 3.1 – Вычисление многочлена Лагранжа в среде Excel

 

в) таким образом, в точке x0= –3,25 приближенное значение функции, вычисленное с помощью многочлена Лагранжа равно f(x)= –1,13281;

г) по полученным данным стройте точечные графики функций (рис. 3.2).

 

Рисунок 3.2 – Графики исходной и найденной по методу Лагранжа функций

 

 

2.1.2. Для построения интерполяционного многочлена Ньютона:

а) скопируйте исходные данные на новый лист Exсel и сделайте пояснительные записки;

б) введите разделенные разности первого порядка в ячейки С5:С7 (см. формулы 3.5), разделенные разности второго и третьего порядков (см. формулы 3.6) соответственно в ячейки D5:D6 и E5 (рис. 3.3);

 

 

Рисунок 3.3 – Вид формул для вычисления разделенных разностей в Excel

 

в) далее получите значения х на заданном интервале, введя следующие формулы в ячейки А16 и А17 (рис. 3.4):

 

 

Рисунок 3.4 – Вид формул для вычисления значений х на заданном интервале

 

д) формулу из ячейки А17 скопируйте на блок А18: А25;

е) в ячейку В16 введите формулу интерполяционного многочлена Ньютона:
=$B$5+(A16–$A$5)*$C$5+(A16–$A$5)*(A16–$A$6)*$D$5+(A16-$A$5)*(A16–$A$6)*(A16–$A$7)*$E$5;

ж) скопируйте ее на блок В17:В25. В результате получите числовые значения (рис. 3.5):

 

 

Рисунок 3.5 – Вычисление интерполяционного многочлена Ньютона в Excel

 

з) по полученным данным постройте точечные графики  функций (рис. 3.6):

 

Рисунок 3.6 – Вид построенных графиков функций

 

и) таким образом, в точке x0= –3,25 приближенное значение функции, вычисленное с помощью многочлена Ньютона равно f(x)= –1,1328125.

2.1.3. Для аппроксимации функции методом наименьших квадратов:

а) скопируйте исходные данные на новый лист Excel;

б) постройте по исходным данным график функции и определите, на какую из стандартных функций он внешне наиболее похож. В рассматриваемом примере график напоминает ветвь параболы, а это значит, что аппроксимационный многочлен будет иметь следующий вид: Рn = a0 + a1x + a2x2 . Следовательно, необходимо найти значения : а0, а1, а2. Для этого проведите вычисления согласно методу наименьших квадратов (рис. 3.7);

 

 

Рисунок 3.7 – Аппроксимация функции методом наименьших квадратов

 

в) после полученных преобразований создайте систему из трех уравнений, согласно методу наименьших квадратов и решите ее любым известным способом (см. лаб. работу 1). В примере используется метод Гаусса;

г) получив корни уравнения, определите вид многочлена и найдите значения у для заданного интервала х (рис. 3.8).

 

 

Рисунок 3.8 – Метод наименьших квадратов для вычисления функции на заданном интервале

 

д) таким образом, в точке x0= –3,25 согласно методу наименьших квадратов приближенное значение функции равно f(x)= –1,696875;

е) постройте точечные графики полученных значений функции методом наименьших квадратов и исходных данных (рис. 3.9).

 

Рисунок 3.9 – Вид построенных графиков функций

 

Произведите интерполирование и аппроксимацию табличных функций на отрезке [a; b] с шагом h средствами MathCad.

2.2.1. В MathCad можно найти значения функции у в промежуточных точках с помощью полинома некоторой степени. Для этого используются следующие функции:

regress(vx,vy,k) — возвращает вектор, использующийся функцией interp для нахождения полинома степени k, который наилучшим образом приближает значения x и y данных, хранящихся в векторах vx, vy.

interp(vs,vx,vy,x) — возвращает приближенное значение y, соответствующее значению x. Где vs — вектор, получаемый с помощью regress.

 

Пример выполнения задания

Решите рассматриваемую выше задачу методом наименьших квадратов, а затем с помощью встроенных функций MathCad. Для этого:

а) введите исходные данные:

                  

 

б) так как график исходных точек представляет собой ветвь параболы, то достаточно определить аппроксимирующий полином 2-ой степени. Для этого вычислите коэффициенты системы уравнений:

 

n := 3  i := 0 .. n    t0 := n+1

 

         
       

 

в) определите матрицу коэффициентов и матрицу свободных членов системы:

  

 

г) найдите коэффициенты полинома, решив систему с помощью функции lsolve(..):

 

д) определите вид полинома:

 

е)  укажите количество точек n, значения аргумента хi и его шаг изменения h, для построения графиков функций:

 

ж) во всех точках хi для сравнения вычислите значения функции с помощью встроенных средств аппроксимации:

 

з) постройте графики в соответствии с рисунком 3.10

 

Рисунок 3.10 – Вид графиков в MathCad

 

 

2.2.2. В MathCad имеются средства для сплайновой интерполяции.

Интерполирование производится с помощью функции interp(vs,vx,vy,x), которая возвращает вектор значений функции y в интересующих точках х.

Здесь и далее vx — вектор исходных значений аргумента, vy — вектор исходных значений функции, vs — вектор вторых производных, возвращаемых одной из функций cspline(vx,vy), pspline(vx,vy), lspline(vx,vy), которые возвращают вектор vs при использовании кубических, параболических и линейных сплайнов соответственно.

Для интерполирования линиями можно воспользоваться функцией linterp(vx, vy, x).

 

Пример выполнения задания

Решите рассматриваемый пример (условие см. стр. 45), используя средства MathCad для сплайновой интерполяции. Для этого:

а) введите исходные данные:

  

 

б) определите количество точек n, значения аргумента х и его шаг изменения h, для построения графиков функций:

 

 

 

в) во всех точках хi вычислите значения функции с помощью встроенных средств для сплайновой интерполяции:

 

г) постройте графики и выведите значения у в соответствии с рисунком 3.11;

 

 

Рисунок 3.11 – Вид графиков интерполирования функций средствами MathCad

 

2.3. Произведите интерполирование табличных функций методом Лагранжа и Ньютона на отрезке [a, b] с шагом h средствами Delphi.

2.3.1 Расположите на форме основные компоненты (рис. 3.12) согласно рассматриваемому примеру.

Рисунок 3.12 – Вид формы в среде Delphi

 

2.3.2. Создайте обработчик события нажатием кнопки «Исходные данные», в результате чего в таблице должны появиться исходные числовые данные и на координатной плоскости нарисуется график по данным точкам:

 

procedure TForm1.Button1Click(Sender: TObject);

var x,y:array[0...3] of real;

i:integer;

begin

stringgrid1.Cells[0,0] := 'X'; stringgrid1.Cells[1,0] := 'Y';

stringgrid1.Cells[0,1] := '–4'; stringgrid1.Cells[1,1] := '–3';

stringgrid1.Cells[0,2] := '–3'; stringgrid1.Cells[1,2] := '–1';

stringgrid1.Cells[0,3] := '–2'; stringgrid1.Cells[1,3] := '0';

stringgrid1.Cells[0,4] := '–1'; stringgrid1.Cells[1,4] := '7';

for i := 0 to 3 do begin

x[i] := strtofloat(stringgrid1.Cells[0,i+1]);

y[i] := strtofloat(stringgrid1.Cells[1,i+1]);

 Series1.AddXY(x[i],y[i],'',clTeeColor)

  end;

end;

 

2.3.3. Создайте процедуру-обработчик нажатием кнопки «Лагранж»:

 

procedure TForm1.Button2Click(Sender: TObject);

var x,y: array[0..3] of real;

i,n,k,j: integer;

P,xn,xk,h,a:real;

begin

 xn := strtofloat(edit1.text);

 xk := strtofloat(edit2.text);

 h := strtofloat(edit3.text);

 for i := 0 to 3 do begin

 x[i] := strtofloat(stringgrid1.Cells[0,i+1]);

 y[i] := strtofloat(stringgrid1.Cells[1,i+1]);

end;

k := 0;

while xn<=xk do begin

P := 0;

for i := 0 to 3 do begin

a := 1;

for j := 0 to 3 do

if i<>j then a := a* (xn – x[j])/(x[i] – x[j]);

P := P+a*y[i];

end;

k := k+1;

stringgrid2.RowCount := k+1;

stringgrid2.Cells[0,k] := floattostr(xn);

stringgrid2.Cells[1,k] := floattostrF(P,ffFixed,6,2);

Series2.AddXY(xn,P,'',clTeeColor);

xn := xn+h;

 end;

 end;

 

2.3.4. Создайте алгоритм вычисления промежуточных значений х на интервале [–3,5; –1] методом Ньютона:

 

procedure TForm1.Button3Click(Sender: TObject);

  var x,y: array[0...4] of real;

i,n,k,j,k1: integer;

P,xn,xk,h,a,s1,p1,s,h1:real;

label l;

begin

 xn := strtofloat(edit1.text);

 xk := strtofloat(edit2.text);

 h := strtofloat(edit3.text);

k := 0;

 for i := 0 to 3 do begin

 x[i] := strtofloat(stringgrid1.Cells[0,i+1]);

 y[i] := strtofloat(stringgrid1.Cells[1,i+1]);

end;

while xn<=xk do begin

 s := y[0];

 for i := 1 to 3 do begin

 a := 1; p := 1; s1 := 0;

 for j := 0 to i do begin

 if i=j then goto l;

 p := p*(xn–x[j]);

 l: H1 := 1;

 for k1 := 0 to i do

 begin

 if j<>k1 then H1 := H1*(x[j]–x[k1]);

 end;

 H1 := y[j]/H1; s1 := s1+H1;

 end;

 p := p*s1;

 s := s+p;

 end;

 k := k+1;

stringgrid3.RowCount := k+1;

stringgrid3.Cells[0,k] := floattostr(xn);

stringgrid3.Cells[1,k] := floattostrF(s,ffFixed,6,2);

Series3.AddXY(xn,S,'',clTeeColor);

xn := xn+h;

end;

end;

 

2.3.5. Для кнопок «Очистить» и «Выход» создайте процедуры — обработчиков событий самостоятельно.

2.3.6. Запустите проект и протестируйте программу. Полученные результаты вычисления (рис. 3.13).

 

 

Рисунок 3.13 – Результаты решения задачи в среде Delphi

 

Задание 3.  Произведите сравнительный анализ полученных результатов. Вычислите среднее квадратичное отклонение метода наименьших квадратов в средах Excel и MathCad. Сделайте вывод.

Таблица 3.1 – Варианты заданий

Вариант Значение аргумента x Значение функции y Пределы изменения аргумента [a; b] Шаг интерполирования h
1 –1,06 –0,837 –0,684 –0,315 –0,117 –0,0 0,115 0,5 1,22 0,854 0,513 0,271 0,217 0,198 0,218 0,277 [–0,8; 0,4] 0,2
2 –2,15 –1,83 –1,62 –1,45 –1,01 –0,72 –0,48 0,0 –2,23 –2,65 –3,1 –3,54 –4,26 –4,38 –4,52 –4,27 [–1,95; 0,1] 0,3
3 –0,21 –0,143 –0,099 –0,032 0,114 0,182 0,257 0,38 –12,64 –11,05 –10,25 –9,32 –9,25 –10,0 –11,48 –14,4 [–0,2; 0,28] 0,08
4 0,215 0,441 0,638 0,865 1,05 1,30 1,55 1,82 5,82 4,63 4,10 3,34 3,0 3,29 4,32 5,72 [0,4; 1,6] 0,2
5 –1,0 –0,96 –0,86 –0,79 0,22 0,50 0,93 1,10 –1,00 –0,151 0,894 0,986 0,895 0,50 –0,306 –0,51 [–0,98; 1,02] 0,35
6 0,50 0,75 1,00 1,25 1,50 1,75 2,00 2,25 0,1915 0,2734 0,3413 0,3944 0,4332 0,4599 0,4773 0,4878 [0,625; 2,126] 0,25
7 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 –0,24 –0,24 –0,16 0,0 0,24 0,56 0,96 1,44 [1,5; 2,7] 0,2
8 0,43 0,48 0,55 0,62 0,70 0,75 0,78 0,81 1,64 1,73 1,88 2,03 2,23 2,36 2,41 2,78 [0,5; 0,6] 0,02
9 0 15 30 45 60 75 90 105 800 718 665 621 586 556 532 510 [68; 72] 0,5
10 –2,0 3,0 4,5 12,0 15,0 18,5 20,0 23,0 –17,0 –3,0 1,2 1,8 3,0 4,5 7,0 9,1 [9,8, 11] 0,2
11 –2,3 0,0 1,1 4,8 7,3 9,2 11,4 13,0 –12,5 8,6 13,4 15,1 21,4 24,2 28,3 32,1 [1,5, 3] 0,5
12 2,34 5,16 7,03 8,42 9,61 10,12 11,35 12,12 15,16 25,03 32,18 37,11 44,82 51,62 50,13 73,16 [3; 6] 0,5

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

 

1. Аппроксимация и интерполирование функций. Постановка задачи.

2. В чем особенность аппроксимации?

3. Опишите особенности метода наименьших квадратов в случае линейной и квадратичной зависимости.

4. Какой из методов полиномиальной зависимости дает более точный результат в вашем варианте лабораторной работы?

5. Интерполяционный многочлен Лагранжа, его преимущества и недостатки.

6. Интерполяционный многочлен Ньютона, его разновидности.

7. Оценка погрешностей методов.


Тема 4
Численное интегрирование

 

Постановка задачи.Значение определенного интеграла вычисляется по формуле Ньютона-Лейбница, если удается выразить первообразную формулу через элементарные функции:

,            (4.1)

где F(x) — первообразная.

Функция F(x) на отрезке [a; b] называется первообразной функцией f(x), если на всем интервале справедливо равенство F'(x) = f(x).

Однако для большого числа функций первообразная не выражаются через элементарные функции, либо ее сложно определить. Также подынтегральная функция f(x) может быть задана графически или в табличной форме. В таких случаях для вычисления определенного интеграла используют приближенные численные методы.

Суть численных методов вычисления определенного интеграла состоит в замене подынтегральной функции f(x) вспомогательной функцией, интеграл от которой легко вычисляется в элементарных функциях. Наиболее часто подынтегральную функцию f(x) заменяют некоторым интерполяционным многочленом. Это приводит к использованию квадратурных формул:

,        (4.2)

где хi — узлы интерполяции;

 R — остаточный член (погрешность метода).

В случае отбрасывания R возникает погрешность усечения в процессе вычисления, появляется погрешность округления.

С геометрической точки зрения значение определенного интеграла представляет собой площадь, ограниченную графиком функции y = f(x), осью абсцисс и прямыми x = a, x = b.

Отрезок интегрирования разбивают на n интервалов хi, хi+1, где i = 0,1, ..., n. Приближенно определяются значения площадей, соответствующих каждому отрезку. Их сумма даст приблизительное значение интеграла. В зависимости от способа разбиения отрезка узлами интерполяции хi различают два подхода к построению квадратурных формул:

1. Место положения и длина интервалов разбиения выбираются заранее в начале расчета. В случае равноотстоящих точек узлов интерполирования: . В таком случае квадратурные формулы называются формулами Ньютона-Котеса. Они различаются степенями используемых итерационных многочленов. Широкое применение находят формулы трапеции и Симпсона.

2. Место положения и длина интервалов подбираются таким образом, чтобы достичь наибольшей точности (формула Гаусса).

Формула трапеций.Отрезок интегрирования [a;b] разбивают на n равных интервалов длиной . В пределах каждого отрезка [хi; хi+1] функция f(x) заменяется интерполяционным многочленом Лагранжа первой степени. Такая замена соответствует замене кривой на секущую (рис. 4.1). Значение

.       (4.3)

 

Рисунок 4.1 – Геометрический смысл метода трапеций

 

Суммирование значений интеграла по всем n участкам разбиения дает общую площадь:

.      (4.4)

Если функция f(x) на отрезке [a;b] непрерывна и имеет вторую производную, то оценка погрешности усечения находится по формуле:

,  (4.5)

где h — шаг интегрирования;

М — коэффициент, который получается из набора вторых производных для отрезка [a; b].

Очевидно, что формула трапеции (4.4) даст точное значение интеграла для линейной подынтегральной функции f(x).

Формула Симпсона.При замене подынтегральной функции интерполяционным многочленом второй степени и при четном числе n интервалов разбиения квадратурная формула преобразуется к виду:

                            (4.6)

— формула Симпсона либо формула параболы.

Значение функции f(x) в нечетных точках разбиения х1, х3 и т. д. входят в формулу с коэффициентом 4. В четных точках х2, х4и т. д. — с коэффициентом 2. В граничных точках х0 и хn — с коэффициентом 1.

Геометрический смысл формулы Симпсона.

Через три последовательные ординаты разбиения проводят параболу и определяют площадь полученной фигуры. Сумму всех фигур, построенных таким образом, дает примерное значение интеграла (рис. 4.2).

Рисунок 4.2 – Геометрический смысл метода Симпсона

 

При наличии на отрезке [a;b] непрерывной четвертой производной подынтегральной функции оценка усечения формулы Симпсона следующая:

 (4.7)

 

Формула парабол является точной для полиномов третьей степени включительно, так как для них четвертая производная равна 0. Из-за сложности, а часто и невозможности вычисления четвертой производной, используют формулу Рунге:

,                                 (4.8)

где Sn — значение интеграла при разбиении отрезка интегрирования на n участков (n — четное);

S2n — значение интеграла при разбиении отрезка интегрирования на 2n участков.

 


Дата добавления: 2018-04-05; просмотров: 1122; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!