Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Инфоурок / Математика / Научные работы / Интерполяция функций формулами Стирлинга

Интерполяция функций формулами Стирлинга

  • Математика

Поделитесь материалом с коллегами:




















«Интерполяция функций формулами Стирлинга»



















Яковлева Н.С.





Г.Магнитогорск,2012

Содержание

Введение 3

1. Задача 4

2. Интерполяция функций 5

2.1 Интерполяционная формула Ньютона 6

2.2 Интерполяционные формулы Гаусса 7

2.3 Интерполяционная формула Стирлинга 10

3. Разработка программного обеспечения 11

4. Текст программы 13

5. Тестирование программы 17

6. Результаты решения задачи 21

7. Построение графика функции на участке интерполирования 24

8. Заключение 25

Литература 26


ВВЕДЕНИЕ

Целью моей курсовой работы является интерполяция функции, заданной таблично, методом Стирлинга (Бесселя) с использованием программного обеспечения, разработанного на любом языке прогр ALIGN=CENTER>




hello_html_m73724a14.gif




x3

f3





2.3 Интерполяционная формула Стирлинга

Полусумма двух интерполяционных формул Гаусса даст нам:

hello_html_35888576.gif (9)

так как

hello_html_m23de8f59.gif

а

hello_html_m4654cbfc.gif.

Мы получили формулу Стирлинга. В ней используются разности четного порядка с индексом 0 и полусуммы разностей нечетного порядка с индексами hello_html_157bae0b.gif и hello_html_m17c92237.gif, как это показано в следующей таблице:

Остаточный член формулы Стирлинга

hello_html_272e323b.gif

Если последняя из использованных в формуле Стирлинга разностей имеет нечетный порядок, то остаточный член будет иметь вид

hello_html_m1754bc7f.gif

  1. Разработка программного обеспечения

С целью автоматизации расчетов при выполнении интерполяции по формуле Стирлинга разработана программа на языке Паскаль, в среде программирования Turbo Pascal 7.0.

Программа после запуска запрашивает у пользователя ввод:

  • координаты центрального узла (x0);

  • шага таблицы (h);

  • количества точек в исходной таблице до и после центрального узла (n; общее число точек в таблице, таким образом, равно 2·n + 1).

После ввода этих данных программа рассчитывает координаты абсцисс точек таблицы и запрашивает у пользователя значения функции в этих точках. Когда исходные данных полностью определены, программа вычисляет коэффициенты hello_html_12aa6741.gif из (9) для i от 1 до 2·n; эти коэффициенты позволяют выполнять вычисления по формуле Стирлинга при произвольном значении аргумента. Далее программа предлагает пользователю вводить необходимые значения x, а для выхода из программы ввести в качестве x значение координаты центрального узла.

Блок-схема программы показана на рис. 1.

hello_html_m6dc0d0c7.gif

Рис. 1. Схема алгоритма (начало)

hello_html_3a04c614.gif

Рис. 1. Схема алгоритма (продолжение)

hello_html_m1be850ea.gif

Рис. 1. Схема алгоритма (окончание)

  1. Текст программы

program Stirling;{интерполяция табличных данных по формуле Стирлинга}

const NN = 50;{предельное число отсчетов от центрального узла вперед и назад (общее число узлов 2 * NN + 1)}

type ar = array [-NN..NN] of double;

var x, f, {исходные табличные данные}

df: ar; {конечные разности}

pf: array [1..2*NN] of double; {коэффициенты интерполяционного многочлена}

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

h, t, p, fc, t2: double;

ct: array [0..1] of double;

BEGIN

writeln('Интерполяция по формуле Стирлинга');

write('Введите координату центрального узла (x0): ');

readln(x[0]);

write('Введите шаг таблицы (h): ');

readln(h);

write('Введите кол-во узлов по каждую сторону ', 'от центрального (n): ');

readln(n);

dn := 2 * n; {сохраняем 2*n, чтобы не вычислять

это значение каждый раз}

writeln('Введите исходные данные:');

for i := -n to n do

begin

x[i] := x[0] + i * h;

write('f(', x[i]:0:2, ') = ');

readln(f[i]);

df[i] := f[i]; {заполняем массив конечных разностей значениями функции}

end;

for i := 1 to dn d {расчет коэффициентов

интерполяционного многочлена}

begin

for k := -n to n - i do

df[k] := df[k + 1] - df[k]; {вычисление

конечных разностей i-го порядка}

if odd(i) then

begin

j := (dn + 1 - i) div 2 - n;

pf[i] := (df[j - 1] + df[j]) / 2; {полусумма}

end

else pf[i] := df[(dn - i) div 2 - n];

end;

writeln('Вводите x для интерполирования');

writeln('(для выхода из программы введите x = ',

x[0]:0:2, ')');

repeat

write('x = ');

readln(t);

t := (t - x[0]) / h;

t2 := sqr(t); {сохраняем, чтобы не вычислять

каждый раз}

p := f[0]; {первый член интерполяционной формулы}

fc := 1; {для вычисления факториала}

ct[1] := t; {начальное значение аргумента для нечетных членов интерполяционной формулы}

ct[0] := t2; {начальное значение аргумента для четных членов интерполяционной формулы}

for i := 1 to dn do {вычисления по формуле}

begin

fc := fc * i; {факториал}

k := i mod 2; {k = 0 для четных членов, и 1 - для нечетных}

if i > 2 then{умножать начальные значения аргументов на (t^2 - m^2) нужно только для членов после второго}

ct[k] := ct[k] * (t2 - sqr((i - 1) div 2));

