Обчислювальні методи та застосування ЕОМ

Автор работы: Пользователь скрыл имя, 27 Января 2011 в 01:02, курсовая работа

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

В даній курсовій роботі проведено дослідження двох чисельних методів вирішення диференційних рівнянь: Ейлера та Рунне-Кутта. Дослідження проводиться на прикладі заданого диференційного рівняння. Дається опис кожного з методів та задачі в цілому.

Содержание работы

Завдання ………………………………………………………………………..
1.Загальні відомості ……………………………………………………………..

2.Вибір методу інструментальних засобів вирішення задач………………

3.Функціональне призначення програми …………………………………….

4.Розробка та опис логічної частини програми ………………………………
5.Керівництво оператору …………………………………………………………
6.Результати обчислень ………………………………………………………….
Висновки …………………………………………………………………………….
Література …………………………………………………………………………..

Файлы: 1 файл

Курсова.doc

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

Міністерство  освіти і науки  України

Вінницький  державний технічний  університет

                          Інститут  ІНАЕКСУ

Факультет АКСУ
Кафедра АІВТ

Курсова робота з дисципліни :

«Обчислювальні  методи та застосування ЕОМ»

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Керівник професор, д.т.н.   _______________  ??????????

Студент гр. ???????              _______________  ?????????? 
 
 

2003

       Зміст

       Завдання ………………………………………………………………………..

    1.Загальні  відомості ……………………………………………………………..

    2.Вибір  методу інструментальних засобів  вирішення задач………………

    3.Функціональне  призначення програми …………………………………….

    4.Розробка  та опис логічної частини програми  ………………………………
    5.Керівництво  оператору …………………………………………………………
    6.Результати  обчислень ………………………………………………………….
    Висновки  …………………………………………………………………………….
    Література  …………………………………………………………………………..

          Додаток А

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

          Додаток B

             Блок-схема алгоритму ……………………………………………………… 
     
     
     
     
     
     
     
     
     
     
     
     
     
     

Анотація

       В даній курсовій роботі проведено  дослідження двох чисельних методів  вирішення диференційних рівнянь: Ейлера та Рунне-Кутта. Дослідження проводиться на прикладі заданого диференційного рівняння. Дається опис кожного з методів та задачі в цілому. 

1. Загальні відомості

     Найбільш  простим однокроковим методом, який потребує мінімальних затрат обчислювальних ресурсів, але дає змогу обчислювати результат із порівняно низькою точністю, є метод Ейлера.

     В цьому методі для оцінки наступної  точки на кривій використовується лише один лінійний член в формулі Тейлора,

,

де  визначається з початкового рівняння.

      Цей процес можна розповсюдити на наступні кроки:

.

     Метод Ейлера є методом першого порядку 

,

де  , , , - визначається як

для всіх і .

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

     Цей метод можна вдосконалити різними  способами.

     Найбільш  відомі два з них: виправлений  метод Ейлера і модифікований  метод Ейлера (в літературі зустрічаються  інші назви цих методів, наприклад, модифікований метод Ейлера й удосконалений метод ламаних).

Ітераційні  формули для цих методів мають  вигляд, відповідно:

і

де

.

     Це  методи другого порядку, їх похибка має третій ступінь, що досягається покращенням апроксимації похідної. Ідея полягає у спробі зберегти або оцінити член другого порядку у формулі Тейлора. Однак збільшення точності вимагає додаткових витрат машинного часу на обчислення . Ще більш висока точність може бути досягнута при обчисленні вищих похідних і збереженні більшої кількості членів ряду Тейлора. Такими методами є методи Рунге-Кутта.

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

.

     Аналогічно  обчисленню другої похідної в кінцево-різницевому  вигляді можна обчислити більш високі похідні: значення n-ї за значеннями попередньої (n-1)-ї.

     Метод Рунге-Кутта дає набір формул для обчислення координат внутрішніх точок, які потрібні для реалізації цієї ідеї. Оскільки існує ряд способів знаходження цих точок, то метод Рунге-Кутта обєднує цілий клас методів для розвязання диференціальних рівнянь першого порядку.

     Найбільш  розповсюджений класичний метод  четвертого порядку точності:

,

де

,

