Алгоритм та програма інтерполювання функції при рівномірному розміщенні вузлів за допомогою інтерполяційного многочлена Лагранжа

Автор: Пользователь скрыл имя, 17 Сентября 2013 в 23:31, курсовая работа

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

Мета дослідження.
Метою роботи є дослідження можливості використання інтерполяційного многочлена Лагранжа для інтерполювання функцій.

Задача дослідження:
проаналізувати існуючі методи інтерполювання функції та обґрунтувати переваги використання інтерполяційного многочлена Лагранжа по відношенню до існуючих;
розробити алгоритм інтерполювання функції та здійснити вибір най-оптимальнішого з них;
розробити програму інтерполюванням функції з використанням інтерполяцій-ного многочлена Лагранжа та провести її тестування.

Содержание

АНОТАЦІЯ…………………………………………………………………………...
4
ВСТУП………………………………………………………………………………...
5
1 АНАЛІЗ ТЕОРЕТИЧНОЇ БАЗИ МЕТОДІВ
ІНТЕРПОЛЮВАННЯ ФУНКЦІЇ………………………………………………….

6
2 РОЗРОБКА АЛГОРИТМІВ ТА ВИБІР ОПТИМАЛЬНОГО
АЛГОРИТМУ……………………………………………………………………...

17
3 ПРИКЛАД ПРОГРАМИ ІНТЕРПОЛЮВАННЯ ФУНКЦІЇ ЗА ДОПОМОГОЮ . ІНТЕРПОЛЯЦІЙНОГО МНОГОЧЛЕНА ЛАГРАНЖА……………………….

21
3.1 Інструкція користувача……………………………………………………....
21
3.2 Лістинг програми……………………………………………………………
22
3.3 Опис програми……………………………………………………………....
24
3.4 Тестування програми……………………………………………………......
25
ВИСНОВКИ………………………………………………………………………......
26
ПЕРЕЛІК ПОСИЛАНЬ……………………………………………

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

kursova-nova моя.docx

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

1. Відкриття меню здійснюється  натисненням миші. Щоб вибрати  будь-яку команду меню, досить  установити курсор на імені  команди і натиснути ліву кнопку  миші.

2. Текст  програми міститься в одному  файлі: файл основної програми  з іменем Kyrsova. Для відкриття його необхідно вибрати у меню Файл команду Відкрити, що відкриває діалогове вікно з переліком файлів поточної папки.

3. Вибір  необхідного файлу з цього  списку і наступне натискання  кнопки OK приводить до появи вікна Редактора/Налагодження, який дає змогу не тільки коректувати програму, але і проводити її відладку. Запуск програми здійснюється вибором в меню Виконати команди виконати, або натисненням клавіші F9.

4. В результаті  запуску програми з’явиться командне  вікно, в якому необхідно ввести  значення проміжку , крок та значення аргумента . По завершенні введення значень в командному вікні буде зазначено значення функції.

 

 

 

 

 

 

 

 

 

 

 

 

3.2 Лістинг програми

 

#include <iostream.h>

#include <math.h>

#include <stdlib.h>

#include <conio.h>

 

float y[11]={0.16667,0.08334,0.04545, //обчислення значень даної функції

0.02778,0.01852,0.01316,0.009804,  

0.007576,0.006024,0.004902,0.004065};

float x[11]={1,2,3,4,5,6,7,8,9,10,11};

float L(float xp,int n,int i)

{

      float Chesl; float Znam;

      Chesl=1; Znam=1; int k;

      for (k=0; k!=n; k++)

      {

          if (k==i) continue;

          Chesl *=xp-x[k];     //Обчислення чисельника многочлена Лагранжа

      }

      for(k=0; k!=n; k++)

      {

          if (x[i]==x[k]) continue;

          Znam *=x[i]-x[k];     // Обчислення знаменника многочлена Лагранжа

      }

      return Chesl/Znam;

}

 

int main()

