Разработать программу нахождения корня уравнения методом Симпсона

Автор работы: Пользователь скрыл имя, 14 Мая 2012 в 09:18, курсовая работа

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

Pascal — это императивный язык программирования, разработанный Никлаусом Виртом в 1970 в качестве языка обучения структурному программированию. Название языку дано в честь выдающегося французского математика, физика, литератора и философа Блеза Паскаля. Первоначально язык компилировался в байт-код, подобно языку Java. Особенностями языка являются строгая типизация и наличие средств структурного (процедурного) программирования. Паскаль был одним из первых таких языков. По мнению Н. Вирта, язык должен способствовать дисциплинированию программирования, поэтому, наряду со строгой типизацией, в Паскале сведены к минимуму возможные синтаксические неоднозначности, а сам синтаксис интуитивно понятен даже при первом знакомстве с языком.

Содержание

Введение………………………………………………………………3
1 Постановку задачи…………………………………………………4
2 Математическую модель для решения задачи………….………5
3 Блок-схему решения задачи, выполненную с учетом требований ГОСТ…………………………………………………………………………..9
4 Исходный текст программы на Pascal 7.0 с обязательными комментариями………………………………………………………………20
5 Руководство пользователя………………………………………23
6 Результаты работы программы для различных вариантов…………………………………………………………………….24
7 Тестовые примеры для всех ветвей работы программы Выводы по курсовой работе………………………………………………………..
Выводы по курсовой работе…………………………..………..28
Список использованной литературы………………..…………….29

Вложенные файлы: 1 файл

курсовая по вс.doc

— 3.99 Мб (Скачать файл)

            3) Функция simpson - вычисляет интеграл методом Симпсона;

            4) Процедура norm - вычисляет  порядок   числа,  необходимый  для

построения  графика функции с учётом масштаба;

            5)  Процедура  out_gr  -  строит  график  функции  на  экране  а

графическом режиме с учётом масштаба.

        Основная (главная) программа должна осуществлять ввод значения  границ отрезков, вызов функций и процедур вычисления и вывод результатов на экран. 
 
 
 
 
 
 

