Изучение методов интерполяции и аппроксимации

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Нир.Ломоносовские чтения.doc

— 233.50 Кб (Скачать файл)

Квадратичная  интерполяция

 

В качестве интерполяционной функции на отрезке [хi-1, xi+1] принимается квадратный трехчлен. Такую интерполяцию называют также параболической.

Уравнение квадратного трехчлена  

                                             y = aix2 + bix + ci ,         xi-1 xi xi+1               (2)

содержит три  неизвестных коэффициента 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[i-1]*y[i] – x[i+1]*x[i+1]*y[i]-

      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;

                                      32ai + 3bi + ci = 4

                    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) и разработан быстрый (экономичный) алгоритм решения этой функции, предоставленный в виде блок-схем. 

          Список использованных источников

  1. Калиткин  Н.Н.. Численные методы. – М.: Наука, 1982.
  2. Марчук Г.И. Методы вычислительной математики – М.: Наука, 1977.
  3. Носач В.В. Решение задач аппроксимации с помощью персональных компьютеров.. М.: Бином, 1994
  4. Самарский А.А. Численные методы. – М.: Наука, 1989.

Информация о работе Изучение методов интерполяции и аппроксимации