Logo GenDocs.ru

Поиск по сайту:  


Загрузка...

Интерполяция многочленами Лагранжа - файл Інтерполяція функції методом Лагранжа.doc


Интерполяция многочленами Лагранжа
скачать (1186.6 kb.)

Доступные файлы (17):

Thumbs.db
Project1.bpr
Project1.cpp
Project1.exe
Project1.obj
Project1.res
Project1.tds
Unit1.cpp
Unit1.ddp
Unit1.dfm
Unit1.h
Unit1.obj
Unit2.cpp
Unit2.dfm
Unit2.h
Unit2.obj
Інтерполяція функції методом Лагранжа.doc396kb.03.03.2008 10:40скачать

содержание
Загрузка...

Інтерполяція функції методом Лагранжа.doc

Реклама MarketGid:
Загрузка...
Зміст

ВСТУП




ПОСТАНОВКА ЗАДАЧІ




ОГЛЯД ПРОБЛЕМИ




1. ОСНОВНА ЧАСТИНА РОБОТИ



1.1 Описання середовища програмування
1.2 Описання математичного методу

2. СПЕЦІАЛЬНИЙ РОЗДІЛ



2.1 Описання алгоритму програми
2.2 Описання інтерфейсу програми
2.3 Інструкція користувачеві
2.4 Описання тестового прикладу
2.5 Охорона праці

3. РЕЗУЛЬТАТИ




ЛІТЕРАТУРА




ДОДАТОК


ВСТУП.

Теорія функцій є одним з найбільш розвинутих розділів сучасної математики. Серед різноманітних задач теорії функцій найбільш важливими є задачі наближення функцій. Ці задачі можна розділити на задачі інтерполяції та задачі апроксимації.

Загальна задача апроксимації функцій полягає в тому, щоб для даної функції f (або деякого класу К функцій) знайти серед заданої множини M більш простих функцій таку функцію g, що на заданому відрізку відстань від f до g (або від К до g) була найменшою. Поняття відстані між функціями може розумітись по-різному й залежить від практичних задач.

Задача інтерполяції полягає в тому, щоб по значенням функції в деяких точках (вузлах) знайти вигляд (аналітичне представлення) функції або її значення в інших точках. Функція шукається в заздалегідь визначеному класі функцій ( алгебраїчні многочлени, тригонометричні поліноми тощо).

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

^ ПОСТАНОВКА ЗАДАЧІ.
Метою даної роботи є:

  1. Ознайомлення з основними методами інтерполювання функцій;

  2. Вивчення методу інтерполювання Лагранжа;

  3. Створення програми, яка демонструє інтерполювання функції в заданих вузлах методом Лагранжа.

^ ОГЛЯД ПРОБЛЕМИ
Для успішного розв’язання поставленої задачі необхідно :


  1. Володіти мовою програмування (використовуємо мову С++ );

  2. Володіти навичками роботи у інтегрованому середовищі програмування для створення програми з Windows-інтерфейсом ( використовуємо середовище Borland C++Builder 6.0 );

  3. Мати навики застосування математичної теорії в програмуванні, (зокрема вміти застосувати результати точних алгоритмів в наближених обчисленнях й враховувати похибки );

  4. Володіти теорією інтерполювання функцій алгебраїчними многочленами.


Поставлена задача переслідує навчально-методичні цілі і не є новаторською розробкою. На сьогодні є чимало потужних програм, що дозволяють використовувати математичні методи в розрахунках. Найвідоміші серед них продукти: Maple, Matematica, Matlab, Mathcad.


    1. ^ ОПИСАННЯ СЕРЕДОВИЩА ПРОГРАМУВАННЯ


Новітня система об'єктно-орієнтованого програмування C++Builder виробництва корпорації Borland призначена для операційних систем Windows 95 і NT. Інтегроване середовище C++Builder забезпечує швидкість візуальної розробки, продуктивність повторно використовуваних компонент у поєднанні з потужністю мовних засобів C, вдосконаленими інструментами і різномасштабними засобами доступу до баз даних.

