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

Решение двойного интеграла - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
24.10.2010, 00:02     Решение двойного интеграла #1
S S ( dxdy/(24+x^2 + y^2)^(1/2) ) G:x^2 + y^2 <=25
G

Добавлено через 2 часа 1 минуту
Я тут написал программу, но не уверен. что код верен...результат- слишком малое число.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void main()
{
int i,n=10,x,y;
float P=1;
clrscr();
for(i=0;i<n;i++)
    {
   x=random(6);
   y=random(6);
   if(x*x+y*y<=25)P*=float(1/sqrt(24+x*x+y*y));
   }
P*=float(100/n);
cout<<P;
getch();
}
Добавлено через 1 час 8 минут
Неужто никто не знает как решать такое?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tartikov
Заблокирован
24.10.2010, 01:36     Решение двойного интеграла #2
вот так должно получится))

-(2/15)*sqrt(6)*Pi*(-4608+319*sqrt(29)*sqrt(6))
yukas
5 / 5 / 0
Регистрация: 18.10.2009
Сообщений: 56
24.10.2010, 10:10  [ТС]     Решение двойного интеграла #3
Спасибо, хоть будет с чем сравнить результат)

Добавлено через 16 минут
Что-то не так в твоей формуле. Выходит огромнейшее отрицательное число. Оно таким не может быть)
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
24.10.2010, 11:04     Решение двойного интеграла #4
C++
1
2
3
4
5
6
for(i=0;i<n;i++)
   {
   x=random(6);
   y=random(6);
   if(x*x+y*y<=25)P*=float(1/sqrt(24+x*x+y*y));
   }
А можно спросить, что вы тут делаете ? Тут какая то помесь монте-карло и непонятно чего. Алгоритм то какой хоть используете ? Да и сам интеграл на бумашке посчитать можно для проверки.
tartikov
Заблокирован
24.10.2010, 11:19     Решение двойного интеграла #5
Цитата Сообщение от yukas Посмотреть сообщение
Что-то не так в твоей формуле.
да, ошибся, не правильно переписал.

вот так точно правильно

2*Pi*(7 - 2*sqrt(6)) == 13.20110123

Добавлено через 5 минут
таадам

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
#include <iostream>
#include <cmath>
#include <ctime>
 
using namespace std;
 
float fRand(float min, float max)
{
    float f = (float)rand()/RAND_MAX;
    return min + f * (max - min);
}
 
int main()
{
    srand(time(0));
    float r = 5.f;
    const int n = 1000000;
    float sum = 0;
 
    for(int i = 0; i < n; i++)
    {
        float x = fRand(-r, r);
        float y = fRand(-r, r);
        if(x*x + y*y <= r*r) sum += 1/sqrt(24.f+x*x+y*y);
    }
    sum /= n;
    sum *= 4*r*r;
    cout << sum << endl;
}
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
24.10.2010, 11:25     Решение двойного интеграла #6
да, ошибся, не правильно переписал.

вот так точно правильно

-2*Pi*(-7+2*sqrt(6))
tartikov, у вас ответ отрицательный. Если просто посмотреть на интеграл, то значение функции всегда >0, так что и сам интеграл не может быть с минусом

Добавлено через 3 минуты
или у вас тире не там ?)

Добавлено через 48 секунд
а не, признаю свою вину .. все так
Yandex
Объявления
24.10.2010, 11:25     Решение двойного интеграла
Ответ Создать тему
Опции темы

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