Математический форум Math Help Planet
http://mathhelpplanet.com/

Метод Симпсона и трапеций
http://mathhelpplanet.com/viewtopic.php?f=64&t=36557
Страница 1 из 1

Автор:  UME [ 05 ноя 2014, 17:51 ]
Заголовок сообщения:  Метод Симпсона и трапеций

Здравствуйте форумчане, нужно решить интеграл формулой трапеций и Симпсона. Я сам что-то хоть и сделал, но не уверен что правильно.
Поправьте если что не так
Вот что дано:
c0 = 2.2, c1 = 0.7, c2 = 4.5, c3 = 0.2, c4 = 0.6

вычислить с точность 0.0001


Изображение


Что получилось аналитическим путем: I = 5.1107

Нахождение максимума(я взял производную от Pn(x) 3 раза)
Изображение

Изображение

затем нашел x:
x = -(1.2 / 14.4) = -0.0833

Потом поставил x на P''n(x):
Изображение

После из формулы (M * (b-a) * h^2) / 12 < 0.0001
я вычислил h:

Изображение

С помощью h я нашел n:
n = [(b-a) / h ] = 25

И в конце написал программу на С++, которая используя все данные вычисляет интеграл методом трапеций
вот код
#include <iostream>
#include <cmath>
#include <iomanip>

using namespace std;

double Pn (double x) {
double c[] = {2.2, 0.7, 4.5, 0.2, 0.6};
double sum = 0;

for (int i=0; i<5; ++i) {
sum += c[i] * pow(x,i);
}

return sum;
}

int main() {

double* x = new double[50];
double h = 0.0175;
int n = 25;
double j=1;

for(int i=0;i<=n; ++i) {
x[i] = j;
j+=h;

if(i%5==0 && i!=0) cout << endl;
cout << setw(10) << x[i];

}
cout << endl << endl << endl;

double y[n];

for (int i=0;i<=n;++i) {
y[i] = Pn(x[i]);

if(i%5==0 && i!=0) cout << endl;
cout << setw(10) << y[i];
}

double sum=0, S;

for (int i=0;i<=n; ++i) {
if (i==0 || i==25) sum += y[i];
else sum += 2*y[i];
}

S = h/2 * sum;

cout << endl << endl << "answer: " << S << endl;



return 0;
}


Программа выдала ответ I = 5.07175

Это что касается методом трапеций.
А вот методом Симпсона я решить не могу. Не понимаю некоторых моментов, может проясните?
Во первых, как найти M?

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/