Интерполирование функций с помощью полиномов Ньютона

Автор: Пользователь скрыл имя, 22 Мая 2013 в 10:56, курсовая работа

Описание работы

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

Содержание

Введение…………………………………………………..…………….…..…..…
Глава 1. Постановка задачи интерполяции
1.1 Постановка задачи………………………………..………………………
1.2 Интерполяция по Ньютону ……………………….…………………..……
Глава 2. Реализация интерполирования функций с помощью полиномов Ньютона
2.1 Программирование функции формулы Ньютона ………………………
2.2 Разработка программы по схеме алгоритма …………………………....
2.3 Инструкция пользования программой…………………………………
2.4 Исходные данные и результат решения контрольного примера……..
Заключение………….…….……………………………………..…………..…..
Список использованных источников…………..…………..…………..………

Работа содержит 1 файл

курсовая интерполяция.doc

— 281.50 Кб (Скачать)

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


Вычислим  значение таблично заданной функции  в точке x=1.5


 

 

 

 

 

 

Получили значение 0.707 которое мало отличается от точного значения.

.

 

ЗАКЛЮЧЕНИЕ

В процессе выполнения данной курсовой работы была рассмотрена только первая формула полинома Ньютона, которая используется вблизи начала таблицы. Интерполяционный полином в форме Ньютона удобно использовать, если точка интерполирования находится вблизи начала таблицы. Этот полином интересен тем, что каждая частичная сумма первых m слагаемых есть интерполяционный полином m-1 степени, построенный по m первым табличным точкам. Поэтому интерполяционные полиномы Ньютона удобно использовать при последовательном увеличении степени интерполяционного многочлена.

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

В процессе выполнения курсовой работы были закреплены приобретенные  за период обучения навыки и умения самостоятельного составления алгоритмов и программ на языке программирования Turbo Pascal 7.0 для решения простых типовых математических задач. Эта работа ещё раз подтвердила полезность использования ЭВМ для решения прикладных математических задач. Полученные знания и накопленный опыт решения простых задач в будущем позволят разрабатывать гораздо более сложные программы и алгоритмы, облегчат разбиение сложных задач на простые элементы.

 

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Введение в численные методы/ А.А. Самарский – М.: наука, 1982.
  2. Начала программирования на языке Паскаль/С.А. Абрамов – М., 1987.
  3. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров/ В.И. Ракитин – М.: Высш. шк., 1998.
  4. Программирование в среде Турбо Паскаль/Д.Б. Поляков – М., 1992.
  5. Справочник по алгоритмам и программам на языке бейсик для персональных ЭВМ/ В.П. Дьяконов – М.: Наука, 1987.
  6. Турбо Паскаль 7.0/В.В. Фаронов – М., 1998.
  7. Численные методы анализа/Б.П. Демидович – М.: Государственное издательство физико-математической литературы, 1962.
  8. Численные методы /Калиткин Н.Н. – М.: 1996
  9. Немнюгин С.A. Turbo Pascal - СПб.: Питер, 2002.- 496 с,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ 

Листинг программы

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[i]);

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.


Информация о работе Интерполирование функций с помощью полиномов Ньютона