2.3. Тестовий приклад

Методом Галеркіна знайти наближений розв’язок рівняння,

, (11)

що задовольняє крайовим умовам

. (12)

Розв’язання:

Оберемо в якості системи базисних функцій (0, 1, 2, 3, 4) наступні тригонометричні функції:

, , , , .

Ці функції лінійно незалежні на відрізку , причому функція  задовольняє крайовій умові (12), а інші функції – нульовим крайовим умовам. Будемо шукати розв’язок у вигляді

.

Знаходимо ( = 0, 1, 2, 3, 4):

,

,

,

,

,

Обраховуємо коефіцієнти системи (10), використовуючи наступні позначення:

, ,

і враховуючи при цьому ортогональність системи тригонометричних функцій

(1, , , , , . . .)

, ,

, , , ,

, , , ,

, , , ,

, , , .

Виконуючи відповідні скорочення, приходимо до системи

з якої одержуємо , , . Таким чином маємо

.

В таблиці 1 наведено для порівняння значення отриманого наближеного розв’язку і точного розв’язку

Наближений і точний розв’язок задачі (11), (12)

Таблиця 1:

-

0

1.429 2 3.714

1.368 2 3.718

Приклад розв'язання крайової задачі методом Галеркіна в середовищі Mathcad

Постановка задачі:

Серед усіх функцій y(x), визначених на інтервалі [a;b] і задовольняючих крайовим умовам y(a)=0 і y(b)=0 потрібно знайти таку, яка задовольняла б диференціальному рівнянню p(x)y''+q(x)y'+r(x)y+k(x)=0

Вихідні дані:

Границі інтервала:

Функція p(x):

Функція q(x)

Функція r(x)

Функція k(x):

Розрахункові формули:

Алгебраїчні базисні функції:

Число членів у сумі Рітца

Формування систем лінійних алгебраїчних рівнянь метода Галеркіна для випадку алгебраїчних базисних функцій:

A_al_2:= [на дискеті, Галеркін.mcd]

Число членів у сумі Рітца

A_al_3:= [на дискеті, Галеркін.mcd]

Розв'язання задачі

Розв'язання систем рівнянь - визначення коефіцієнтів сум Рітца:
Номер останнього утримуваного члена суми Рітца

Алгебраїчні базисні

функції:

Задання кроку табулювання сум Рітца:

Побудова розв'язків у вигляді сум Рітца:
Алгебраїчні базисні функції:

Результати отримані за допомогою створеної програми



ВИСНОВОК

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

Чисельні методи один із напрямів розробки пошуку оптимальних розв’язків математичних задач та пошуку саме того методу, який би давав найбільш точний результат. Моя робота присвячена одному з методів пошуку розв’язку лінійної крайової задачі – методу Галеркіна. Даний метод досить зручний для пошуку розв’язку у вигляді аналітичного виразу.

В першій частині курсового проекту розглянута постановка задачі, в якій наведено опис методу. В математичній моделі описано безпосередньо сам метод Галеркіна та його основні принципи.

Друга частина мого курсового проекту починається з опису алгоритму методу Галеркіна для пошуку розв’язку лінійної крайової задачі. В алгоритмі містяться головні кроки пошуку розв’язку лінійної крайової задачі за даним мені методом. За цим алгоритмом наведений тестовий приклад, а також написана програма в середовищі Microsoft Visual C++, текст якої знаходиться в додатку А. До даного методу складена блок-схема алгоритму.

 

 


СПИСОК ВИКОРИСТАНОЇ ЛІТЕРАТУРИ

 

1. Капченова Н.В., Марон И.А. Вычислительная математика в примерах и  задачах. – М: Наука, 1972. – 369 С.

2.Демидович Б.П., Марон И.А. Основы вычислительной математики. - М.: Физматгиз, 1960. - 659с.

3.Калиткин Н.Н. Численные методы. - М.: Наука, 1978. - 512с.

4. Бахванов Н. С., Жидков Н.П. Кобельков Г.М. Чисельные методы електронный вариант учебника.

5. Белашов В. Ю., Чернова Н. М. Эффективные алгоритмы и программы вычислительной математики. Магадан: СВКНИИДВОРАН, 1997. 160 с.

6. Культін Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. – СПб: BHV- Санкт-Петербург, 1999. – 234с.


ДОДАТОК А

ТЕКСТ ПРОГРАМИ МОВОЮ Microsoft Visual C++

MainFrm.cpp

#include "StdAfx.h"

#include "example.h"

#include "MainFrm.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[] = __FILE__;

#endif

IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

END_MESSAGE_MAP()

static UINT indicators[] =

{

ID_SEPARATOR,

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

};

CMainFrame::CMainFrame()

{

}

CMainFrame::~CMainFrame()

{

}

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFrameWnd::OnCreate(lpCreateStruct) == -1)

return -1;

if (!m_wndToolBar.Create(this) ||

!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("Failed to create toolbar\n");

return -1;

}

if (!m_wndStatusBar.Create(this) ||

!m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

{

TRACE0("Failed to create status bar\n");

return -1;

}

m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |

CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndToolBar);

return 0;

}

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)

{

return CFrameWnd::PreCreateWindow(cs);

}

#ifdef _DEBUG

void CMainFrame::AssertValid() const

{

CFrameWnd::AssertValid();

}

void CMainFrame::Dump(CDumpContext& dc) const

{

CFrameWnd::Dump(dc);

}

#endif

MainFrm.h

#if!defined(AFX_MAINFRM_H__9A49CF0A_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_)

#define AFX_MAINFRM_H__9A49CF0A_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif

class CMainFrame : public CFrameWnd

{

protected:

CMainFrame();

DECLARE_DYNCREATE(CMainFrame)

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CMainFrame)

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

//}}AFX_VIRTUAL

// Implementation

public:

virtual ~CMainFrame();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected: // control bar embedded members

CStatusBar m_wndStatusBar;

CToolBar m_wndToolBar;

// Generated message map functions

protected:

//{{AFX_MSG(CMainFrame)

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

// afx_msg void OnDemoAnalit();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

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

//{{AFX_INSERT_LOCATION}}

// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif //!defined(AFX_MAINFRM_H__9A49CF0A_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_)

StdAfx.h

// stdafx.h : include file for standard system include files,

// or project specific include files that are used frequently, but

// are changed infrequently

//

#if!defined(AFX_STDAFX_H__9A49CF08_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_)

#define AFX_STDAFX_H__9A49CF08_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_

#if _MSC_VER >= 1000

#pragma once

#endif // _MSC_VER >= 1000

#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers

#include <afxwin.h> // MFC core and standard components

#include <afxext.h> // MFC extensions

#include <afxdisp.h> // MFC OLE automation classes

#ifndef _AFX_NO_AFXCMN_SUPPORT

#include <afxcmn.h> // MFC support for Windows Common Controls

#endif // _AFX_NO_AFXCMN_SUPPORT

//{{AFX_INSERT_LOCATION}}

// Microsoft Developer Studio will insert additional declarations immediately before the previous line.

#endif //!defined(AFX_STDAFX_H__9A49CF08_0006_11D3_A7F6_F5D97F5F2E6D__INCLUDED_)


Информация о работе «Метод Галеркіна пошуку розв’язку лінійної крайової задачі»
Раздел: Разное
Количество знаков с пробелами: 17449
Количество таблиц: 53
Количество изображений: 5

0 комментариев


Наверх