Учебное пособие 800203
.pdfи для интерполирования назад (начальной точкой выбрана xn )
Pn(x)= f(xn )+ f(xn-1,xn )(x-xn )+f(xn-2,xn-1,xn )(x-xn )(x-xn-1)+ (7.5) +...+ f(x0,x1,...,xn )(x-xn )(x-xn-1)...(x-x1).
Нумерация узлов при проведении расчетов по формуле Ньютона не имеет значения. Это позволяет легко добавлять новые узлы. Например, добавление одного узла xn+1 приводит к появлению в интерполяционном многочлене интерполирования вперед слагаемого вида
f(x0,x1,...,xn, xn+!)(x-x0)(x-x1)...(x-xn-1)(x-xn).
Рассмотрим теперь один из способов расчета коэффициентов многочлена (7.4) в программе. Заметим, что коэффициентами многочлена являются одно из значений функции в начальном узле f x0 , одна из разделенных разностей первого
порядка f x0,x1 , одна из разделенных разностей второго по-
рядка f x0,x1,x2 и т.д. Следовательно, остальные значения функции и разделенных разностей являются промежуточными данными. Пусть значения xk и fk расположены в одномер-
ных массивах из n элементов
x,y : array [0..n-1] of real;
Для хранения разделенных разностей первого порядка можно использовать элементы массива y[1]..y[n-1], так как хранимые в них значения используются только при вычислении разделенных разностей первого порядка и не являются коэффициентами многочлена Ньютона
For k:=1 to n-1 do y[k]:=(y[k]-y[k-1])/(x[k]-x[k-1]);
Разделенные разности второго порядка вычисляются на основе разделенных разностей первого порядка и хранятся в элементах массива y[2]..y[n-1]
120
For k:=2 to n-1 do y[k]:=(y[k]-y[k-1])/(x[k]-x[k-2]);
Разделенные разности порядка j вычисляются на основе разделенных разностей первого порядка j-1 и хранятся в элементах массива y[j]..y[n-1]
For k:=j to n-1 do y[k]:=(y[k]-y[k-1])/(x[k]-x[k-j]);
В результате массив y будет содержать коэффициенты интерполяционного многочлена Ньютона, а все промежуточные данные будут утеряны.
Вычисление значений интерполяционного многочлена при конкретных аргументах x наиболее экономично проводить по схеме Горнера, получаемой путем последовательного вынесения за скобки множителей (x - xi)
Pn(x) = f (x0)+(x- x0)[ f (x0,x1)+(x- x1)[ f (x0,x1,x2)+...+ +(x- xn-1) f (x0,x1,...,xn)]..].
Практические задания
1.На основе функции f x , заданной в Вашем варианте сформируйте узлы интерполяции xk a,b , fk f xk
2.Напишите программу построения интерполяционного многочлена Лагранжа.
3.Напишите программу построения интерполяционного многочлена Ньютона.
4.Постройте графики исходной функции f x и двух интерполяционных многочленов.
5.Смоделируйте погрешность задания значений узлов интерполяции добавлением к значению функции случайных чисел. Исследуете влияние погрешности на качество интерполяции.
121
Варианты заданий
№ |
f(x) |
[a,b] |
№ |
f(x) |
[a,b] |
||
|
|
|
|
|
|
|
|
1. |
e–x |
[-1,1] |
7. |
ln x |
[5,7] |
||
2. |
sin x |
[- , ] |
8. |
arcsin x |
[-0.5,0.5] |
||
|
|
|
|
|
|
|
|
3. |
cos x |
[0,2 ] |
9. |
arctg x |
[-1,2] |
||
|
|
|
|
|
|
|
|
4. |
ex |
[- /2, /2] |
10. |
x3 |
[-2,2] |
||
|
|
|
|
|
|
|
|
5. |
(cos x)2 |
[0.3, 2 /3] |
11. |
1/x |
[-3.-1] |
||
|
|
|
|
|
|
|
|
6. |
1/x2 |
[0.5,2] |
12. |
|
|
|
[0,9] |
|
x |
||||||
|
|
|
|
|
|
|
|
122
ЗАКЛЮЧЕНИЕ
В учебном пособии изложены вопросы программирования на языке Паскаль, изучаемые в курсе «Информатика» студентами радиотехнических специальностей вузов.
Материал представлен в виде лабораторных работ. В первых четырех лабораторных работах рассмотрены общие вопросы программирования на языке Паскаль. Описаны принципы работы с интегрированной средой Free Pascal, приведено краткое описание языка, работы с массивами, программирования подпрограмм. Рассмотрены принципы хранения и обработки текстовых данных, программирования работы с устройствами персонального компьютера. Приведены рекомендации по построению пользовательского интерфейса.
Последние три лабораторные работы посвящены численным методам. Рассмотрены методы численного решения уравнений, интегрирования и интерполяции.
Материал учебного пособия может быть использован при обучении программированию на языке Паскаль, а практические задания к лабораторным работам — при изучении других языков программирования.
123
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.Абрамов В.Г. Введение в язык Паскаль: учеб пособие / В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова. М.: Наука. Гл. ред. физ.-мат. лит., 1988.
2.Марченко А.И. Программирование в среде Turbo Pascal / А.И. Марченко, Л.А. Марченко. 2-е изд. М.: Бином Универсал, 1997.
3.Епанешников А.Н. Программирование в среде
Turbo Pascal 7.0 / А.Н. Епанешников, В.Н. Епанешников.
3изд., стер. М.: Диалог-МИФИ, 1995.
4.Фаронов В.В. Turbo Pascal 7.0: практика программирования / В.В. Фаронов. 7-е изд., перераб. М.: Нолидж, 2001.
5.Немнюгин С.А. Turbo Pascal: учебник / С.А. Немнюгтн. СПб.: Питер, 2000.
6.Немнюгин С. А. Turbo Pascal: Практикум / С.А. Немнюгин. СПб.: Питер, 2000.
7.Меняев М.Ф. Информатика и основы программирования: учеб. пособие / М.Ф. Меняев. М.: Омега-Л, 2005.
124
ОГЛАВЛЕНИЕ
Введение………………………………………………….. 3 Лабораторная работа № 1. Программирование основных алгоритмических конструкций на языке Паскаль……….. 4 Лабораторная работа № 2. Работа с массивами………….. 29 Лабораторная работа № 3. Работа с текстом, файлами. Процедуры и функции……………………………………... 52 Лабораторная работа № 4. Работа с устройствами………. 72 Лабораторная работа № 5. Приближенной решение нелинейных уравнений……………………… 104 Лабораторная работа № 6. Методы численного интегрирования……………………………………………………… 113 Лабораторная работа № 7. Интерполирование алгебраическими многочленами…………………………………….. 117 Заключение…………………………………………………. 123 Библиографический список……………………………….. 124
125
Учебное издание
Корчагин Юрий Эдуардович Слинчук Светлана Александровна
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ:
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
В авторской редакции
Подписано к изданию 15.07.2016. Объем данных 950 Кб.
ФГБОУ ВО «Воронежский государственный технический университет»
394026 Воронеж, Московский просп., 14
126