{     

    system("chcp 1251");

    system("cls");

    int n,a,b;float px;

    cout<<"Введіть проміжок:"<<endl;  //Введення даних

    cout<<" Введіть а:"<<endl;

    cin>>a;

    cout<<endl;

    cout<<" Введіть b:"<<endl;

    cin>>b;

    cout<<endl;

    cout<<" Введіть значення x: ";

    cin>>px;

    cout<<endl;

    float S=0;

    n=b-a+1; //обчислення кількості вузлів

    for (int i=0; i!=n; i++)

    S+=y[i]*L(px,n,i);    //Обчислення многочлена Лагранжа в даній точці

    printf("Ваш результат: %f ",S); //Результат обчислення

   

    getch();

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.3 Опис програми

 

В даному файлі описані всі змінні та присвоєні  їм певні значення, необхідні для  обчислення інтерполювання з використанням інтерполяційного многочленна Лагранжа, а також власний процес обчислення методу. З метою ефективного використання пам’яті для збереження початкових значень системи, вони зберігаються в динамічній пам’яті, що дозволяє відводити під них місце динамічного розміру в залежності від кількості заданих даних.

Файл  Kyrsova-Lagranzh.PAS. містить описи структури методу та функцій, що використовуються основною програмою, та описи внутрішніх операторів. Нижче наведено список загальних операторів, їх призначення та основні властивості.

Команда int описує цілий тип змінних.

Команда float описує дійсний тип змінних.

Команда  cout призначена для виведення значень на екран і має такий загальний вигляд:

 

           cout < список >.

 

Команда cin призначена для введення даних і має такий загальний вигляд:

 

           cin (< список змінних >).

 

Оператор  циклу for призначений для повторного виконання операцій, число яких заздалегідь відоме. Оператор циклу for ще називають оператор циклу з параметром. Загальний вигляд оператор циклу for:

 

            for (< початок масиву>кінець масиву < крок проходу по масиву >).

 

Оператор  умови if використовується для виразів результат яких має стандартний булевский тип. Неповне розгалуження реалізується за допомогою оператора if і має такий загальний вигляд:

            if  < логічний вираз { < команда >}.

Оператор continue призначений до поверненння дії назад і має такий загальний вигляд:

 

<умова> continue.

 

Команда getch зупиняє роботу програми.

 

 

 

 

 

 

3.4 Тестування програми

 

На рис.3.1 подано екранне зображення результатів  обчислення програми, розробленої в  середовищі системи C++.

 

 

           Рисунок 3.1 ─ Результати обчислення програми, розробленої

в середовищі системи C++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВИСНОВКИ

1. Проаналізовано існуючі методи інтерполювання функції та обґрунтовано переваги інтерполювання функції з використанням інтерполяційного многочленна Лагранжа по відношенню до існуючих, які полягають у тому, що даний метод досить простий для розуміння та точний, що і було підтверджено математично. Проте при великій кількості вузлів інтерполювання, обчислення стають досить складними і громісткими, тому в таких умовах для знаходження  значення функції зручніше використовувати схему Ейткіна.

    2. Запропоновано два алгоритми обчислення інтерполювання функції. Проведено аналіз ефективності розроблених алгоритмів за комплексним критерієм ефективності, що враховує час виконання та розмір алгоритму. Комплексний коефіцієнт ефективності описаних вище алгоритмів складає 0,8.

3. Розроблено програму інтерполювання функції з використанням інтерполяційного многочлена Лагранжа та проведено її тестування, яке підтвердило її правильну та коректну роботу.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПЕРЕЛІК ПОСИЛАНЬ

 

  1. Березин И. С. Методы вычислений / И. С. Березин, Н. П. Житков. – М.: Наука, 1966. – т.1– 633 с.
  2. Лященко М. Я. Чисельні методи / М. Я. Лященко, М. С. Головань. – К.: Либідь, 1996. – 276 с.
  3. Дюринг Е. Критическая  история общин принципов механіки / Е. Дюринг. – Москва: Красанд, 2011. - 552с.
  4. Бахвалов Н. С. Численные методы / Н. С. Бахвалов, Н. П. Житков, Г. М. Кобельков. – М.: Наука, 1987. – 599 с.
  5. Курош А. Г. Курс высшей алгебры / А. Г. Курош. -К.: Вища школа, 1982. – 613с.
  6. Демидович Б. П. Основы вычислительной математики / Б. П. Демидович, И. А. Марон. – М.: Наука, 1970. – 664 с.
  7. Калиткин Н. Н. Численные методы / Н. Н. Калиткин.  – М.: Наука, 1978.– 512 с.
  8. Бахвалов Н. С. Численные методы / Н. С. Бахвалов. – М.: Наука, 1975. – 632 с.
  9. Турчак Л. И. Основы численных методов / Л. И. Турчак. – М.: Наука, 1987. – 318 с.
  10. Самарский А. А. Численные методы / А. А. Самарский, А. В. Гумен. – М.: Наука, 1989. – 430 с.
  11. Вержбицький В. М. Основы численных методов / В. М. Вержбицький. – М.: Высшая школа, 2002. – 847 с.
  12. Григоренко Я. М. Обчислювані методи / Я. М. Григоренко, Н. Д. Панкратова. – К.: Либідь, 1995. – 227 с.
  13. Методичні вказівки до виконання курсової роботи з дисципліни «Обчислювальна математика» для студентів спеціальностей «Мікроелектроніка та напівпровідникові прилади» та «Електронні прилади та пристрої» / Уклад. Крилик Л. В. Прокопова М. О. – Вінниця: ВНТУ, 2007.-38 с.
  14. Крилик Л. В. Інтерполяція та апроксимація табличних даних / Л. В. Крилик, І. В. Богач, М. О. Прокопова. – Вінниця: ВНТУ, 2013. – 110 с.
  15. Глинський Я. М. Алгоритмізація і програмування / Я. М. Глинський. – М.: Наука, 2003. – 200 с.
  16. Эллис М. М. Справочное руководство по языку С++ / М. М. Эллис, Б. Г. Строуструп. – М.: Мир, 1992. – 445 с.
  17. Подбельский В. В. Язык С++: учебное пособие / В.В. Подбельский. – М.: Финансы и статистика, 1995. – 560 с.

 

 

 

 

 

 

 

 


Информация о работе Алгоритм та програма інтерполювання функції при рівномірному розміщенні вузлів за допомогою інтерполяційного многочлена Лагранжа