PDA

Показать полную графическую версию : Найти интеграл методами правых прямоугольников и Симпсона


kadett46
11-12-2014, 19:16
Составить программу вычисления определенного интеграла методами правых прямоугольников и Симпсона с помощью вызова двух различных функций и оценить погрешность.

http://s019.radikal.ru/i609/1412/5e/2718a1d526a5.png

СРОЧНО! Заранее благодарю.
Вот что-то есть, не знаю правильно ли

#include <vcl.h>
#include <iostream>
#include <conio.h>
#include <math.h>

using namespace std;

double f(double x, double dx){

return ((exp(x)*dx)/x);
}

double f1(double x, double dx1){

return ((exp(x)*dx1)/x);
}

int main(){

const int N = 1000; //число точок
double pogr;

double a, b;
do{
cout << "Enter the interval of integration through the gap: ";
cin >> a >> b;
}while(a >= b);

double dx1 = (b - a) / (N - 1);
double sum1 = 0;
for (double x = a; x < (b + dx1 / 2); x += dx1)
sum1 += dx1 * f1(x,dx1);

double dx = (b - a) / (N - 1);
double sum = 0;
for (double x = a; x < (b + dx / 2); x += dx)
sum += dx * f(x,dx);
cout << "Method rectangles: " << sum << endl;

sum = 0;
for (int i = 1; i < N - 1; ++i){
double x = a + i * dx;
if (i % 2 == 0)
sum += 2 * f(x,dx);
else
sum += 4 * f(x,dx);
}

pogr=((dx1 / 3) * (a + sum + b))-(sum1);

cout << "Simpson's method: " << (dx / 3) * (a + sum + b) << endl;

cout << "Error: " << pogr << endl;

//cout << "The exact value: " << b * b * b - a * a * a << endl;

getch();
}

lxa85
12-12-2014, 03:19
Показательная интегральная функция...
раз (http://www.wolframalpha.com/input/?i=integral+%28%28e%5Ex%29%2Fx%29&lk=4&num=1)
два (http://ru.wikipedia.org/wiki/Интегральная_показательная_функция)
три (http://forum.vingrad.ru/topic-287812.html)
четыре (http://hashcode.ru/questions/49053/c-поиск-интеграла-методом-симпсона)
пять (http://ru.wikipedia.org/wiki/Метод_прямоугольников)




© OSzone.net 2001-2012