 |
|
Найти интеграл методами правых прямоугольников и Симпсона
Составить программу вычисления определенного интеграла методами правых прямоугольников и Симпсона с помощью вызова двух различных функций и оценить погрешность.
СРОЧНО! Заранее благодарю.
Вот что-то есть, не знаю правильно ли
Код:
#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();
}
|
Время: 07:29.
© OSzone.net 2001-