C++Builder може бути використаний скрізь, де потрібно доповнити програми, що вже існують, розширеним стандартом мови C, підвищити швидкодію і додати призначеному для користувача інтерфейсу якості професійного рівня.

При запуску середовище програмування C++Builder виглядає так:



Мал. 1.1 Середовище програмування C++Builder

На екрані 4 вікна: головне(верхнє), вікно Інспектора об'єктів зліва, Редактора коду справа і Дизайнер форм під вікном Редактора.

У головному вікні зверху знаходиться Палітра компонентів. Палітра - один з основних методів прискореного програмування. На палітрі розміщені компоненти VCL на декількох вкладках.

Новий проект створюється автоматично при запуску C++Builder. Також можна вибрати команду File->New Application або відкрити т.з. "Сховище нових об'ектыв" командою File->New.
^

Основні компоненти С++ Builder


Головне вікно C++ Bilder (панель управління). Головне вікно не розвертається на весь екран, але його можна перетягнути в будь-яке зручне місце. Традиційно його розташовують в командній частці екрану. До складу головного вікна входять:

• рядок заголовка;

• рядок меню;

• панель інструментів, на якій розташовуються командні кнопки для виконання найбільш часто необхідних дій;

• палітра компонентів (див. Мал. 1.2), що містить набір заготовок для елементів управління, з яких збиратиметься інтерфейс вашої програми. Кожен компонент представлений на палітрі своїм значком.



Мал. 1.2 Палітра компонентів

Палітра компонентів складається з чотирнадцяти панелей, на яких компоненти згруповані по конкретних сферах застосування.

Коротко опишемо області, що охоплюються компонентами кожної панелі:

• Standard — стандартні елементи управління Windows;

• Additional — додаткові, нестандартні елементи управління Windows;

• Win32 — елементи управління Windows 9x;

• System — системні об'єкти (таймер, музичний програвач та інші);

• Internet — все для застосувань, що працюють з Інтернетом;

• Data Access — компоненти для організації зв'язку з базами даних;

• Data Controls — елементи, що управляють, для робіт з базами даних;

• ADO — компоненти для доступу до даних на основі однієї з самих передовіх на сьогоднішній день Windows-технологии Microsoft ACTIVEX Data Objects (ADO);

• Interbase — компоненти для роботи з СУБД Interbase виробництва корпорації Inprise;

• Midas — компоненти для створення застосувань, здатних працювати на декількох комп'ютерах;

• Internetexpress і Internet — засоби швидкого створення застосувань для Інтернету;

• Fastnet — компоненти, що підтримують основні мережеві протоколи, орієнтовані на Інтернет;

• Decision Cube — компоненти системи аналізу даних;

• Qreport — компоненти створення різних звітів;

• Dialogs — стандартні діалогові вікна Windows;

• Win 3.1 — елементи управління Windows 3.1;

• Samples — приклади компонентів, вхідні в постачання системи;

• ACTIVEX — ActiveX-компоненты (ACTIVEX — формат активних компонентів, розроблений фірмою Microsoft. Borland C++builder 4 також підтримує цей формат);

• Servers — набір компонентів, за допомогою яких можна управляти роботою офісних програм Word, Excel, Powerpoint, Outlook і ін.

