Автор: Пользователь скрыл имя, 22 Мая 2013 в 10:56, курсовая работа
В вычислительной математике существенную роль играет интерполяция функций, т.е. построение по заданной функции другой (как правило, более простой), значения которой совпадают со значениями заданной функции в некотором числе точек. Причем интерполяция имеет как практическое, так и теоретическое значение. На практике часто возникает задача о восстановлении непрерывной функции по ее табличным значениям, например полученным в ходе некоторого эксперимента.
Введение…………………………………………………..…………….…..…..…
Глава 1. Постановка задачи интерполяции
1.1 Постановка задачи………………………………..………………………
1.2 Интерполяция по Ньютону ……………………….…………………..……
Глава 2. Реализация интерполирования функций с помощью полиномов Ньютона
2.1 Программирование функции формулы Ньютона ………………………
2.2 Разработка программы по схеме алгоритма …………………………....
2.3 Инструкция пользования программой…………………………………
2.4 Исходные данные и результат решения контрольного примера……..
Заключение………….…….……………………………………..…………..…..
Список использованных источников…………..…………..…………..………
2.2 Разработка программы по схеме алгоритма
При разработке программы
в данной работе используются следующие
операторы и стандартные
Program - Заголовок программы
Uses – раздел подключения модулей
Begin – открывающая логическая скобка
End – закрывающая логическая скобка
:= - оператор присваивания
Crt - (Cathod ray tube - электронно-лучевая трубка) один из наиболее часто используемых модулей. Он содержит процедуры обслуживания процессов вывода информации на экран, ввода с клавиатуры, а также процедуры и функции вывода звуковых сигналов, работы с окнами на экране и вывода цветных текстовых строк на экран.
Graph – графический модуль для вывода базовых графических элементов, таких как точки, отрезки прямых линий, дуги и целые окружности и других графических элементов, называемых графическими примитивами
Var – раздел описания переменных
Writeln, Write – операторы вывода информации
Readln, Read – операторы ввода информации
If <условие> then <оператор>– оператор условного перехода
For <параметр>:=<нач.знач.> to <конечн.знач.> do <оператор> – оператор цикла с параметром
Repeat <оператор> until <условие> - оператор цикла с постусловием
Clrscr – очистка экрана
Initgraph – процедура инициализации графического режима
Closegraph – процедура закрытия графического режима
Line (x1, y1, x2, y2) – соединение двух точек отрезком
Putpixel (x, y, c) – построение точки (x, y) цветом с
Readkey – оператор считывание кода клавиш
Outtextxy (x, y, st) – вывод строки st, начиная с точки (x,y)
Getmaxx – результатом этой функции будет max значение x в данном видеорежиме
Goto – перейти к
+ - арифметическая операция сложения
- - арифметическая операция вычитания
* - арифметическая операция умножения
/ - арифметическая операция деления
Описание переменных и констант используемых в алгоритме
n – количество узлов в таблице, не считая начальную точку ;
i, j – счётчики;
- значения узлов записанных в одномерные массивы;
D – переменная, используемая для нахождения значения полинома Ньютона в этой точке;
L – переменная значения полинома Ньютона
k, step – константы используемые для построения графика полинома;
u – переменная шага деления графика;
Для описания алгоритма в данной курсовой работе были пронумерованы символы.
2.3 Инструкция пользования программой
Для запуска программы необходимо дважды щелкнуть на ярлыке с именем Newton.exe. После этого на экран будет выведен титульный лист. Чтобы продолжить надо нажать клавишу Enter.
Следующим шагом в окне программы будет показана строка с текстом «Показать пояснения к программе (1/0)?», чтобы увидеть их следует нажать 1 и подтвердить ввод нажатием клавиши Enter. Чтобы продолжить надо нажать клавишу Enter. Сразу после этого в диалоговом окне появится строка «Введите количество уpлов n (N=n+1)», где нужно указать количество (N-1) узлов таблицы и нажать Enter. Далее надо будет ввести значения из таблицы, по окончанию ввода нажать Enter.
На экран будет выведена введённая таблица значений. Затем пользователю будет предложено «Введите x ». Нужно ввести x для которого необходимо найти приближённое значение. После этого программа вычислит значение и предложит найти значения для другого x.
Потом программа спросит «повторить вычисления полинома для другой функции?» Чтобы начать заново нужно нажать 1, чтобы закончить работу с программой нажать 0 и после ввода подтвердить выбор клавишей Enter.
2.4 Исходные данные и результат решения контрольного примера
|
0 |
1 |
2 |
3 |
4 |
|
0 |
0.5 |
0.866 |
1 |
0.866 |
В процессе выполнения данной курсовой работы была рассмотрена только первая формула полинома Ньютона, которая используется вблизи начала таблицы. Интерполяционный полином в форме Ньютона удобно использовать, если точка интерполирования находится вблизи начала таблицы. Этот полином интересен тем, что каждая частичная сумма первых m слагаемых есть интерполяционный полином m-1 степени, построенный по m первым табличным точкам. Поэтому интерполяционные полиномы Ньютона удобно использовать при последовательном увеличении степени интерполяционного многочлена.
К недостатку формулы Ньютона можно отнести то, что при вычислениях в таблице с постоянным шагом при увеличении количества узлов не всегда удается добиться повышения точности вычислений. Это обусловлено тем, что равноотстоящие узлы не являются лучшими с точки зрения уменьшения погрешности интерполирования. Если имеется возможность выбора узлов интерполирования, то их следует выбирать так, чтобы обеспечить минимум погрешности интерполяции.
В процессе выполнения курсовой работы были закреплены приобретенные за период обучения навыки и умения самостоятельного составления алгоритмов и программ на языке программирования Turbo Pascal 7.0 для решения простых типовых математических задач. Эта работа ещё раз подтвердила полезность использования ЭВМ для решения прикладных математических задач. Полученные знания и накопленный опыт решения простых задач в будущем позволят разрабатывать гораздо более сложные программы и алгоритмы, облегчат разбиение сложных задач на простые элементы.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
Листинг программы
program interpol;
uses crt;
const
MAXCOUNT=30;
type
per = array [0..MAXCOUNT] of real;
var
X,y :per;
n,i :integer;
l,D,f :real;
label Lp, Lt;
{procedura vivoda titulnogo lista}
Procedure Titul;
begin
Clrscr;
GoToXY(23,2);
Writeln('FEDERALNOE AGENSTVO PO OBRAZOVANIYU');
GoToXY(22,3);
Writeln('ESSTU');
GoToXY(28,4);
Writeln('KAFEDRA PRIKLADNOI MATEMATIKI');
GoToXY(14,8);
Writeln('METOD NEWTONA.');
GoToXY(34,12);
Writeln('TEMA 1');
GoToXY(24,17);
Writeln('STUDENT GR.740 ZHAMBALOVA S.B.');
GoToXY(20,19);
Writeln('RUKOVODITEL NAZAROVA L.I.');
GoToXY(33,23);
Writeln('ULAN-UDE, 2013 g.');
readkey;
clrscr;
end;
{procedura vivoda poyasneniya k programme}
Procedure help;
begin
clrscr;
writeln ('programma po по znacheniyam funkcii f(x) zadannoi tablichno v neskolkyh tochkah otrezka nahodit ee znacheniya v ' +
+ 'ostalnyh tochkah dannogo otrezka. Tochki s koordinatami (xi, yi) nazyvayutsya uzlovymi tochkami ili uzlami.');
writeln ('kolichestvo uzlov v tablichnoi funkcii dolzhno byti ravno N=n+1. ');
writeln (' posle vvoda kolichestva uzlov n (nachalnaya tochka (x[0],y[0]) ne yavlyaetsya uzlom) nuzhno vvodit uzlovie tochki +'
+' funkcii. posle etogo programma smozhet nahodit znacheniya dannoi funkcii v ostalnyh tochkah otrezka (x[0]..x[n]).');
readkey;
clrscr;
end;
{procedura vvod tablichnyh znachenii}
procedure Enter(var X,y: per);
var
i: integer;
label mp;
begin
mp: for i:=0 to n do
begin
write('X[',i,'] = '); readln(x[i]);
write('y[',i,'] = '); readln(y[i]);
end;
for i:=0 to n-1 do
if x[i+1]-x[i]<=0 then
begin
writeln ('oshibka. povtorite vvod.');
goto mp
end;
end;
{procedura vivoda tablichnyh znachenii}
procedure Print(n: integer; X,y: per); var
i: integer;
begin
for i:=0 to n do
begin
write(x[i]:12:6);
end;
writeln;
for i:=0 to n do
begin
write(y[i]:12:6);
end;
writeln;
end;
{funkciya formuly Newtona}
Function Polinom(n: integer; d:real; X,y :per):real;
var
l:real;
k,i:integer;
p: real;
begin
L:=y[0];
P:=1;
for k:=1 to n do begin
P:=P*(D-X[k-1]);
for i:=0 to (n-k) do begin
Y[i]:=(y[i+1]-y[i])/(x[i+k]-x[
end;
L:=L+P*y[0];
end;
POlinom:=l;
end;
{osnovnoi tekst programmy}
begin
TextMode(3);
TextBackground(1);
TextColor(14);
Titul;
writeln ('vivesti poyasnenie k programme? (da-1,net-0)');
read (f);
if f=1 then help else
lp:clrscr;
writeln('vvedite kolichestvo uzlov n (N=n+1)');
read(n);
Enter(X,y);
Print(n,X,y);
repeat
lt:Writeln('vvedite X (ot ',x[0]:4:2,' do ',x[n]:4:2,')');
read(d);
if d<x[0] then begin
writeln('oshibka. x ne mozhet byti menshe',x[0]:4:2);
goto lt; end;
if d>x[n] then begin
writeln('oshibka. x ne mozhet byti bolshe ',x[n]:4:2);
goto lt; end;
writeln(Polinom (n,d,X,y):6:3);
writeln('naiti znacheniya dlya drugoi tochki X?(da-1,net-0)');
read(f)
until f=0;
readkey;
clrscr;
writeln('povtorit dlya drugoi funkcii? (da-1,net-0)');
read(f);
if f=1 then goto lp else end.
Информация о работе Интерполирование функций с помощью полиномов Ньютона