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

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

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

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

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

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

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

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

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

Файлы: 1 файл

Курсова.doc

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

      //  of your final executable, you should remove from the following

      //  the specific initialization routines you do not need. 

// Enable3dControls();   // Call this when using MFC in a shared DLL 

      // Change the registry key under which our settings are stored.

      // TODO: You should modify this string to be something appropriate

      // such as the name of your company or organization.

      SetRegistryKey(_T("Local AppWizard-Generated Applications")); 
 

      // To create the main window, this code creates a new frame window

      // object and then sets it as the application's main window object. 

      CZast dlg;

      dlg.Create(IDD_DIALOG2);

      dlg.ShowWindow(SW_SHOW);

      dlg.RedrawWindow();

      Sleep(1000);

      dlg.ShowWindow(SW_HIDE);

      CMDIFrameWnd* pFrame = new CMainFrame;

      m_pMainWnd = pFrame; 

      // create main MDI frame window

      if (!pFrame->LoadFrame(IDR_MAINFRAME))

            return FALSE; 

      // try to load shared MDI menus and accelerator table

      //TODO: add additional member variables and load calls for

      // additional menu types your application may need.  

      HINSTANCE hInst = AfxGetResourceHandle();

      m_hMDIMenu  = ::LoadMenu(hInst, MAKEINTRESOURCE(IDR_MAINFRAME));

      m_hMDIAccel = ::LoadAccelerators(hInst, MAKEINTRESOURCE(IDR_MAINFRAME)); 
 
 

      // The main window has been initialized, so show and update it.

      pFrame->ShowWindow(m_nCmdShow);

      pFrame->UpdateWindow(); 

      k1 = 15;

      k2 = 16;

      k3 = 10; 

      return TRUE;

} 

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

// CKursApp message handlers 

int CKursApp::ExitInstance()

{

      //TODO: handle additional resources you may have added

      if (m_hMDIMenu != NULL)

            FreeResource(m_hMDIMenu);

      if (m_hMDIAccel != NULL)

            FreeResource(m_hMDIAccel); 

      return CWinApp::ExitInstance();

} 

void CKursApp::OnFileNew()

{

      CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd); 

      // create a new MDI child window

      pFrame->CreateNewChild(

            RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);

} 
 
 

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

// CAboutDlg dialog used for App About 

class CAboutDlg : public CDialog

{

public:

      CAboutDlg(); 

// Dialog Data

      //{{AFX_DATA(CAboutDlg)

      enum { IDD = IDD_ABOUTBOX };

      //}}AFX_DATA 

      // ClassWizard generated virtual function overrides

      //{{AFX_VIRTUAL(CAboutDlg)

      protected:

      virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

      //}}AFX_VIRTUAL 

// Implementation

protected:

      //{{AFX_MSG(CAboutDlg)

            // No message handlers

      //}}AFX_MSG

      DECLARE_MESSAGE_MAP()

}; 

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

      //{{AFX_DATA_INIT(CAboutDlg)

      //}}AFX_DATA_INIT

} 

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

      CDialog::DoDataExchange(pDX);

      //{{AFX_DATA_MAP(CAboutDlg)

      //}}AFX_DATA_MAP

} 

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

      //{{AFX_MSG_MAP(CAboutDlg)

            // No message handlers

      //}}AFX_MSG_MAP

END_MESSAGE_MAP() 

// App command to run the dialog

void CKursApp::OnAppAbout()

{

      CAboutDlg aboutDlg;

      aboutDlg.DoModal();

} 

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

// CKursApp message handlers 

void CKursApp::OnMetd1()

{

      SP_Eylr(); 

      CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd); 

      // create a new MDI child window

      CMDIChildWnd* ch=pFrame->CreateNewChild(

            RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);

      ch->SetTitle("╠хЄюф  ┼щыхЁр");

} 

void CKursApp::OnMetd2()

{

      SP_ZEylr();

      CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd); 

      // create a new MDI child window

      CMDIChildWnd* ch=pFrame->CreateNewChild(

            RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);

      ch->SetTitle("╟тюЁюЄэшщ  ьхЄюф ┼щыхЁр");

} 

void CKursApp::OnMetd3()

