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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 17:07   #1
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию Методы вычисления интеграла.

Здравствуйте, сделал программу, которая вычисляет интегралы методом трапеций и Симпсона. Но не могу понять, почему площадь фигуры полученной пересечением двух функций равна 0, помогите разобраться.
Вот график(извиняюсь за размер):

Вот используемые мной формулы:
Метод Симпсона: ((b-a)/6)*(f(a)+4*f((a+b)/2)+f(b)
Метод трапеций: ((f(a)+f(b))/2)*(b-a)
Вычисляемые мной формулы:
интеграл от 0 до 1 (3x^2-4x)dx - методом трапеций
интеграл от 0 до 1 -x dx - методом сипсона
интеграл от 0 до 1 (3x^2-4x+x)dx - методом трапеций (Это фигура, площадь которой мне надо найти.)
Вот код:
Код:
using System;
namespace trap
{
	class Program
	{
		public static void Main()
		{
		 double x0,xn,resT = 0,resS = 0,resP=0;
		 int n,a,b,y0;
		 Console.Write("Введите a:");a = Convert.ToInt32(Console.ReadLine());		
		 Console.Write("Введите b:");b = Convert.ToInt32(Console.ReadLine());
		 x0 = a; xn = b; n = b; y0 = a;
		 double[] x = new double[n+1];
		 double[] y = new double[n+1];
		 resT=(((3.0D*a*a-4.0D*a)+(3.0D*b*b-4.0D*b))/2)*(b-a);
		 resS=((b-a)/6)*(-a+4*((-a+(-b))/2)+(-b));
		 resP=(((3.0D*a*a-4.0D*a+a)+(3.0D*b*b-4.0D*b+b))/2)*(b-a);
		 	Console.WriteLine("Метод трапеций :"+resT);
		 	Console.WriteLine("Метод Cимпсона :"+resS);
		 	Console.WriteLine("Площадь фигуры :"+resP);
			Console.Write("Press any key to continue . . . ");
			Console.ReadKey(true);
		}
	}
}
Вот результат:
Код:
Введите a:0
Введите b:1
Метод трапеций :-0,5
Метод Cимпсона :0
Площадь фигуры :0
Press any key to continue . . .
Надеюсь на вашу помощь.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 18.12.2011, 18:58   #2
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Может ещё какие данные нужны?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 18.12.2011, 20:29   #3
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Народ, помогите кто-нибудь = )
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 18.12.2011, 22:01   #4
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Может быть у меня здесь всё неправильно?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 19.12.2011, 01:35   #5
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

может какой совет дадите?
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 19.12.2011, 10:57   #6
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Как бы, вверх.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 19.12.2011, 15:30   #7
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

Народ, отзовитесь кто-нить.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 20.12.2011, 02:06   #8
val_nnm
Форумчанин
 
Регистрация: 18.10.2009
Сообщений: 185
По умолчанию

Во первый для метода симпсона у вас чтото ошибочно написанно в строчке resS=((b-a)/6)*(-a+4*((-a+(-b))/2)+(-b)); должн быть что то вроде resS = ((b-a)/6)*(3*a*a-3*a+3*((a+b)/2)*((a+b)/2)-3*(a+b)/2+3*b*b-3*b));

А для метода трапеций для участка [0,1] вы действительно получите нулевой результат из за того что метод приблизительный и ваша исходная функция ( (3x^2-4x+x) ) равна 0 в обоих точках. Возможно вам нужно разбивать функцию на несколько участков и на каждом считать методом трапеций (обычно так и делается)?
На С# пишу лучше чем на русском.
"У меня правильнописание хромает. Оно хорошее, но почему-то хромает."
val_nnm вне форума Ответить с цитированием
Старый 20.12.2011, 11:01   #9
Демик
Форумчанин
 
Аватар для Демик
 
Регистрация: 30.01.2011
Сообщений: 231
По умолчанию

val_nnm, спасибо, буду пробовать.
Злостный анимешнег =^.^=
Демик вне форума Ответить с цитированием
Старый 20.12.2011, 15:17   #10
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

ну вообще то метод трапеций подразумевает что ты разбиваешь отрезок на котором требуется вычислить площадь на достаточно маленькие участки, в пределах которых функция считается линейной, а у тебя просто находится площадь трапеции которая совпадает с граффиком в конечных точках. Тут надо цикл организовывать.
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоставить функцию для вычисления приближенного значение интеграла dark999 Помощь студентам 4 03.04.2011 17:20
Cоставить функцию для вычисления приближенного значение интеграла dark999 Паскаль, Turbo Pascal, PascalABC.NET 2 31.03.2011 02:07
Блок-схема вычисления интеграла Halifath Помощь студентам 1 05.10.2009 11:56
Блок-схема алгоритма вычисления определенного интеграла kbreyz Общие вопросы C/C++ 1 16.06.2009 22:14
Составить алгоритм и программу вычисления определенного интеграла triston Помощь студентам 3 18.11.2008 18:35