Нижче перелічимо основні властивості найбільш часто використовуваних компонентів.

  • Компонент TLabel




  • Transparent - Прозорість фону.

  • ShowАccelСhar - чи можна використовувати "швидку клавішу", яка визначається символом після символу "&" і переводить фокус введення на компонент, визначений у властивості FocusСontrol.

  • WordWrap - Автоматичне перенесення слів, якщо вони не уміщаються на рядку.

  • Компонент TEdit

  • Anchors - Властивість, яка визначає, як змінюватиметься довжина компоненту при зміні розмірів форми.

  • BorderStyle - Окантовка області введення.

  • Color - Колір фону.

  • ReadOnly - Забороняє редагування введеного тексту.

  • PasswordChar - Відображення одного і того ж символу (наприклад, зірочки) замість тексту, що вводиться.

  • Text - Містить введений рядок типу Ansistring.

  • Компонент TButton

  • OnClick - Подія, що виникає при натисненні на кнопку клавішею миші.

  • Cancel - Говорить про те, що при натисненні клавіші ESC або закритті ділогового вікна використовується обробник події Onclick() даної кнопки.

  • Default - Кнопка вибирається за умовчанням і обводиться рамкою.

  • Caption - Підпис на кнопці.

  • ModalResult - В модальних діалогових вікнах значення цієї властивості, не рівне mrnone, при натисненні на кнопку закриє вікно і запише своє значення у властивість Modalresult форми.
^

Візуальний проектувальник робочих форм


Форма — це вікно Windows, в якому розміщуються різні елементи управління (кнопки, меню, перемикачі, списки, елементи введення і т. д.). Коли створювана програма відкомпілюється і запущена, форма перетвориться на звичайне вікно Windows і почне виконувати ті дії, які для неї визначені. Таких вікон в програмі може бути скільки завгодно.

Інспектор об'єктів (Object Inspector)

Інспектор об'єктів — дуже важлива частка середи розробки. Він призначений для завдання властивостей об'єктів і визначення їх реакції на різні події.
^

Властивості об'єктів


Властивість об'єкту — це одна з його характеристик, така, як ширина для кнопки, назва для вікна, наявність смуг прокрутки для списку, колір і стиль для шрифту, ім'я файлу для малюнка і так далі Кожен об'єкт має велике число властивостей, властивості багатьох елементів управління схожі; властивості інших об'єктів можуть сильно розрізнятися

Інспектор об'єктів дозволяє швидко і зручно міняти будь-які властивості поточного (виділеного на формі) об'єкту. При цьому зміни, що вносяться, негайно позначаються на зовнішньому вигляді цього об'єкту. Наприклад, якщо ми за допомогою Інспектора змінимо, текст напису на кнопці, ця зміна миттєво відображуватиметься на самій кнопці в проектованій формі.
^

Вікно редактора програми


За головною формою приховане вікно редактора програми Між поточною формою і редактором можна перемикатися за допомогою клавіші F12. Вікно редактора, складається з двох панелей: панелі Переглядача класів і панелі редактора початкового тексту програми на С++. Переглядач класів візуально відображує структуру зв'язків між різними об'єктами нашої програми і дозволяє швидко переміщуватися по її тексту.

^ 1.2 ОПИСАННЯ МАТЕМАТИЧНОГО МЕТОДУ
На практиці досить часто зустрічається задача: по заданим на площині значенням ( Xі, Yi), і =0,1,…,n побудувати функцію що точно проходить через ці точки. Така задача називається задачею інтерполяції. Зрозуміло, що для даного набору точок (вузлів інтерполяції) можна знайти безліч функцій, що точно проходять через ці точки. Але на практиці в даній конкретній задачі звичайно вказується клас функції, з поміж яких ми можемо вибирати інтерполюючи функцію.

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

Інтерполяційний многочлен Лагранжа проходить через всі вузли ( Xі, Yi) й визначається наступним чином:

. ( 1 )

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



    1. ^ ОПИСАННЯ АЛГОРИТМУ ПРОГРАМИ


















j++

S=S+Y[i]*P

i ++

y=S



так
ні

так


ні


ні

так
^ 2.2 ОПИСАННЯ ІНТЕРФЕЙСУ
Інтерфейс програми простий та інтуїтивно зрозумілий. У верхній частині форми – головне меню. Під ним – таблиця для задавання вузлів інтерполяції досліджуваної функції. Справа від неї – віконце для встановлення степеня інтерполюючого многочлена. Основну частину форми займає компонент, на якому відображаються вузли інтерполяції та графік досліджуваної функції (мал.2.1).