.

     Метод Ейлера і його модифікації ще називають методами Рунге-Кутта першого і другого порядку. Метод Рунге-Кутта має значно більш високу точність, що дозволяє збільшити крок розвязання. Його максималу величину визначає допустима похибка. Такий вибір часто здійснюється автоматично і включається як складова частина, вбудована в алгоритм, побудований за методом Рунге-Кутта.

     Раніше  було відзначено, що помилка зрізання при використанні методу Рунге-Кутта  n-го порядку . Обчислення верхніх границь для коефіцієнта с являє собою складну задачу, повязану з необхідністю оцінки ряду додаткових параметрів. Існує декілька способів для оперативного обчислення с. Найбільшого поширення набув екстраполяційний метод Річардсона (ще його називають методом Рунге), коли послідовно знаходять з кроком h і з кроком , а після цього прирівнюють отримані величини та визначають с з рівняння:

,

що відповідає точному значенню .

     Отримаємо оціночне співвідношення:

. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

       2.Вибір  методу інструментальних  засобів вирішення  задач. 

       Розв”язок даної задачі реалізовано на ЕОМ, причому було складено алгоритм та програму в середовищі Borland Delphi 7. Програма є досить простою та зрозумілою для користувача середнього рівня. Готову програму можна використовувати навіть на мінімальних системних параметрах процесора типу Intel P-100, 8 Мb ОЗУ та операційній системі MS-Windows 95. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

3. Функціональне призначення 

      Розроблена  програма дозволяє розв’язати вказане  диференційне рівняння методами Ейлера (прямим та зворотним) та Рунге-Кутта, порівняти  їх результати та визначити похибки:

,

де а, b, проміжок х та крок можна задавати в самій програмі.

      Результати  виводяться графічно (графік) та у текстовій  формі. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

       4. Розробка та  опис логічної частини програми  

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

       Кодування на мові Паскаль проводилося з  застосуванням інтуїтивно-зрозумілих назв змінних та процедур. Також відступи та табуляція дозволяє досить легко збагнути структуру програми.

       В інтерфейсі також не допущено зайвих елементів. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

       5. Керівництво оператору

       Для завантаження програми необхідно запустити  програмний файл Kurs.exe. При цьому зявиться вікно (рис. 1), де при виборі відповідного пункту меню вирішується задача по обраному методу.

       Графік  результуючої функції знаходиться у лівій частині вікна, а супутня інформація – у правій.

       Рисунок 1. Інтерфейс програми. 
 
 
 
 
 
 
 

6. Результати обчислень

Висновки

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

       Література 

    1. Самарський  А.А. Вступ в чисельні методи. - М.: Наука,

    1987. – 286 с.

    2.Квєтний Р.Н., Маліков В.Т. Обчислювльні методи та використання ЕОМ. Вища школа, 1989 – 55 с., 104 с.  
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    Додаток В - Лістинг програми

// Kurs.cpp : Defines the class behaviors for the application.

// 

#include "stdafx.h"

#include "Kurs.h" 

#include "MainFrm.h"

#include "ChildFrm.h"

#include ".\kurs.h"

#include "StepDlg.h" 

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif 

/////////////////////////////////////////////////////////////////////////////

// CKursApp 

BEGIN_MESSAGE_MAP(CKursApp, CWinApp)

      //{{AFX_MSG_MAP(CKursApp)

      ON_COMMAND(ID_APP_ABOUT, OnAppAbout)

      ON_COMMAND(ID_FILE_NEW, OnFileNew)

      ON_COMMAND(ID_METD1, OnMetd1)

      ON_COMMAND(ID_METD2, OnMetd2)

      ON_COMMAND(ID_METD3, OnMetd3)

      //}}AFX_MSG_MAP

      ON_COMMAND(ID_32777, On32777)

END_MESSAGE_MAP() 

/////////////////////////////////////////////////////////////////////////////

// CKursApp construction 

CKursApp::CKursApp()

: k1(0)

, k2(0)

, k3(0)

{

      // TODO: add construction code here,

      // Place all significant initialization in InitInstance

} 

/////////////////////////////////////////////////////////////////////////////

// The one and only CKursApp object 

CKursApp theApp; 

/////////////////////////////////////////////////////////////////////////////

// CKursApp initialization 

BOOL CKursApp::InitInstance()

{

      // Standard initialization

      // If you are not using these features and wish to reduce the size

Информация о работе Обчислювальні методи та застосування ЕОМ