2010-10-25 3 views
-8

Не знаю, с чего я должен начать решение этой проблемы.Расчетная величина Pi с использованием MATLAB

Кажется, что отдел математики в UGA снова сбросил мяч и забыл значение pi. Вы должны написать функцию mypi, которая потребляет число, которое задает требуемую точность и аппроксимирует значение pi этой точности. Вы переходите к следующему алгоритму, основанному на геометрической вероятности.

Подумайте о четверть круга внутри квадрата объединения (четверть круга имеет площадь pi/4). Вы выбираете случайную точку внутри квадрата. если он находится в четверть круга, вы получаете «хит», а если нет, вы получаете «промах». Приблизительная площадь четверть круга будет давать количество обращений, деленное на количество выбранных вами очков.

Ваша функция должна повторять процесс подсчета попаданий и промахов, пока не будет сделано не менее 10 000 попыток, а последовательные оценки pi находятся в заданной точности. он должен вернуть оценочное значение pi.

СОВЕТ: 1- Используйте функцию rand (...) в этой задаче.

2- Подумайте о вероятности того, что случайная точка окажется в круге четверти. Вы можете имитировать эту вероятность, подсчитывая, сколько случайных точек попадает в четверть круга. Это означает, что вы должны геометрически определять, где находится четверть круга, и иметь скрипт, который может определить, находится ли случайная точка в квадрате внутри границ четверти круга.

+2

Что, в частности, вы смущены? Вопрос предоставляет абсолютно всю необходимую вам информацию. –

+1

Домашнее задание. Пожалуйста, сделайте попытку, прежде чем спрашивать. – SmallChess

+1

@Steve: Он ожидает, что мы сделаем домашнее задание. – SmallChess

ответ

1

Если вы не понимаете описания - квадрат единицы имеет площадь 1 и площадь четверти круга pi/4. Если вы выбираете случайные точки на единичном квадрате, вероятность высадки в круге четверти - это просто площадь четвертного круга, деленная на площадь квадрата.

Поскольку это проблема домашней работы, я не буду отвечать напрямую, но подумайте о том, как вы можете определить, находится ли точка внутри области, определяемой круговой окружностью и осями x и y (как в, используя большее, чем и меньше операторов). Для выбора случайных точек достаточно простого цикла.

3

Попробуйте

n=1000; % number of samples 
TestValues=rand(n,2); % random vectors 

IsInsideCircle=0; % Empty scalar 
radius=[]; % Empty scalar 

%Test condition: 
for i:0:n 
    radius = sqrt(TestValues(i,1)^2+TestValues(i,1)^2); 
    if radius < 1 
     IsInsideCircle=IsInsideCircle+1; 
    end 
end 

Я забыл свой синтаксис MatLab - надеюсь, его не так, чтобы вы могли изучить синтаксис. В основном вы создаете кучу случайных чисел (одна координата x, одна координата y), которые находятся в первом квадранте. Затем проверьте, меньше ли радиус этой координаты радиуса окружности (неявно определен как 1). Помогает ли?

+0

Да, это неправильно (просто немного). Мы надеемся, что он разрешит проблему самостоятельно. :) – George

Смежные вопросы