Мал. 2.1 Головна форма програми.



    1. ІНСТРУКЦІЯ користувача.


Довідка користувача викликається з головного меню. Форма з довідкою зображена на мал.2.



Мал. 2.2. Довідка користувача.


    1. ^ ОПИСАННЯ ТЕСТОВОГО ПРИКЛАДУ


Розглянемо інтерполяцію функції за 2-ма, 3-ма, 4-ма та 6-ма вузлами. Відповідні результати зображено на мал. 2.3- 2.6.



Мал.. 2.6. Інтерполяція за 2-ма вузлами.


Мал. 2.7. Інтерполяція за 3-ма вузлами.



Мал. 2.8 Інтерполяція за 4-ма вузлами.


Мал. 2.9 Інтерполяція за 6-ма вузлами.


    1. ^ ОХОРОНА ПРАЦІ


1.Загальні положення.

1.1. У приміщеннях, де розташовані ПК, температура повітря повинна становити 19-21° С, відносна вологість повітря 55-65%, швидкість руху повітря не більше 0.2 м с , рівень звуку не повинен перевищувати 50дБ.

1.2. Для розміщення робочих місць з ПК найбільш придатні приміщення з однобічним розміщенням світлових отворів, які обов’язково мають бути обладнані сонцезахисними пристроями: штори, жалюзі і т.п. Площа засклення не повинна перевищувати 25% від площі стіни з вікнами.

1.3. Для мінімізації засвідчування від сонячних променів екранів ПК вікна мають бути орієнтовані на північ (північний захід, північний схід).

1.4. Інтер’єри робочих кімнат необхідно оформлювати з урахуванням коефіцієнтів віддзеркалення. Тому стеля, стіни, поверхні столів, шафи повинні мати невисокі коефіцієнти віддзеркалення. Так коефіцієнти віддзеркалення робочого столу, корпусу та клавіатури ПК необхідно передбачати 0.2 – 0.5; підлоги 0.1 –0.2; меблів –0.25 –0.35;стелі 0.6 -.0.7; стін 0.2 –0.5.

1.5. Робочі місця з ПК доцільно розміщувати в глибині приміщення.

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

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

1.8. Робочі місця слід розміщувати так , щоб площина екрану була перпендикулярною площі вікон.

1.9. Забороняється розміщувати ПК поблизу опалювальних приладів, систем іонізуючого випромінювання або магнітного поля.

1.10. В модулях електроживлення всіх пристроїв знаходяться точки з високою напругою, які можуть представляти небезпеку для життя.

1.11. Забороняється:

  • підключати або відключати з’єднувачі під напругою;

  • залишати ПК включеним без нагляду користувача;

  • робота при знятому кожусі будь-якого пристрою;

  • застосовувати тимчасові електричні з’єднання для підключення комп’ютера;

  • відкривати кишені приводу під час роботи.

1.12. Обладнання ПК повинне підключатися до електромережі лише за допомогою розгалуження в розетки з заземленням.

1.13. В кишені для гнучких дисків не дозволяється класти сторонні предмети.
2. Перед початком роботи:

2.1. Всі полімерні покриття ( чохли, поліетиленові пакети і т.п.) слід складати у найбільш віддаленому від операторів місці приміщення.

2.2. Ознайомитися з технічною документацією до ПК.

2.3. Перед включенням ПК необхідно візуально перевірити цілісність з’єднуваних кабелів.

2.4.Обов”язково дотримуватись послідовності включення всіх пристроїв, згідно порадника з експлуатації.
3.Під час роботи:

3.1. У період роботи за дисплеєм у режимі праці та відпочинку необхідно передбачати через кожні 40-45 хвилин п’ятихвилинні перерви для відпочинку.

3.2. Середня сумарність тривалості роботи з відео терміналом за день не повинна перевищувати 4 години, а за тиждень – 20 годин. При використанні захисних засобів час роботи з ПК може бути збільшений.

