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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 19:11   #1
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию вычисление интеграла Borland C++

Даны вещественные числа a, b. Значения функции f(x)=(x+1)2√lg x; a=2; b=10;
записать в массив. Вычислить значение интеграла, используя:
1) Формулу трапеций

I1=h*[f(a)/2+f(a+h)+f(a+2h)+…+f(a+(n-1)h)+f(b)/2]


2) Формулу Симпсона

I2=h/3*(f(a)+f(b)+4*(f(a+h)+f(a+3h)+…+f( a+(n-1)h))+

2*(f(a+2h)+f(a+4h)+…+f(a+(n-2)h)))


h=(b-a)/n, n=100.

Вот такие соображения по алгоритму: расчёт выполняем по формулам (формулы даны) .Объявим массив func[n+1], где n - количество отсчётов функции на интервале от а до b , запмсываем знач-я функции в массив, (шаг вычисляем (b-a)/n ,аргумент ф-ии a+i*h, где i параметр цикла, меняющийся от 0 до n ( т. е. всего n значений). массив используем для вычислений по обеим формулам. в первой формуле сумма знач-й массива от 1 до n-1, плюс граничные func[0]/2+ func[n]/2 и умножаем на шаг(h). Во второй форм. две суммы - нечётные и чётные значения сумм-ся отдельно и потом по формуле находится общая сумма.
Помогите с кодом.
klykovka вне форума Ответить с цитированием
Старый 14.04.2010, 23:37   #2
strider
 
Регистрация: 03.04.2008
Сообщений: 6
По умолчанию методы трапеций и Симпсона

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

//number of intervals
#define N 1000

const double a = 2.0, b = 10.0;
const double h = (b-a)/N;

double func[N+1];

double f(double x)
{
	return (x+1)*2*sqrt(log10(x));
}

double trapecii()
{
	double result = 0.0;
	for(int i=0; i<N; ++i)
		result += (func[i] + func[i+1]) * h/2;
	return result;
}

double simpson()
{
	double result = 0.0;
	result += (func[0] + func[N])*h/3;
	for(int i=1; i<N; i+=2)
		result += 4*h/3*func[i];
	for(int i=2; i<N; i+=2)
		result += 2*h/3*func[i];

	return result;
}

void main()
{
	for(int i=0; i<=N; ++i)
		func[i] = f(a+i*h);


	double I1, I2;
	I1 = trapecii();
	I2 = simpson();

	printf("%lf\n%lf\n", I1, I2);
}
strider вне форума Ответить с цитированием
Старый 15.04.2010, 12:27   #3
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию

for(int i=2; i<N; i+=2) выдает ошибку в этой строке:Multiple declaration for
может int убрать?
klykovka вне форума Ответить с цитированием
Старый 15.04.2010, 12:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Проверил код на VS2010 - Никаких ошибок нет.
Программа работает и выдает какой то результат.
Единственное что добавить:
Код:
	printf("%lf\n%lf\n", I1, I2);
 getchar();
}
Чтоб экран ответа не уходил сразу.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2010, 13:10   #5
klykovka
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 33
По умолчанию

Спасибо все разобрался

Единственное что добавить:
[CODE] printf("%lf\n%lf\n", I1, I2);
getchar();
}
ну эт понятно. у меня была ошибка скорее из-за того что переменные объявлялись как вещественные а потом обозначались как целые. но щас работает все исправил

Последний раз редактировалось Stilet; 15.04.2010 в 13:20.
klykovka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычисление интеграла Pascal Runner Помощь студентам 1 10.02.2010 08:58
Вычисление интеграла методом трапеции. Айдар Помощь студентам 2 07.02.2010 14:50
Вычисление определённого интеграла(помогите) Janny3952 Помощь студентам 1 03.05.2009 14:33
Вычисление интеграла StudeHt Помощь студентам 1 01.05.2009 19:16
Вычисление определённого интеграла Mr_Frost Помощь студентам 11 14.03.2009 02:09