{

      SP_Rung();

      CMainFrame* pFrame = STATIC_DOWNCAST(CMainFrame, m_pMainWnd); 

      // create a new MDI child window

      CMDIChildWnd* ch=pFrame->CreateNewChild(

            RUNTIME_CLASS(CChildFrame), IDR_MAINFRAME, m_hMDIMenu, m_hMDIAccel);

      ch->SetTitle("╠хЄюф  ╨єэух-╩єЄЄр"); 

} 

void CKursApp::SP_Eylr()

{

      double fromx,tox;

      double M0,M1,M2;

      int i; 

      CStepDlg dlg;//(IDD_DIALOG3);

      dlg.DoModal();

      if (h==0) h = 0.05;

      fromx= 0;

      tox= 1;

      n = (tox-fromx)/h + 1;

      m_ay[0]=1; 

      M0 = f(m_ax[0],m_ay[0]);

      M1 = f_x(m_ax[0],m_ay[0]);

      M2 = f_y(m_ax[0],m_ay[0]); 

      for (i=0;i<n;i++) m_ax[i] = fromx + i*h;

      for (i=1;i<n;i++){

            m_ay[i] = m_ay[i-1]+h*f(m_ax[i-1],m_ay[i-1]); 

            M0 = max(M0,f(m_ax[i],m_ay[i]));

            M1 = max(M1,f_x(m_ax[i],m_ay[i]));

            M2 = max(M2,f_y(m_ax[i],m_ay[i]));

      } 

      err=(M1+M0*M2)/2*h*h;

} 

void CKursApp::SP_Rung()

{

      double fromx,tox;

      double M0,M1,M2;

      int i;

      double k0,k1,k2,k3; 

      CStepDlg dlg;//(IDD_DIALOG3);

      dlg.DoModal();

      if (h==0) h = 0.05;

      fromx= 0;

      tox= 1;

      n = (tox-fromx)/h + 1;

      m_ay[0]=1; 

      M0 = f(m_ax[0],m_ay[0]);

      M1 = f_x(m_ax[0],m_ay[0]);

      M2 = f_y(m_ax[0],m_ay[0]); 

      for (i=0;i<n;i++) m_ax[i] = fromx + i*h;

      for (i=1;i<n;i++){

            k0=h*f(m_ax[i-1],m_ay[i-1]);

            k1=h*f(m_ax[i-1]+h/2,m_ay[i-1]+k0/2);

            k2=h*f(m_ax[i-1]+h/2,m_ay[i-1]+k1/2);

            k3=h*f(m_ax[i-1]+h,m_ay[i-1]+k2);

            m_ay[i] = m_ay[i-1]+(k0+2*k1+2*k2+k3)/6; 

            M0 = max(M0,f(m_ax[i],m_ay[i]));

            M1 = max(M1,f_x(m_ax[i],m_ay[i]));

            M2 = max(M2,f_y(m_ax[i],m_ay[i]));

      } 

      err=(M1+M0*M2)/2*h*h*h;

} 

void CKursApp::SP_ZEylr()

{

      double fromx,tox;

      double M0,M1,M2;

      int i;

      CStepDlg dlg;//(IDD_DIALOG3);

      dlg.DoModal();

      if (h==0) h = 0.05;

      fromx= 0;

      tox= 1;

      n = (tox-fromx)/h + 1;

      m_ay[0]=1;

      M0 = f(m_ax[0],m_ay[0]);

      M1 = f_x(m_ax[0],m_ay[0]);

      M2 = f_y(m_ax[0],m_ay[0]);

      for (i=0;i<n;i++) m_ax[i] = fromx + i*h;

      for (i=1;i<n;i++){

            m_ay[i] = m_ay[i-1]+h*f(m_ax[i-1],fy(m_ax[i],f(m_ax[i-1],m_ay[i-1])));

            M0 = max(M0,f(m_ax[i],m_ay[i]));

            M1 = max(M1,f_x(m_ax[i],m_ay[i]));

            M2 = max(M2,f_y(m_ax[i],m_ay[i]));

      }

      err=(M1+M0*M2)/2*h*h;

}

void CKursApp::On32777()

{

      CHelp dlg;

      dlg.DoModal();

} 

  Додаток A – Алгоритм роботи програми 

 
 
 

 

                               

                                     

 

 

 

 
 
 

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