3.3. Сумарну тривалість роботи з відео терміналом бажано розподіляти на дві частини, і працювати по 2 години ( у першу та другу половину робочого дня).

3.4. Якщо під час роботи ПК виникають сумніви з приводу його працездатності, необхідно звернутися до порадника (інженера) з експлуатації, який відповідає за комп’ютерне обладнання.
4.Після закінчення роботи:

4.1.Виключити принтер, комп’ютер, монітор.

4.2.Вимкнути комп’ютер з електромережі. Накрити чохлом.

4.3.Привести в порядок своє робоче місце.

РЕЗУЛЬТАТИ
В даній курсовій роботі було розглянуто спосіб інтерполювання функцій алгебраїчними многочленами методом Лагранжа, створено демонстраційну програму з інтерфейсом, за допомогою якої можна досліджувати інтерполювання функцій многочленами.

Література


  1. В.И. Крылов, В.В. Бобков , П.И. Монастырный, Вычислительные методы, М. «Наука», 1976.

  2. Б.П. Демидович, И.А. Марон, Э.З.Шувалова, Численные методы анализа, М. «Наука», 1962.

  3. О.Коссак, О. Тумашова, О. Коссак, Методи наближених обчислень, Львів,2003.

ДОДАТОК

Текст програми


#include <vcl.h>

#pragma hdrstop
#include "Unit1.h"

#include "Unit2.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

float X[100],Y[100];//масиви вузлів

int n=2;//початкове значення кількості вузлів
//функція- інтерполяційний многочлен Лагранжа

float L(float x,float X[100],float Y[100],int n)

{

if(n<=100)

{

float S=0;

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

{

float P=1;

for(int j=0;j<n;j++)

if(j!=i)

P=P*(x-X[j])/(X[i]-X[j]);

S=S+Y[i]*P;

}

return S;

}

}
//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

//Вихід

void __fastcall TForm1::N6Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

//при активації форми

void __fastcall TForm1::FormActivate(TObject *Sender)

{

StringGrid1->Cells[0][0]=" X";

StringGrid1->Cells[0][1]=" Y";
}

//---------------------------------------------------------------------------

//зміна кількості вузлів

void __fastcall TForm1::UpDown1Click(TObject *Sender, TUDBtnType Button)

{

StringGrid1->ColCount=UpDown1->Position+1;

n=UpDown1->Position;

}

//---------------------------------------------------------------------------

//натиснення клавіші на клавіатурі

void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)

{

if(Key==13) //клавіша ENTER

{

Series1->Clear();

Series2->Clear();

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

if(StringGrid1->Cells[i][0]!="")

if(StringGrid1->Cells[i][1]!="")

{ //заповнюємо масиви вузлів

X[i]=StrToFloat(StringGrid1->Cells[i+1][0]);

Y[i]=StrToFloat(StringGrid1->Cells[i+1][1]);

}
for(int i=0;i<n;i++)

Series1->AddXY(X[i],Y[i]);//виводимо вузли
float a=StrToFloat(StringGrid1->Cells[1][0]);//ліва границя

float b=StrToFloat(StringGrid1->Cells[n][0]);//права границя

float d=(b-a)/200; //крок виводу графіку

for(int i=0;i<200;i++)//виводимо інтерполяційний многочлен

Series2->AddXY(a+d*i,L(a+d*i,X,Y,n));
}
}

//---------------------------------------------------------------------------

//збереження графіку у файл

void __fastcall TForm1::N2Click(TObject *Sender)

{

if(SavePictureDialog1->Execute())

Chart1->SaveToBitmapFile(SavePictureDialog1->FileName+".bmp");

}

//---------------------------------------------------------------------------

//показати довідку

void __fastcall TForm1::N4Click(TObject *Sender)

{

Form2->ShowModal();

}

//---------------------------------------------------------------------------


Скачать файл (1186.6 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации
Рейтинг@Mail.ru