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

Вычислени двойного интеграла методом Симпсона - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
KPUCTUHA
Сообщений: n/a
05.04.2010, 21:07     Вычислени двойного интеграла методом Симпсона #1
Надо вычислить интеграл методом симпсона. Внешний интеграл в пределах от -1 до 1 , а внутренний от -(1-g^4)^4 до (1-g^4)^4. Программа вместа результата выдает NAN. Как я понимаю дело в том что при подсчете внутреннего интеграла методом симпсона получаем не число, а функцию.
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <math.h>
#include <stdio.h>
 #define PI 3.1415926536
 #define eps 0.001
 using namespace std;
double x=0.5;
double y=0.5;
double F(double t, double g)
{double R,l;
    l=1-t*t*t*t-g*g*g*g;
    R=sqrt((t-x)*(t-x)+(g-y)*(g-y));
    return( sqrt(l)*(t-x)/((g-y)*R));
 
}
double q (double g)
{return sqrt(sqrt(1-g*g*g*g));
}
double simp1 (double a, double b,double (*f) (double t, double g))
{double u, w,h,sn,st;
int n=2;
double k;
u=(*f) (a, k)+(*f) (b, k);
w=(*f) ((a+b)/2, k);
h=(b-a)/n;
sn=h/3.0*(u+4.0*w);
do
{st=sn;
 u=u+2*w; h=h/2; w=0;
 for(int i=1;i<=n; i++)
 w=w+(*f) (a+(2*i-1)*h, k);
sn=h/3.0*(u+4.0*w); n=n*2;
}
while(fabs(st-sn)>eps);
return sn;
}
 
double simp2(double c, double d)
{double rc, rd,u, w,h,sn,st,r,a,b;
int n=2;
double k;
k=c; b=q(k); a=-q(k); rc=simp1(a,b,F);
k=d; b=q(k); a=-q(k); rd=simp1(a,b,F);
k=c+d/2.0;
w=simp1(a,b,F);
u=rc+rd; h=(d-c)/n;
sn=h/3.0*(u+4.0*w);
do
{st=sn;
 u=u+2*w; h=h/2; w=0;
 for(int i=1;i<=n; i++)
 {k=c+(2*i-1)*h; b=q(k);
 r=simp1(a,b,F); w=w+r;
 }
sn=h/3.0*(u+4.0*w); n=n*2;
}
while(fabs(st-sn)>eps);
return sn;
}
 
int main()
{
cout<<simp2(-1,1);
}
Подскажите что не так :-)) Заранее спасибо))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2010, 21:07     Вычислени двойного интеграла методом Симпсона
Посмотрите здесь:

Нахождение интеграла методом Симпсона C++
C++ Решение двойного интеграла
C++ Вычисление двойного интеграла методом ячеек
C++ Нахождение интеграла методом Симпсона
м. Симпсона. Не выводит на экран значение интеграла C++
C++ Составить программу для вычисления определенного интеграла методом Симпсона
Найти значения определенного интеграла по формулам прямоугольников, трапеции и Симпсона C++
Значения определенного интеграла по формулам трапеций и Симпсона C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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