Затем в проверке условия оператора цикла while осуществляется вызов функции S2n для 4*n и для 2*n. В теле цикла параметр n увеличивается в два раза. После завершения цикла выводится результат при помощи функции printf() на стандартное устройство вывода. Далее тело функции main() закрывается фигурной скобкой. На этом программа заканчивается.
В теле функции main() объявляются вещественные переменные: a, b - для обозначения границ отрезка интегрирования], е точность вычисления интеграла.
В определении функции S2n участвуют вещественные переменныя n, a, b. В теле функции организован цикл для подсчета суммы ряда для чего вызывается функция Integ. Далее оператор return используется для возврата числового значения по формуле Симпсона в вызывающую функцию.
Программа состоит из трех функций: пользовательской функции Integ(float z), float S2n(int n,float a,float b) и обязательной функции main(). Функция main() не воз\вращает никаких значений и поэтому она объявляется с ключевым словом void. В отличие от функции main(), функции Integ и S2n возвращают вещественные значения и объявляются с ключевым словом float. Тела функций являются блоками и поэтому ограничены фигурными скобками.В определении функции Integ участвует вещественная переменная z, которая является формальным параметром этой функции. Далее оператор return используется для возврата числового значения подинтегрального выражения в вызывающую функцию.
Программа начинается с комментария, который заключается между символами /* и */.Далее идут директивы препроцессора, которые дают указание препроцессору подключить к программе заголовочный файл stdio.h с описанием функций ввода-вывода и заголовочный файл math.h с описанием математических функций.
Нажимаем клавиши CTRL+F9 для компиляции и запуска на выполнение программы. Получаем значение интеграла 0,469 :
// главная функция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();}
//формула Симпсона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);}
#include <stdio.h>#include <conio.h>#include <math.h>// функция для вычисления интегралаfloat Integ(float z){ return pow(log(z),2)/z;//возвращаемое значение}
В среде программирования Borland C++ 3.1 вводим текст программы на Си ++:
Текст программы решения задачи на С++
Разработаем алгоритм программы нахождения интеграла с заданной точностью в виде блок-схемы:
Блок-схема алгоритма вычисления интеграла
По формуле Симпсона:
Интеграл: n=20 - количество отрезков
Вычислить интеграл с заданной точностью e= 0,001. Используем формулу Симпсона.
Составить программу на языке программирования С++ и блок-схему для решения следующей задачи:
Вычисление интеграла с заданной точностью на С++
Вычисление интеграла с заданной точностью на С++
Комментариев нет:
Отправить комментарий