Суммирование рядов

Автор работы: Пользователь скрыл имя, 22 Января 2013 в 08:05, курсовая работа

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

Решение математических задач с помощью вычислительной техники очень распространено в наше время. Для вычисления часто используются основные элементарные функции, такие как синус, косинус, тангенс, и т.д.
Однако алгоритмы нахождения функций скрыты от пользователя.
В данной программе описан алгоритм для нахождения функции Arctg реализованый через ряды Тейлора.

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

1. Введение 3
2. Постановка задачи 4
3. Руководство пользователя 5
4. Руководство программиста 6
5. Заключение 8
6. Литература 8
7. Приложение 8

Файлы: 1 файл

Otchet.docx

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

Министерство образования и  науки Российской Федерации

Федеральное государственное бюджетное образовательное  
учреждение высшего профессионального образования

Нижегородский государственный университет  им. Н.И. Лобачевского

 

 

Факультет вычислительной математики и кибернетики

 

 

 

 

 

 

 

 

 

 

Отчет по лабораторной работе №1

 

Суммирование рядов

 

 

 

 

 

Выполнил: студент группы 8101

_______________ Артемов К.С.

            Подпись

 

Научный руководитель:

Доцент кафедры МО ЭВМ

________________ Баркалов А.В.

            Подпись

 

 

 

 

 

 

 

 

 

Нижний Новгород

2012

 

Содержание

Содержание

 

  1. Введение 3
  2. Постановка задачи 4
  3. Руководство пользователя 5
  4. Руководство программиста 6
  5. Заключение 8
  6. Литература 8
  7. Приложение 8

 

 

Введение

Решение математических задач с помощью вычислительной техники очень распространено в  наше время. Для вычисления часто  используются основные элементарные функции, такие как синус, косинус, тангенс, и т.д.

Однако алгоритмы нахождения функций скрыты от пользователя.

В данной программе описан   алгоритм для нахождения функции Arctg реализованый через ряды Тейлора.

  

Постановка  задачи

Требуется разработать  программу, позволяющую выполнять  расчёт значений для некоторого набора функций в заданной точке с  вычислением погрешности за счёт разложения этих функций в ряд Тейлора.

Программа должна:

 

Расчет оценки значения выбранной функции выполняется до исчерпания введенного числа слагаемых. По результатам расчета программа должна вывести следующую информацию:

Аргумент, Значение функции, Идеальное Значение Функции (полученное с использованием встроенных математических функций Pascal) и разница значений между идеальным значением и значением функции. 

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

  1. Запустите файл Asdsad.exe
  2. На экране появиться надпись:

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

Аналогичные действия происходят при вводе конечного аргумента.

После чего . Программа выведет сводную таблицу, где будет показаны аргумент функции её значение, эталоное значение, разница значений..

 

 

Руководство программиста

Описание  структуры программы

Программа состоит из 1 дополнительных модуля, а также одной функции. Ниже приведен список используемого модуля и процедуры и их описание.

Модули:

  • Myfunc – используется для вычисления арктангенса через ряд Тейлора
  • Math – используется для вычислений гиперболических функций посредством Паскаля.

Описание структур данных

type

  index=1..nPoint;

  vector=array[index] of real;

 

const

  nPoint=10; количество точек

 

var

  a,b,h:real; //граница области уменшения аргумента и шаг

  i,n:integer; количество слагаемых

  diference,arg,func:vector; разница значений, аргумент, функция

  x:double;

Описание алгоритмов

Алгоритмы для вычисления функций, реализованных в программе, расположены в отдельном модуле. Так как способ вычисления схож для всех функций, то  в данном блоке будет описан общий алгоритм с комментариями, где и для какой функции необходимо что-то вставить.

Обозначение: <…>  - здесь необходимо вставить название функции.

 

Арктангенс :

Вводим значение аргумента  функции присваиваем его к переменным и высчитываем первоначальное значение функции

  x:=arg;

   d:=x;

   S:=x;

   for k := 2 to n do

     begin

     d:=(-1)*d*x*x;

     c:=d/(2*k-1);

     s:=s+c;

     result:=s;

 Далее высчитываем  шаг функции  h:=(b-a)/(nPoint-1);

И присваиваем значения каждому  элементу массива

arg[i]:=a+(i-1)*h;

      func[i]:=MyFunc(arg[i]);

      Diference[i]:=abs(arctan(arg[i])-func[i]);

 

Заключение

В результате работы была написана программа, позволяющая вычислить значения функции арктангенс без помощи встроенных.

 

 

 

По ходу исследования было выяснено, что значения арктангеса вычисляемые при помощи разложения рядов Тейлора не так уж далеки от  «идеала» . 

Литература

  1. Грызлов В.И., Грызлова Т.П. «Турбо Паскаль 7.0.» - М.: ДМК, 1998. - 400 с., ил.
  2. Лекции по курсу «Методы программирования» на факультете ВМК ННГУ им. Лобачевского за 1 семестр.
  3. Кетков Ю.Л, Кетков А.Ю. «Свободное программное обеспечение. FREE PASCAL для студентов и школьников» - БХВ-ПЕТЕРБУРГ: - 2011, - 376 с.,

 

 

Приложение. Фрагменты исходного кода программы

 

program asdsad;

 

{$APPTYPE CONSOLE}

 

uses

  SysUtils,

  Math;

 

const

  nPoint=10;

type

  index=1..nPoint;

  vector=array[index] of real;

 

 

var

  a,b,h:real;

  i,n:integer;

  diference,arg,func:vector;

  x:double;

 

 

 

 

 

   function Myfunc(arg:real):real;

   var s,d,c:real;

   k:integer;

   begin

   x:=arg;

   d:=x;

   S:=x;

   for k := 2 to n do

     begin

     d:=(-1)*d*x*x;

     c:=d/(2*k-1);

     s:=s+c;

     result:=s;

     end;

   end;

 

 

 

begin

writeln('Enter the calculate argument at the start of the function');

readln(a);

   while (a <=-1) or (a >= 1) do

      begin

        writeln('Input Error. Please, Try again.');

       readln(a);

      end;

      writeln ('enter  the argument at the end of the function');

      readln(b);

      while (b < -1) or (b >= 1) do

      begin

        writeln('Input Error. Please, Try again.');

       readln(b);

      end;

    writeln('--------------------------------------------------');

    writeln('|  Step  |   Value       |Ideal Value |Difference|          ');

    writeln('-------------------------------------------------');

 

     for i := 1 to nPoint do

     begin

     n:=10;

      h:=(b-a)/(nPoint-1);

      arg[i]:=a+(i-1)*h;

      func[i]:=MyFunc(arg[i]);

      Diference[i]:=abs(arctan(arg[i])-func[i]);

     end;

 

   for i := 1 to nPoint do

   begin

   writeln('| ',arg[i]:4:4,' |  ',func[i]:4:8,'   |',arctan(arg[i]):4:8,'  |',Diference[i]:4:8,'|');

   writeln('--------------------------------------------------');

end;

readln;

end.




Информация о работе Суммирование рядов