Автор работы: Пользователь скрыл имя, 20 Декабря 2010 в 19:02, курсовая работа
Цель работы: разработать программы вычисления значений функции f(x) для значений х, не содержащихся в таблице.
Задачи:
•Изучить и проанализировать научную, справочную литературу
•Подобрать наиболее простые и лучшие методы решения уравнений первой и второй степени
•Составить алгоритм решения уравнений в виде блок-схемы
•Разработать программы в системе программирования Borland Turbo Pascal 7.0
1.Аннотация……………………………...…………………………………………………....3
2.Цель, задачи……………………………………………………………………...……….....3
3.Введение………………………………………………………………………..…….……...4
4.Линейная интерполяция………………………………………………………....……...….5
◦Теория ………………………………………………………………………….........5
◦Блок-схема……………………………………………………………...……………6
◦Текст программы……………………………………………………………..….….7
◦Пример…………………………………………………………………..……….…..7
5.Квадратичная интерполяция………….………………………………………..…………..8
◦Теория…………………………………………………………………….……….. 10
◦Блок-схема…………………………………………………………….....…………11
◦Текст программы…………………………………………………………….……..12
◦Пример……………………………………………………………………………...13
6.Инструкция по работе с программами……………............................................................16
7.Заключение…………………………………………………………………………………17
8.Список литературы………………………………………………………………………...18
Квадратичная интерполяция
В качестве интерполяционной функции на отрезке [хi-1, xi+1] принимается квадратный трехчлен. Такую интерполяцию называют также параболической.
Уравнение квадратного
трехчлена
содержит три неизвестных коэффициента ai , bi , ci , для определения которых необходимы три уравнения. Ими служат условия прохождения параболы (2) через три точки ( xi-1, yi-1),
(xi, yi), (xi+1, yi+1). Эти условия можно записать в виде
yi-1 = aix2i-1
+ bixi-1 + ci
yi = aix2i
+ bixi + ci
(3)
yi+1 = aix2i+1
+ bixi+1 +
ci
Данная система
уравнений решается методом Крамера.
Определители:
Решение:
Алгоритм нахождения приближенного значения функции с помощью квадратичной интерполяции можно записать в виде структурограммы, как и для случая линейной интерполяции. Вместо формулы (1) нужно использовать (2) с учетом решения системы линейных уравнений (3). Интерполяция для любой точки x є [xo, xn] приводится по трем ближайшим к ней узлам.
Данный алгоритм
представлен на рисунке
Да
Program interpol2;
Const N=3;
Var x: array [1..N] of real;
y: array [1..N] of real;
a, b, c, xр, yр, deltaA, deltaB, deltaC, delta : real;
i: integer;
begin
for i:=1 to N do
begin {ввод данных через массивы}
writeln (‘x[‘,I,’]=’);
readln (x[i]);
writeln (‘y[‘,I,’]=’);
readln (y[i]);
end;
write (‘vvedite x’); {ввод промежуточного значения}
readln (xр);
for i:=2 to N do
if (x[i-1]<=xр) and (xр<=x[i-1]) then
begin {вычисления}
delta:= x[i-1]*x[i-1]*x[i] – x[i-1]*x[i-1]*x[i+1]+ x[i-1]*x[i+1]*x[i+1] – x[i-1]*x[i]*x[i] – x[i+1]*x[i+1]*x[i]+ x[i+1]*x[i]*x[i];
deltaA:= x[i+1]*y[i]– x[i-1]*y[i] +y[i-1]*x[i]-x[i+1]*y[i-1] – y[i+1]*x[i]+x[i-1]*y[i+1];
deltaB:=x[i-1]*x[
y[i-1]*x[i]*x[i] + y[i+1]*x[i]*x[i] – x[i-1]*x[i-1]*y[i+1] + x[i+1]*x[i+1]*y[i-1];
deltaC:= y[i+1]*x[i-1]*x[i-1]*x[i] – y[i]*x[i-1]*x[i-1]*x[i+1] + y[i]*x[i-1]*x[i+1]*x[i+1]- y[i+1]*x[i-1]*x[i]*x[i] –y[i-1]*x[i+1]*x[i+1]*x[i] + y[i-1]*x[i+1]*x[i]*x[i];
a:= delta/deltaA;
b:=delta/deltaB;
c:= delta/ deltaC;
yр:= a*xр*xр + b*xр +c;
end;
writeln (‘y=’, yр); {вывод искомого значения}
readln;
end.
Пример. Найти
приближенное значение функции y =
f (x) при x = 2.5, если известна следующая
таблица её значений:
x | 2 | 3 | 4 |
y | 2 | 4 | 7 |
Найдем приближенное значение функции с помощью формулы квадратичной интерполяции (2) . Составим систему уравнений (3). С учетом ближайших к точке x = 2.5 узлов xi-1 = 2 , xi = 3, xi+1 = 4. Соответственно yi-1 = 2 , yi = 4 yi+1 = 7. Система (3) запишется в виде
22ai + 2bi + ci = 2;
42ai
+ 4bi
+ ci
= 7.
4 2 1
9 3 1 = 4٠3-4٠4 +2٠16 -2٠ 9 – 16٠3+ 4٠9= -2
16 4
1
2 2 1
4 3 1 = 2٠3 -2٠4 +2٠3 – 4٠2 - 7٠3 +2٠7 = -1
7 4 1
4 2 1
9 4 1 = 4٠4- 16٠4 -2٠9 + 7٠9 - 4٠7+16٠2= 1
16 7 1
4 2 2
9 3 4 =7٠4٠3 – 4٠4٠4 + 4٠2٠16 – 7٠2٠9 – 2٠16٠3 + 2٠4٠9= -2
16 4 7
;
Решая эту систему, находим ai =0.5 , bi = -0.5, ci = 1. Искомое значение функции
y (2.5)2٠0.5 + 2.5٠(-0.5) + 1 2.875.
На рисунке 1 показан вид окна программы при вводе исходных данных
Рис.1
На рисунке 2 представлен вид окна программы после вывода результатов
Рис.2
Исполнимый модуль
программы находится в файле
с именем interpol2.exe
Инструкция по работе с программами
Исполнимые модули программ находятся в файле с именами interpol.exe и interpol2.exe, запускаются на выполнение в операционной системе ее средствами.
После
запуска программы пользователь
должен ввести исходные данные, как это
показано на рисунке 1 (см. стр.8, 14) После
ввода исходных данных программа производит
вычисления и выводит результат на экран
в том же окне, что и исходные данные, как
это показано на рисунке 2(см. стр.9,15). Чтобы
завершить работу программы, пользователь
должен нажать любую клавишу.
Составленные
программы решают задачу интерполирования
таблично заданной функции с произвольным
расположением узлов. Как показывает анализ
результатов, вычисления, производимые
программами, верны.
Заключение
В
данной работе была изучена
и проанализирована справочная
литература, вследствие чего были
выявлены два наиболее простых
и удобных вида интерполяции – линейная
и квадратичная; созданы программы в
системе программирования Borland Turbo
Pascal 7.0 для вычисления значений функции
f(x) и разработан быстрый (экономичный)
алгоритм решения этой функции, предоставленный
в виде блок-схем.
Информация о работе Изучение методов интерполяции и аппроксимации