3 Блок-Схема Алгоритма

     Рисунок 1 - Основная программа.

       

      
 

      
 
 
 

     Рисунок 2 - Function f.

        

     Рисунок 3 - Function simpson

 

     
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 

      Рисунок 4 - Procedure norm. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Рисунок 5 - Procedure out_grp.

       
 
 

 
 
 
 

 
 
 
 
 
 
 
 
 
 

 

     Исходный  Текст Программы На Pascal 7.0 С Комментариями.

     program kursov;

     uses crt,graph;

     var a,b:real; { Границы отрезка }

      r,r2:real; { Предыдущее и текущее приближенные значения интеграла}

       n:integer; { Счетчик }

     function f(x:real):real; { Интегрируемая функция }

     begin

       f:=(1/x)*ln(x+1);

     end;

     function simpson(a,b:real;n:integer):real;

     var s:real; { Полученная сумма }

       h:real; { Шаг }

       m:integer; { Счетчик }

     mn:integer; { Очередной множитель }

     begin

       h:=(b-a)/(n-1);  { Рассчитывается шаг }

       s:=f(a)+f(b)/4; { Начальное значение шага }

       mn:=4; { Первый мнодитель - 4 }

       for m:=1 to n-2 do begin

         s:=s+mn*f(a+h*m);

         if (mn=4) then mn:=2 else mn:=4; { Именение мноителя 2<>4 }

     end;

       simpson:=s*h/3; end; { Возвращается вычисленное значение }

     { Процедура вычисления порядка  числа }

     procedure norm(a:real);

     var n:real;

     begin

     { Если число слишком мало - возвращается  ноль }

       if (a<0.00001) then n:=0

       else begin

         if (a<1) then begin

           n:=1;

           repeat

             a:=a*10;

             n:=n/10;

           until (trunc(a)<>0);

         end else begin

     { Если число больше единицы  }

           n:=1;

           repeat

             a:=a/10;

             n:=n*10;

           until (trunc(a)=0); end; end;

       a:=n;

     end;

     { Построение графика функции }

     procedure out_grp(xmin,xmax,ymin,ymax:real);

     var

       drv,mode:integer;

       mx,my:real;  { Масштабы по осям }

       xx,yy:real; { Текущие координаты }

       sx:real; { Шаг по оси X }

     dltx,dlty:integer; { Приращение на графике при смещении графика }

       s:string; { Строка }

     begin

     { Инициализация графики }

       drv:=VGA;

       mode:=VGAHi;

       initgraph(drv,mode,'');

     { Выяснение порядков минимумов и максимумов }

       norm(xmax);

       norm(ymax);

       norm(ymin);ymin:=ymin/10;

       norm(xmin);ymin:=ymin/10;

       if (xmin/xmax)>0.01 then dltx:=20 else dltx:=0;

       if (ymin/ymax)>0.01 then dlty:=20 else dlty:=0;

     { Расчет масштабов }

       mx:=500/(xmax-xmin);

       my:=400/(ymax-ymin);

     { Расчет приращения по X }

       sx:=(xmax-xmin)/550;

     { Вывод системы координат }

       settextjustify(1,1);

       xx:=xmin;

       repeat

         setcolor(1);

         line(trunc(40+mx*(xx-xmin)+dltx),20,trunc(40+mx*(xx-xmin)+dltx),469);

         str(xx:4:2,s);

         setcolor(11);

         outtextxy(trunc(40+mx*(xx-xmin)+dltx),475,s);

         xx:=xx+50*sx;

       until (xx>(xmax+50*sx));

       yy:=ymin+(ymax-ymin)/20;

       repeat

         setcolor(1);

         line(41,trunc(470-my*(yy-ymin)-dlty),630,trunc(470-my*(yy-ymin)-dlty));

         str(yy:4:2,s);

         setcolor(11);

         outtextxy(20,trunc(470-my*(yy-ymin)-dlty),s);

         yy:=yy+(ymax-ymin)/10;

       until (yy>(ymax+(ymax-ymin)/10));

       line(40,0,40,480);

       line(0,470,640,470);

       line(40,0,38,10);

       line(40,0,42,10);

       line(640,470,630,472);

       line(640,470,630,468);

     { Вывод графика }

       xx:=xmin;

       repeat

         yy:=f(xx);

     putpixel(trunc(40+mx*(xx-xmin)+dltx),trunc(470-my*(yy-ymin)-dlty),14);

         xx:=xx+sx;

       until (xx>xmax);

       outtextxy(300,10,' Press ESC to continue ');

       outtextxy(220,50,'f=(1/x)/ln(x+1)');

       outtextxy(30,10,'y');

       outtextxy(630,475,'x');

       settextstyle(0,0,2); setcolor(12); outtextxy(300,70,'График функции);

       repeat until (readkey=#27);

       closegraph;

     end;

     { Основная программа }

     begin

       clrscr;

       a:=1;

       b:=25;

     { Выводится график функции }

       out_grp(a,b,f(b),f(a));

     { Вычисляется интеграл по методу  Симпсона }

       n:=3;

       r:=simpson(a,b,n); { Начальное значение }

       repeat

         r2:=r; { Запоминается предыдущее значение }

         n:=n+2;  { Увеличивается количество шагов }

         r:=simpson(a,b,n); { Рассчитывается новое значение } 

     until (abs(r-r2)<0.00001); );{ Повторяется до достижения необходимой

                                                    точности }

     { Вывод результатов }

       writeln;

       writeln(' Резльтат по методу Симпсона равен: ',r:6:3);

       writeln(' dla для получения необходимой точности интервал был разбит на ');

         writeln(n, 'отрезков');

       readln; end.                                                                                                                                                                                                                                                                                                                                                                                           
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Руководство пользователя. 

     После запуска программы выводиться график функции. После нажатия клавиши ESC отображается значение интеграла, полученное заданным методом Симпсона.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     Результаты  работы программы для различных  вариантов                                                                                  

     Результат по методу Симпсона равен:   -0,546

Для получения необходимой точности интервал был разбит на 23 отрезка.

       Анализ полученных в ходе работы  программы результатов говорит  о  том, что поставленная задача успешно решается. Совершенным является  метод  Симпсона,  который позволяет точно  интегрировать  многочлен  второй   производной   и   даже   некоторые многочлены третьей степени,  поэтому  он  требует  почти  в  2  раза  меньше количества интервалов для получения результата.

     

                      

     Выводы. 

     В процессе выполнения данной курсовой работы получил навыки работы с языком программирования Турбо-Паскаль. Данная работа выполнена в соответствии с заданием и в полном объёме.

     Освоил  работу в графическом режиме Pascal 7.0. Закрепил свои знания в работе с процедурами и функциями. В применение основных свойств языка программирования. Я узнал о определённых преимуществах программирования.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Информация о работе Разработать программу нахождения корня уравнения методом Симпсона