Написание текста программы с комментариями

Написание данной программы (как, впрочем, и любой в среде С++) начинается с ввода заголовочных файлов необходимых в ходе выполнения программы библиотек:

#include<iostream.h> (ввод-вывод)

#include<math.h> (функции)

#include<stdlib.h> (стандартная библиотека)

#include<conio.h> (консольный ввод-вывод)

#include<stdio.h> (ввод-вывод)

Объявляем точку вхождения в программу - в соответствии со стандартом это функция без аргументов, возвращающая целочисленное значение:

int main()
{

В ходе выполнения программе потребуется работать с точными вещественными числами, поэтому для ввода исходных данных будем использовать тип данных float. Объявим необходимые переменные:

float i, a, b, E, n, d, tmp, ftmp, result, result2;

Присвоим некоторым из них начальные значения: присвоим n значение «1000» для достижения высокой точности и обнулим переменные result и result2:

n = 1000;
result = result2 = 0;

Выведем на экран сообщение о том, что необходимо ввести некоторые данные, являющимися входными, и выведем символ новой строки, т.е перепишем содержимое буфера на соответствующее устройство:

cout «"Vvedite a, b, E" «endl;

Позволим пользователю ввести эти данные:

cin» a» b» E;

Затем необходимо открыть внешний цикл do…while с проверкой после выполнения операции – пока не достигнута нужна точность, разбиваем промежуток на большее число отрезков и считаем для них интеграл

do
{

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

result2 = result;
result = 0;

Вычислим d:

d = (b - a) / n;

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

ftmp = 1.0 / sqrt(2*M_PI) * exp(-a * a/ 2.0);

Откроем внутренний цикл for для вычисления интеграла:

for(i = a + d; i < b + d; i=i+d)
{

Последовательно вычислим значения функции для каждой точки и просуммируем результат:

tmp = 1.0 / sqrt(2*M_PI) * exp(-i * i / 2.0);
result= result + (tmp + ftmp) * d / 2.0;
ftmp = tmp;
}
n++;

Закроем внешний цикл, обозначив условия: продолжать вычисления, пока не достигнем необходимой точности:

} while((result > result2? result - result2: result2 - result) > E);

Мы сделали все необходимые вычисления и готовы вывести на экран ответ и закончить программу:

cout «"Integral raven " «result «endl;

getch ();

return 0;
}

Конечный вид программы (листинг)

#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include<conio.h>
#include<stdio.h>
int main()
{
float i, a, b, E, n, d, tmp, ftmp, result,result2;
n = 1000;
result = result2 = 0;
cout «"Vvedite a, b, E" «endl;
cin» a» b» E;
do
{
result2 = result;
result = 0;
d = (b - a) / n;
ftmp = 1.0 / sqrt(2*M_PI) * exp(-a * a/ 2.0);
for(i = a + d; i < b + d; i=i+d)
{
tmp = 1.0 / sqrt(2*M_PI) * exp(-i * i / 2.0);
result= result + (tmp + ftmp) * d / 2.0;
ftmp = tmp;
}
n++;
} while((result > result2? result - result2: result2 - result) > E);
cout «"Integral raven " «result «endl;
getch();
return 0;
}

Результаты тестовых расчетов

Номер расчета Значение a Значение b Значение E Результат программы Результат математических вычислений
      0.001 0.135958 0.135905
      0.0001 0.5 0.5
  -5 -2 0.01 0.0229084 0.0227498
  -2   0.01 0.975918 0.9759
  -1   0.1 0.682689 0.682689

 

Сравнивая эти данные можно сделать вывод, что программа достаточно точно (погрешность в общем случае не превышает 0,001) вычисляет значение определенного интеграла.

 

Заключение

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: