Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






метод трапеций

Пусть нужно найти значение определенного интеграла для непрерывной на отрезке интегрирования достаточно гладкой функции f(x)

Как и в случае построения формулы прямоугольников введем на отрезке [a,b] равномерную сетку с шагом h , представим интеграл в виде суммы интегралов по частичным отрезкам

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

Площадь каждой такой трапеции легко подсчитать, используя хорошо известную из школьного курса геометрии формулу: . Сумма таких площадей равна:

.

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

.

Формула (4) носит название формулы трапеций. Ошибку для метода трапеций можно оценить по формуле:

,

где – наибольшее значение второй производной подынтегральной функции на отрезке интегрирования.

 

Листинг программы:

#define _USE_MATH_DEFINES

 

#include <iostream>

#include <stdlib.h>

#include <cmath>

 

using namespace std;

 

double func(double x)

{

double tmp = pow(2.0, 3.0*x);

return tmp;

}

 

double funcpp(double x)

{

double tmp = 9*pow(2.0, 3.0*x)*M_LN2*M_LN2;

return tmp;

}

 

int main()

{

double a, b;

double eps;

//a = 0.0, b = 1.0;

cout << " a = ";

cin >> a;

cout << " b = ";

cin >> b;

cout << " eps = ";

cin >> eps;

double maxpp=(funcpp(a)>funcpp(b))? funcpp(a): funcpp(b);

double n = pow(pow((b-a),3.0)*fabs(maxpp)/eps/12,0.5);

double h = (b - a)/((int)n+1);

//cout << "n =" << n << "maxpp = " << maxpp << endl;

//double h = (b - a)/50;

 

double sum = 0.0;

for (double i=a+h; i<b; i+=h)

sum += func(i);

double result = h*((func(a)+func(b))/2+sum);

 

cout << "result = " << result << endl;

 

double eps1 = (b-a)/n*maxpp*h*h;

cout << "eps <= " << eps1 << endl;

 

fflush(stdin);

getchar();

return 0;

}

 

 


<== предыдущая | следующая ==>
Глава 101. Меры предосторожности. Часть 2 | Ремень делает вас ниже ростом

Date: 2015-09-05; view: 209; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию