Программа численного интегрирования

Автор: Пользователь скрыл имя, 03 Октября 2011 в 20:39, курсовая работа

Краткое описание

В данной пояснительной записке проводится описание последовательности шагов по составлению программы на алгоритмическом языке Turbo Pascal 7.0 и результаты применения этой программы для нахождения приближенного значения интеграла численным методом Симпсона и методом трапеций. Рассматриваются вопросы математической формулировки и алгоритмизации задачи, разработки блок-схемы алгоритма её решения, составления исходной Pascal-программы и реализации вычислений по составленной программе.

Оглавление

Введение…………………………………………………………………………4

Постановка задачи………………………………………………………………5
Математическая формулировка задачи………………………………………..7
Алгоритмизация задачи…………………………………………………………9
Идентификаторы программы…………………………………………………..12
Блок-схема алгоритма…………………………………………………………..13
Текст исходной программы………………………………………………………..
Результаты выполнения программы……………………………………………...
Анализ результатов………………………………………………………………...
Инструкция по работе с программой……………………………………………..
Заключение…………………………………………………………………………

Список использованных источников……………………………………………..

Файлы: 1 файл

Пояснительная записка к курсовой.docx

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

 

    1. Идентификаторы  программы
 

        Для указания соответствия обозначений переменных в формулах математической формулировки и их идентификаторов в программе сведем их в таблицу 1: 

      Обозначение параметров Смысл параметра
      В формулах В программе
      А a Левая граница  отрезка интегрирования (нижний предел интегрирования)
      В b Правая граница  отрезка интегрирования (верхний  предел интегрирования)
      N n Число интервалов разбиения отрезка интегрирования
      H h Длина интервала  разбиения
      x x Аргумент подынтегральной  функции
      dx h1 – метод Симпсона

      h2 – метод трапеций

      Приращение  аргумента x
      I S Значение интеграла
 
 

 

    1. Блок-схемы

    Блок-схема  алгоритма головной программы.

 

Блок-схема  алгоритма подпрограммы-процедуры  Simpson.

 

Блок-схема  алгоритма подпрограммы-процедуры  Trapeciya.

 

Блок-схема  алгоритма подпрограммы-процедуры  Okno.

 

Блок-схема  алгоритма подпрограммы-процедуры  Ramka.

 

Блок-схема  алгоритма подпрограммы-процедуры  Spravka.

 

Блок-схема  алгоритма подпрограммы-процедуры  Emenu. 
 
 
 
 
 
 
 
 
 
 
 

