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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2009, 14:55   #1
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию Помогите создать програму для вычисления определенного интеграла Методом Симпсона

Сижу уже второй день никак не могу понять......
задача заключается в седующем: Создать програму в среде С++.
интеграл от (xlnx)^2 dx c приделми от одного до експоненты(2.71).количесво отрезков = 52, з шагом (e-1)/8.
Первообразная от этой функции = (x^3)/27*(9ln^2x-6lnx+2)-2/27
надеюсь на вашу помощь...
Сергей Человек вне форума Ответить с цитированием
Старый 06.07.2009, 15:05   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
// Метод Симпсона
//

#include "stdafx.h"
#include <iostream>
#include <cmath>


typedef double typeOfFloat;

// Вычисление функции f(x)
typeOfFloat f( typeOfFloat x );

// Вычисление определённого интеграла от f(x) на [a,b] разбиением на n отрезков
typeOfFloat integral( typeOfFloat a, typeOfFloat b, int n );

int _tmain(int argc, _TCHAR* argv[])
{

	using namespace std;

	typeOfFloat a,b;
	typeOfFloat E;
	typeOfFloat s;
	typeOfFloat prS = 0;
	int k;

	
	cin >> a;
	cin >> b;
	cin >> E;


	prS = integral(a,b,2);
	s = integral(a,b,4);

	
	for( k = 6; fabs( prS - s ) > E; k+=2 )
	{
		prS = s;

		s = 0;

		s = integral(a,b,k);

	}

	cout.precision(10);  // Точность это, если что... (кол-во цифр при выводе результата)
	cout << s << endl;
	cout << k;


	cin.get(); cin.get(); cin.get();
	return 0;
}


typeOfFloat f( typeOfFloat x ) 
{ 
	return (typeOfFloat)pow( typeOfFloat(4-3*x*x), typeOfFloat(1.0/3.0) ); // вместо 4-3*x*x --- ваша функция а вместо 1.0/3.0 --- ваши пределы
} 

typeOfFloat integral( typeOfFloat a, typeOfFloat b, int n )
{

	typeOfFloat x;
	typeOfFloat h;
	typeOfFloat sum1,sum2;


	h = (b-a)/n;


	sum1 = 0;
	sum2 = 0;

	
for( int i = 1; i < n; i++ )
{

	x = a+i*h;
	
	if( i % 2 == 0 )       //Сумма значений подынтегральной функции на концах четных внутренних отрезков
	{
		sum2 = sum2 + f(x);
	}
	else                   // Сумма значений подынтегральной функции на концах нечетных внутренних отрезков
	{

		sum1 = sum1 + f(x);
	}
}

	return h/3*(f(a)+f(b)+4*sum1+2*sum2);

}
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 06.07.2009 в 15:13.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 06.07.2009, 15:16   #3
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию

выбрасывает две ошибки связаные с библиотеками((((что делать ???
Сергей Человек вне форума Ответить с цитированием
Старый 06.07.2009, 15:21   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

stdafx.h--эту просит??
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 06.07.2009, 15:21   #5
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Напишите так:

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

и выкиньте это

stdafx.h

Кстати каким компилятором пользуютесь?

Последний раз редактировалось profi; 06.07.2009 в 15:24.
profi вне форума Ответить с цитированием
Старый 06.07.2009, 15:23   #6
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию

Borland C 3.1

int _tmain(int argc, _TCHAR* argv[]) и еще здесь гдето ошибка((( просит гдето поставить скобку

ошибка в #include <cmath>

Последний раз редактировалось Stilet; 06.07.2009 в 17:04.
Сергей Человек вне форума Ответить с цитированием
Старый 06.07.2009, 15:31   #7
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
#include <iostream.h>
#include <math.h>


typedef double typeOfFloat;

// Вычисление функции f(x)
typeOfFloat f( typeOfFloat x );

// Вычисление определённого интеграла от f(x) на [a,b] разбиением на n отрезков
typeOfFloat integral( typeOfFloat a, typeOfFloat b, int n );

int main()
{


	typeOfFloat a,b;
	typeOfFloat E;
	typeOfFloat s;
	typeOfFloat prS = 0;
	int k;

	
	cin >> a;
	cin >> b;
	cin >> E;


	prS = integral(a,b,2);
	s = integral(a,b,4);

	
	for( k = 6; fabs( prS - s ) > E; k+=2 )
	{
		prS = s;

		s = 0;

		s = integral(a,b,k);

	}

	cout.precision(10);  // Точность это, если что... (кол-во цифр при выводе результата)
	cout << s;
	cout << k;


	cin.get(); cin.get(); cin.get();
	return 0;
}


typeOfFloat f( typeOfFloat x ) 
{ 
	return (typeOfFloat)pow( typeOfFloat(4-3*x*x), typeOfFloat(1.0/3.0) ); // вместо 4-3*x*x --- ваша функция а вместо 1.0/3.0 --- ваши пределы
} 

typeOfFloat integral( typeOfFloat a, typeOfFloat b, int n )
{

	typeOfFloat x;
	typeOfFloat h;
	typeOfFloat sum1,sum2;


	h = (b-a)/n;


	sum1 = 0;
	sum2 = 0;

	
for( int i = 1; i < n; i++ )
{

	x = a+i*h;
	
	if( i % 2 == 0 )       //Сумма значений подынтегральной функции на концах четных внутренних отрезков
	{
		sum2 = sum2 + f(x);
	}
	else                   // Сумма значений подынтегральной функции на концах нечетных внутренних отрезков
	{

		sum1 = sum1 + f(x);
	}
}

	return h/3*(f(a)+f(b)+4*sum1+2*sum2);

}

Последний раз редактировалось profi; 06.07.2009 в 15:51.
profi вне форума Ответить с цитированием
Старый 06.07.2009, 15:48   #8
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию

ошибка вот здесь cout << s << end; нигде нет end
Сергей Человек вне форума Ответить с цитированием
Старый 06.07.2009, 15:50   #9
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Напиши так:
вместо
Код:
cout << s << end;
это
Код:
cout << s;
profi вне форума Ответить с цитированием
Старый 06.07.2009, 16:05   #10
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию

можешь еще немного разяснить что такое а b и E значения которые мы вводим
Сергей Человек вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Блок-схема алгоритма вычисления определенного интеграла kbreyz Общие вопросы C/C++ 1 16.06.2009 22:14
Создать программу для вычисления значения функции. wertion Помощь студентам 2 27.11.2008 20:53
Составить алгоритм и программу вычисления определенного интеграла triston Помощь студентам 3 18.11.2008 18:35
Кто может написать програму для вычисления детерминанта в паскале? Mita Помощь студентам 3 11.07.2007 21:11
алгоритм нахождения интеграла методом трапеций pirozho4ek Паскаль, Turbo Pascal, PascalABC.NET 2 11.06.2007 02:44