Добавил:
t.me Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1 семестр / Структура. Примеры программ / Указатель на функцию.pptx
Скачиваний:
2
Добавлен:
26.02.2023
Размер:
91.25 Кб
Скачать

Пример 2.

Разработать подпрограмму вычисления определённого интеграла функции f(x) на заданном отрезке [a,b].

y

f(x)

a

b

x

 

Надо найти площадь криволинейной трапеции.

Самый простой способ решения этой задачи – метод прямоугольников. Этот метод состоит в разбиении области интегрирования [a,b] на равные отрезки длины h и нахождение суммы площадей прямоугольников.

Площадь прямоугольника равна величине h умноженной на значение функции f(x) в левом конце yотрезка.

f(x)

h

h

 

x

a

 

b

 

 

Входными данными функции подсчёта интеграла будут: границы отрезка a,b , число разбиений отрезка n и интегрируемая функция f.

Тогда шаг разбиения отрезка [a,b] можно рассчитать по формуле

h b a n

При этом интеграл считается по формуле

n 1

INT f a i * h * h

i 0

Конкретизируем задачу. Рассчитать :

 

 

 

x

 

Int1

b

x2 dx;

Int2

b

1

dx

 

a

 

 

a

 

 

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

//программа integral

//Функция интегрирования

float integ(float a, float b,int n, float (*f)(float)) {int i; float h, s;

h=(b-a)/n; s=0; for (i=0;i< =n-1;i++) s+=f(a + i*h)*h; return s;

}

//Подынтегральные функции

float f1( float x) {return x*x;}

float f2(float x) { return (1/x);}

//основная программа int main(void)

{ float i1,i2,a,b; int n;

cout<< “введите исходные данные”; cout<<“a=“;

cin>>a;

cout<<“b=“;

cin>>b; cout<<“n=“; cin>>n;

//вызов функции интегрирования i1= integ(a,b,n,f1);

i2= integ(a,b,n,f2); cout<<“i1=“<<i1<<“ i2=“<<i2<<endl;

}

Вся программа

#include <iostream> using namespace std; float f1( float x)

{return x*x;} float f2(float x) { return (1/x);}

float integ(float a, float b,int n, float (*f)(float)) {int i; float h, s; h=(b-a)/n; s=0;

for (i=0;i<=n-1;i++) s+=f(a + i*h)*h; return s; }

int main(void)

{ float i1,i2,a,b;int n;

cout<< "vvod"; cout<<"a="; cin>>a; cout<<"b=";cin>>b;

cout<<"n="; cin>>n; i1= integ(a,b,n,f1); i2= integ(a,b,n,f2);

cout<<"i1="<<i1<<" i2="<<i2<<endl; return 0;

}