p := p + ct[k] * pf[i] / fc;

end;

writeln('f(', x[0] + t * h:0:2, ') = ', p:0:8);

until t = 0;

END.

  1. Тестирование программы

В [3, с. 128] приведены результаты расчета значения sin(14º) по известным значениям синуса при углах 9º, 12º, 15º, 18º, 21º. Выполним тот же расчет с помощью разработанной программы:

Интерполяция по формуле Стирлинга

Введите координату центрального узла (x0): 15

Введите шаг таблицы (h): 3

Введите кол-во узлов по каждую сторону от центрального (n): 2

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

f(9.00) = 0.156434

f(12.00) = 0.207912

f(15.00) = 0.258819

f(18.00) = 0.309017

f(21.00) = 0.358368

Вводите x для интерполирования

(для выхода из программы введите x = 15.00)

x = 14

f(14.00) = 0.24192196

x = 15

f(15.00) = 0.25881900

Полученные результаты согласуются с результатами, приведенными в [1], с точностью до 6 знаков после запятой — именно с такой точностью расчет проделан в первоисточнике, причем указано, что все найденные знаки в результате — верные.

  1. Результаты решения задачи

После того, как была установлена корректность выдаваемых программой результатов расчетов, можно приступить к решению поставленной задачи. Ниже представлен протокол работы программы при вычислении значений функции на интервале интерполирования с шагом 2 (для дополнительной проверки выполняется и расчет в узлах интерполяции — при этом должны получаться в точности табличные значения):

Интерполяция по формуле Стирлинга

Введите координату центрального узла (x0): 40

Введите шаг таблицы (h): 20

Введите кол-во узлов по каждую сторону от центрального (n): 1

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

f(20.00) = 1002.3

f(40.00) = 541.7

f(60.00) = 116.87

Вводите x для интерполирования

(для выхода из программы введите x = 40.00)

x = 20

f(20.00) = 1002.30000000

x = 22

f(22.00) = 954.63035000

x = 24

f(24.00) = 907.31840000

x = 26

f(26.00) = 860.36415000

x = 28

f(28.00) = 813.76760000

x = 30

f(30.00) = 767.52875000

x = 32

f(32.00) = 721.64760000

x = 34

f(34.00) = 676.12415000

x = 36

f(36.00) = 630.95840000

x = 38

f(38.00) = 586.15035000

x = 42

f(42.00) = 497.60735000

x = 44

f(44.00) = 453.87240000

x = 46

f(46.00) = 410.49515000

x = 48

f(48.00) = 367.47560000

x = 50

f(50.00) = 324.81375000

x = 52

f(52.00) = 282.50960000

x = 54

f(54.00) = 240.56315000

x = 56

f(56.00) = 198.97440000

x = 58

f(58.00) = 157.74335000

x = 60

f(60.00) = 116.87000000

x = 40

f(40.00) = 541.70000000

Как показывают результаты расчетов, в узлах интерполяции программа выдает значения, в точности равные табличным — это еще раз позволяет убедиться в правильности ее работы.

  1. Построение графика функции на участке интерполирования

По данным, полученным с помощью программы, построим средствами табличного процессора Excel график функции на участке интерполирования. График представлен на рис. 2.

hello_html_m2eced09f.gif

Рис. 2. График функции на участке интерполирования

ЗАКЛЮЧЕНИЕ

В своей работе я рассмотрела интерполяционную формулу Стирлинга. Для полученной формулы составила программу на языке Паскаль, в среде программирования Turbo Pascal 7.0. Для проверки корректности выводимых ею результатов в [3, с. 128] взяла уже известные значения при углах 9º, 12º, 15º, 18º, 21º sin(14º). Выполнив те же расчеты с помощью разработанной программы, установила, что она работает исправно. После того, как была установлена корректность выдаваемых программой результатов, я приступила к решению поставленной задачи. Итогом моей курсовой стал график заданной мною функции. По данным, полученным с помощью программы, построили посредствами табличного процессора Excel график функции на участке интерполирования.

Литература

  1. Амосов А. А., Дубинский Ю. А., Копченова Н. В. Вычислительные методы для инженеров: Учебное пособие. — М.: Высшая школа, 1994. — 544 с.

  2. Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. — М.: Наука, 2001. — 630 с.

  3. Березин И. С., Жидков Н. П. Методы вычислений. Т. 1. — М.: Гос. изд-во физ.-мат. литературы, 1962. — 464 с.

  4. Демидович Б. П., Марон И. А. Основы вычислительной математики. — М.: Издательство ФМЛ, 1960. — 659 с.

  5. Демидович Б. П., Марон И. А., Шувалова Э. З. Численные методы анализа. — М.: Издательство ФМЛ, 1963. — 400 с.

  6. Епанешников А. М., Епанешников В. А. Программирование в среде Turbo Pascal 7.0. — М.: “ДИАЛОГ-МИФИ”, 1993. — 288 с.

  7. Охлопков Н. М. Численные методы и вычислительные алгоритмы. Часть 1: Учебное пособие. — Якутск: Издательство ЯГУ, 1994. — 108 с.

  8. Фаронов В. В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие — М.: Нолидж, 1997. — 616 с.


Автор
Дата добавления 14.10.2016
Раздел Математика
Подраздел Научные работы
Просмотров108
Номер материала ДБ-260983
Получить свидетельство о публикации
Похожие материалы

Включите уведомления прямо сейчас и мы сразу сообщим Вам о важных новостях. Не волнуйтесь, мы будем отправлять только самое главное.
Специальное предложение
Вверх