Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2011, 09:23   #1
Anubys
Форумчанин
 
Регистрация: 08.05.2010
Сообщений: 177
Печаль Вычисление интеграла

В чем ошибка подскажите плиз, результаты получаются очень разными
Функция интеграла x * cos (x), пределы интегрирования 0-PI

Код:
//Метод лівих прямокутників
float a,b,z,dx,x,f,n;
a = StrToFloat(LabeledEdit1->Text);
b = StrToFloat(LabeledEdit2->Text);
n = StrToFloat(LabeledEdit3->Text);
dx  = (b -a) /n; // Рахуємо диференціал
z = 0;
for (int j = 0; j < n; j++)
{
	x = a + dx / 2 + j * dx;
	f = x * cos(x) + M_PI;
	z += f * dx;
}
Memo1->Lines->Add("Метод лівих прямокутників " + FloatToStr(z));

//Метод середніх прямокутників
float a,b,z,dx,x,f,n;
a = StrToFloat(LabeledEdit1->Text);
b = StrToFloat(LabeledEdit2->Text);
n = StrToFloat(LabeledEdit3->Text);
dx  = (b -a) /n; // Рахуємо диференціал
z = 0;
for (int j = 0; j < n; j++)
{
	x = a + j * dx;
	f = x * cos(x) + M_PI;
	z += f * dx;
}
Memo1->Lines->Add("Метод середніх прямокутників " + FloatToStr(z));

//Метод правих прямокутників
float a,b,z,dx,x,f,n;
a = StrToFloat(LabeledEdit1->Text);
b = StrToFloat(LabeledEdit2->Text);
n = StrToFloat(LabeledEdit3->Text);
dx  = (b -a) /n; // Рахуємо диференціал
z = 0;
for (int j = 1; j < n; j++)
{
	x = a + j * dx;
	f = x * cos(x) + M_PI;
	z += f * dx;
}
Memo1->Lines->Add("Метод правих прямокутників " + FloatToStr(z));

//Методом трапецій
float a,b,z,dx,x1,x2,f1,f2,n;
a = StrToFloat(LabeledEdit1->Text);
b = StrToFloat(LabeledEdit2->Text);
n = StrToFloat(LabeledEdit3->Text);
dx  = (b -a) /n; // Рахуємо диференціал
z = 0;
for (int j = 0; j < n; j++)
{
	 x1 = a + j * dx;
	 x2 = x1 + dx;
	 f1 = x1 * cos(x1) + M_PI;
	 f2 = x2 * cos(x2) + M_PI;
	 z += (f1 + f2 / 2) * dx;
}
	Memo1->Lines->Add("Методом трапецій " +
	FloatToStr(z));

//Метод Сімпсона
float z,f,x,h,fa,fb,s4,s2,a,b;
int k,n,j;
a = StrToFloat(LabeledEdit1->Text);
b = StrToFloat(LabeledEdit2->Text);
n = StrToFloat(LabeledEdit3->Text);
	h = (b - a) / n;
	fa = a * cos(a);
	fb = b * cos(b);
	s4 = 0;
	s2 = 0;
		for (x = a + h; x < b; x += 2*h)
		{
			s4 += x;
		}
	s4 *= 4;
		for (x = a + 2 * h; x < b; x += 2*h)
		{
			s2 += x;
		}
	z = h * (fa + fb + s4 + s2 * 2) / 3;

	Memo1->Lines->Add("Метод Сімпсона " + FloatToStr(z));

Последний раз редактировалось Anubys; 14.03.2011 в 09:26.
Anubys вне форума Ответить с цитированием
Старый 14.03.2011, 09:36   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

ну вообще аналитическое решение дает -2 в ответе..
я что-то не соображу, зачем всегда прибавлять к ф-ции пи
Код:
f = x * cos(x) + M_PI;
?
Uguu~
__STDC__ вне форума Ответить с цитированием
Старый 14.03.2011, 09:49   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

не забываем радианы
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление определённого интеграла Gebbellz Помощь студентам 6 13.06.2010 00:14
вычисление интеграла Borland C++ klykovka Помощь студентам 4 15.04.2010 13:10
Вычисление интеграла Pascal Runner Помощь студентам 1 10.02.2010 08:58
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
Вычисление определённого интеграла Mr_Frost Помощь студентам 11 14.03.2009 02:09