Форум программистов, компьютерный форум CyberForum.ru

Бесконечность - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.90
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
03.12.2010, 23:27     Бесконечность #1
Есть значит функция нахождения интеграла Симпсоном, мне нужно посчитать интеграл от sin(x)/x на промежутке от 0 до бесконечности, как лучше всего передать значения в функцию?
Я пробовал simpson(test2,0,std::numeric_limits<double>::max(),eps), но тогда получаю -1.IND. Как правильно посчитать?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const   double a=1,b=2;
double simpson(double (*const f)(double),const double a, const double b,const double eps)
{
   int n=2;
   double h=(b-a)*0.5;
   double ss=0;
   double s1=h*(f(a)+f(b));
   double s2=0;
   double s4=4*h*f(a+h);
   double s=s1+s2+s4;
   do {
      ss=s;
      n*=2;
      h/=2;
      s1*=0.5;
      s2=0.5*s2+0.25*s4;
      s4=0;
      int i=1;
      do {
         s4=s4+f(a+i*h);
         i+=2;
      }
      while(i<=n);
      s4=4*h*s4;
      s=s1+s2+s4;
   }
   while(fabs(s-ss)>eps);
   return s/3;
};
 
 double test2(double x)
{
    return sin(a*x)/x; 
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
04.12.2010, 00:29     Бесконечность #2
C++
1
return sin(a*x)/x;
а что это за a ?
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
04.12.2010, 01:05  [ТС]     Бесконечность #3
Нужно для специальной проверки, так в условии
а, если не заметили, константа первой строчкой, так надо
роли не играет, что с ней что без результат одинаково неправильный

Добавлено через 10 минут
Кароче пока вы думали - нашел
переменная s1 не определается потому как считается как sin(0)/0

Добавлено через 2 минуты
впорос о том, как передать бесконечность в с++ не отпал
Vladimir.
155 / 155 / 10
Регистрация: 24.11.2009
Сообщений: 375
04.12.2010, 01:13     Бесконечность #4
впорос о том, как передать бесконечность в с++ не отпал
В том случае когда х достигает такой величины, что изменение значения суммы становиться равным нулю, можно ожидать, что и последующих увеличениях х оно останеться равным нулю.
Именно это значение х можно считать бесконечным для данной функции.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
04.12.2010, 01:19     Бесконечность #5
ну мягко говоря просто так это не будет работать, скорее всего тут нужен будет отдельный метод
пускай f(b) = 1, но такие конструкции как h=(b-a)*0.5; уже фантастика - бесконечность пополам
с другой стороны интеграл сходящийся, а значит b можно взять просто некоторое большое значение, но тут по хорошему метод переделывать надо, он должен быть другим
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
04.12.2010, 01:27  [ТС]     Бесконечность #6
процедура, к сожалению, тоже не моя, а стандартная, так что менять нельзя
а если брать "очень большое число", то как определить его? при значении 10000 не достаточно точно, а при 1000000 уже не считает за нормальное время
Yandex
Объявления
04.12.2010, 01:27     Бесконечность
Ответ Создать тему
Опции темы

Текущее время: 14:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru