help-informatika.ru - работы на заказ: дипломы, диссертации, курсовые, контрольные, рефераты, отчеты
Вычисление интеграла с заданной точностью на С++
Составить программу на языке программирования С++ и блок-схему для решения следующей задачи:
Вычислить интеграл с заданной точностью e= 0,001. Используем формулу Симпсона.
Интеграл: n=20 - количество отрезков
По формуле Симпсона:
Блок-схема алгоритма вычисления интеграла
Разработаем алгоритм программы нахождения интеграла с заданной точностью в виде блок-схемы:
Текст программы решения задачи на С++
В среде программирования Borland C++ 3.1 вводим текст программы на Си ++:
#include <stdio.h>
#include <conio.h>
#include <math.h>
// функция для вычисления интеграла
float Integ(float z)
{
return pow(log(z),2)/z;//возвращаемое значение
}
//формула Симпсона
float S2n(int n,float a,float b)
{
int i=1;
float sum=0,h;
h=(b-a)/(2*n);
for(i=1;i<=(2*n-1);i++)
sum+=(3+pow(-1,i+1))*Integ(a+i*h);
return h/3*(Integ(a)+Integ(b)+sum);
}
// главная функция
void main()
{
float a, b, e=0.001;// объявление переменных
int n=20;
a=3.14/2;
b=3.14;
while (fabs(S2n(4*n,a,b)-S2n(2*n,a,b))>=e) // цикл
{
n*=2;
}
printf("S4n=%f",S2n(4*n,a,b)); // вывод результатов
getch();
}
Результат:
Нажимаем клавиши CTRL+F9 для компиляции и запуска на выполнение программы. Получаем значение интеграла≈0,469 :
Программа начинается с комментария, который заключается между символами /* и */.Далее идут директивы препроцессора, которые дают указание препроцессору подключить к программе заголовочный файл stdio.h с описанием функций ввода-вывода и заголовочный файл math.h с описанием математических функций.
Программа состоит из трех функций: пользовательской функции Integ(float z), float S2n(int n,float a,float b) и обязательной функции main(). Функция main() не воз¬вращает никаких значений и поэтому она объявляется с ключевым словом void. В отличие от функции main(), функции Integ и S2n возвращают вещественные значения и объявляются с ключевым словом float. Тела функций являются блоками и поэтому ограничены фигурными скобками.В определении функции Integ участвует вещественная переменная z, которая является формальным параметром этой функции. Далее оператор return используется для возврата числового значения подинтегрального выражения в вызывающую функцию.
В определении функции S2n участвуют вещественные переменныя n, a, b. В теле функции организован цикл для подсчета суммы ряда для чего вызывается функция Integ. Далее оператор return используется для возврата числового значения по формуле Симпсона в вызывающую функцию.
В теле функции main() объявляются вещественные переменные: a, b - для обозначения границ отрезка интегрирования], е – точность вычисления интеграла.
Затем в проверке условия оператора цикла while осуществляется вызов функции S2n для 4*n и для 2*n. В теле цикла параметр n увеличивается в два раза. После завершения цикла выводится результат при помощи функции printf() на стандартное устройство вывода. Далее тело функции main() закрывается фигурной скобкой. На этом программа заканчивается.