Блок-схема  алгоритма подпрограммы-процедуры  Exitfrom. 
 
 

 

    1. Текст исходной программы
 

      program Kursovoi_integeral;

      Uses crt,dos;

      Label 11,12,m1;

            Type

                  mas=Array[1..4] of String[50];

                  Const

                  menu:mas=('Spravka',

                       'Metod Simpsona',

                   'Metod trapecii',

                   'Vixod'); 

      var

      i,s,pos: Integer;

      c,kod,k10:Char;

      pass: String;

      ch: char; 

      function f(x:real): real;

      begin

      f:=exp(sqr(x))

      end;

      {____________________} 

      {-----------Cursorcursor init-----------}

      Procedure CursorSize(Size: word);

      var Regs: Registers;

      Begin

      With Regs do

      Begin AH:=$01;

            CH:=Hi(size);

            Cl:=Lo(Size);

            intr($10,Regs);

            end;

      end;

      {-----------Cursor init------------------} 
       

      {-----------Cursor OFF-------------------}

      procedure HiddeCursor;

      begin

      CursorSize($2000);

      end;

      {-----------Cursor OFF-------------------} 
       

      {-----------Cursor ON--------------------}

      Procedure NormCursor;

      begin

      CursorSize($0607);

      end;

      {-----------Cursor ON--------------------} 

       

      {-----------Create of Frame--------------}

      procedure ramka(x1,y1,x2,y2: byte);

      const

      a=#201;

      b=#205;

      c=#187;

      d=#186;

      e=#188;

      f=#200;

      Begin

      Textcolor(14);

      Textbackground(0);

      Clrscr;

      gotoxy(x1,y1);

      write(a);

      for i:=x1+1 to x2-1 do write(b);

      write(c);

      for i:=y1+1 to y2-1 do

      Begin

      gotoxy(x1,i);

      write(d);

      gotoxy(x2,i);

      write(d);

      End;

      Gotoxy(x1,y2);

      write(f);

      for i:=x1+1 to x2-1 do write(b);

      write(e);

      End; 
       

      Procedure Okno(x1,y1,x2,y2,Fcolor,Tcolor:byte);

      Begin

      Clrscr;

      TextMode(3);

      HiddeCursor;

      Ramka(x1,y1,x2,y2);

      Window(x1+1,y1+1,x2-1,y2-1);

      textbackground(Fcolor);

      textcolor(Tcolor);

      Clrscr;

      Gotoxy(1,1);

      End; 
       

      Procedure Zastavka;

      Begin

      Okno(1,1,79,23,5,14);

      gotoxy(3,1);

      writeln(' ');

      writeln('                 Ministerstvo obrazovaniya Respubliki Belarus');

      writeln('                Belorusskii nacionalnji texnicheskii universitet');

      gotoxy(1,6);

      writeln('                       Programma vichisleniya integrala');

      writeln;

      writeln;

      writeln;

      writeln;

      writeln('                              Kursovaya rabota');

      writeln('                         po discipline informatika ');

      gotoxy(1,15);

      writeln('Ispolnitel                                                   Semenova M. V.');

      writeln('                                                             gr. 102528');

      writeln('Rukovoditel                                                  Rinkevich V. P.');

      writeln;

      writeln;

      writeln('                                 Minsk 2010');

      window(0, 0, 80, 25);

      gotoxy(40,23);

      Textcolor(13);

      gotoxy(1,79);

      writeln('Dlay prodolzheniya nazhmite lubyu klavishy...');

      repeat until keypressed;

      while keypressed do ch:=readkey;

      clrscr;

      End; 
       

      Procedure Spravka;

      var

      ch: char;

      Begin

      Okno(1, 1, 79, 23, 5, 14);

      Writeln('==================================>Spravka<==================================');

      Writeln('     Dannaya programma pozvolyaet vichislyat integral');

      Writeln('I=exp(sqrt(x))dx metodom Simpsona i metodom trapecii dlya zadannix');

      Writeln('znachenii predelov integrirovaniya a - niznii i b - verxnii.');

      Writeln('     Posle perexoda v menu vibirite klavishami upravleniya kursora');

      writeln('neobxodimii punkt.');

      Writeln('     Pri vibore metoda Simpsona ili metoda trapecii vvedite po zaprosy');

      Writeln('programmi celochislennie znacheniya predelov integrirovaniya i chislo');

      Writeln('intervalov integrirovaniya.');

      Writeln('     Dlya integrala s drugoi podintegralnoi funkciei sleduet');

      Writeln('zapisat ee v pravoi chaste virazeniya dlya vichisleniya znacheniya funkcii');

      Writeln('v podprogramme-funkcii f v razdele obyavlenii golovnoi programmi.');

      Window(2,2,79,24);

      Textcolor(13);

      gotoxy(5,20);

      write('          Dlya vozvrata v menu nazhmite lubyu klavishy...');

      ch:=readkey;

      End; 
       

      Procedure Emenu;

      Begin

      clrscr;

      Okno(15,9,55,17,5,7);

      For i:=1 to 4 do

      begin

      Gotoxy(15,i+1);

         if i=pos then Textbackground(8) else Textbackground(5);

         write(Menu[i]);

      end;

      End;

             procedure Exitfrom;

             Begin

             writeln;

             gotoxy(50,26);

      Writeln('Dlya prodolzeniya vichisleniya nazmite - Y, dlya vixoda - N');

      ch:=readkey;

      if ch =#121 then Emenu else Zastavka;

      End; 

      Procedure Simpson;

      label m1;

      Var

      i,n : byte;

      a,b,h,h1,s,x : real;

      ch: char;

      Begin

      Okno(1, 1, 79, 23, 5, 14);

      NormCursor;

      Writeln('==================>Vichislenie integrala metodom Simpsona<==================');

      Writeln;

      Writeln;

      m1:

      Writeln('          Vvedite predelu integrirovaniya a i b');

      Write('               Niznii pridel a=');

      read(a);

      Write('               Verxnii pridel b=');

      read(b);

      Write('          Vvedite chislo intervalov integrirovaniya N=');

      read(n);

      Begin

      writeln;

      Writeln('          Znacheniya vvedeny pravilno(Y/N)?');

      ch:= readkey;

      If ch=#110 then

      begin

      writeln;

      Writeln('          Dannie vvedeni neverno. Povtoryaem vvod');

      writeln;

      writeln;

      goto m1;

      end;

      h:=(b-a)/n;

      h1:=h/2;

Информация о работе Программа численного интегрирования