Используя метод Симпсона, составить программу вычисления определенного интеграла на отрезке - C (СИ)
Формулировка задачи:
Используя метод СИмпсона, составить программу вычисления определенного интеграла на отрезке [a,b]
Интеграл от П\4 до П\2, под знаком интеграла pow(sin(x),2)*dx
Решение задачи: «Используя метод Симпсона, составить программу вычисления определенного интеграла на отрезке»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <conio.h>
double ffunc(double x)
{
double pop;
pop=1/sqrt(x);
return pop;
}
double integral(double (*f)(double), double a, double b)
{
int n=10;
int i;
double h=(b-a)/n;
double s,x=a;
double pop2;
s=f(a)+f(b);
for (i = 1; x < b ; i++) {
x=x+2*h;
s+=f(x)*2;
}
x=a-h;
for (i = 1; x < b; i++) {
x=x+2*h;
s+=f(x)*4;
}
pop2=s*h/3;
return pop2;
}
void main()
{
double pi=3.141592653589, b,a;
a=pi/4;
b=pi/2;
printf("\n integral = %le",integral(ffunc,a,b));
scanf("%f",a);
}
Объяснение кода листинга программы
- Объявлены функции
ffuncиintegral. - В функции
ffuncвычисляется значение функцииf(x)=1/sqrt(x). - В функции
integralзадается количество подмотокn=10, а также значенияaиb, ограничивающие интервал интегрирования. - Вычисляется шаг
hкакh=(b-a)/n. - Инициализируется переменная
sкак суммаf(a)иf(b). - В цикле выполняется интегрирование методом Симпсона, где каждая итерация добавляет в
sзначенияf(x)умноженные на 2 или 4 в зависимости от того, находится ли x в интервале [a,b]. - Вычисляется значение
pop2какs*h/3. - В функции
mainзадаются значенияaиbдля интеграции. - Вычисляется и выводится результат интеграции
integral(ffunc,a,b). - Пользователю предлагается ввести новое значение для
a, но ввод не происходит, так как функцияscanfожидает ввода в переменнуюa, которая уже содержит значение после выполнения программы.