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

посчитать интеграл...найти ошибку в программе - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
30.01.2010, 20:02     посчитать интеграл...найти ошибку в программе #1
Написал прогу, работает, но препод сказал что неправильно, в чём ошибка-то ?
Собственно задание: написать программу, которая считает интеграл 1-x*x на интервале [-1;1] методом Монте-Карло (на лекциях этой темы не было).

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
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
 
double func(double x)
{
    return 1-x*x; 
}
 
int main()
{
    int point_a = -1; 
    int point_b = 1;
    int number_of_random=0; 
    double s=0; 
    printf("how much random points? ");
    scanf("%ld",&number_of_random); 
    srand((unsigned)time(NULL));
    for (int i=0;i<number_of_random;i++) 
    {
         s+=func(point_a+((double)rand()/RAND_MAX*(point_b-point_a))); 
    }
    s=s/(double)number_of_random*(point_b-point_a); 
    printf("\nintegral %f \n",s);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
30.01.2010, 20:22     посчитать интеграл...найти ошибку в программе #2
у вас для последней итерации считает исп. массив s[2] например.
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
31.01.2010, 16:34  [ТС]     посчитать интеграл...найти ошибку в программе #3
мне нужно сгенерировать 2 случайных числа, координаты, по оси x от [-1;1], по оси y [0;1]; дальше определять, попадает точка в область, площадь которой нужно найти, или нет. Суть в том что надо посчитать площадь, а я не знаю как исправить то что у меня написано((

Добавлено через 19 часов 32 минуты
генерирование случайного числа от 0 до 1 выглядит так:
C++
1
double(rand())/RAND_MAX*1.0
а как сгенерировать от -1 до 1 ?
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
09.02.2010, 01:23  [ТС]     посчитать интеграл...найти ошибку в программе #4
Друзья мои, неужели никто не подскажет ?))


Цитата Сообщение от Sekt Посмотреть сообщение
у вас для последней итерации считает исп. массив s[2] например.
что-то я совсем не улавливаю ход Ваших мыслей, можно поподробней ?
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
09.02.2010, 10:04     посчитать интеграл...найти ошибку в программе #5
C++
1
y = rand()%2-1
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
10.02.2010, 12:37  [ТС]     посчитать интеграл...найти ошибку в программе #6
Цитата Сообщение от Darky Посмотреть сообщение
C++
1
y = rand()%2-1
спасибо) на неделе посидел, попробовал, это же эквивалентно тому варианту что предложили Вы ?

C++
1
y = 2.0*rand()/RAND_MAX-1.0
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
10.02.2010, 14:10     посчитать интеграл...найти ошибку в программе #7
Нет, не эквивалентно.
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
10.02.2010, 15:02  [ТС]     посчитать интеграл...найти ошибку в программе #8
Цитата Сообщение от Darky Посмотреть сообщение
Нет, не эквивалентно.
омг!!! ладно, а для интервала (0;1) верно ? :

C++
1
y = rand()/RAND_MAX*1.0
Darky
Быдлокодер
 Аватар для Darky
507 / 294 / 45
Регистрация: 22.11.2009
Сообщений: 892
Завершенные тесты: 1
11.02.2010, 13:47     посчитать интеграл...найти ошибку в программе #9
А зачем такие заморочки?
C++
1
y = rand()%2;
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
11.02.2010, 15:37  [ТС]     посчитать интеграл...найти ошибку в программе #10
Цитата Сообщение от Darky Посмотреть сообщение
А зачем такие заморочки?
C++
1
y = rand()%2;
мдэ...дюже просто получается)) спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2010, 17:47     посчитать интеграл...найти ошибку в программе
Еще ссылки по теме:

Найти ошибку в программе C++
C++ Найти ошибку в программе
C++ Найти ошибку в программе

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

Или воспользуйтесь поиском по форуму:
Shim
 Аватар для Shim
25 / 25 / 1
Регистрация: 21.11.2009
Сообщений: 159
13.02.2010, 17:47  [ТС]     посчитать интеграл...найти ошибку в программе #11
Цитата Сообщение от Darky Посмотреть сообщение
C++
1
y = rand()%2-1
фигня какая-то...препод сказал что это(то что Вы написали) возвращает нам или -1 или 0. А то что написал я
C++
1
x = 2.0*rand()/RAND_MAX-1.0; /*генерируем значаение от {-1;1}*/
- верно) Короче экзамен сдал
Yandex
Объявления
13.02.2010, 17:47     посчитать интеграл...найти ошибку в программе
Ответ Создать тему
Опции темы

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